
  :root{
    --fg:#0B1315; --fg-soft:#54615E; --fg-faint:#8A9793;
    --bg:#FBFCFC; --surface:#FFFFFF; --surface-2:#F3F6F6;
    --line:#E0E6E5;
    --accent:#12796B; --accent-ink:#FFFFFF; --accent-soft:#12796B14;
    --good:#2E7D5B; --warn:#A97514; --thin:#A8502A;
    --shadow:0 1px 0 #FFFFFF, 0 14px 36px -26px #0B131533;
    --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
    --sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  }
  @media (prefers-color-scheme:dark){
    :root{
      --fg:#E7EAE8; --fg-soft:#93A09C; --fg-faint:#66736F;
      --bg:#0B1315; --surface:#111B1E; --surface-2:#18262A;
      --line:#22343A;
      --accent:#2FBFA8; --accent-ink:#06211D; --accent-soft:#2FBFA81F;
      --good:#3FBF86; --warn:#D9A441; --thin:#D2704A;
      --shadow:0 18px 44px -30px #000000CC;
    }
  }
  :root[data-theme="dark"]{
    --fg:#E7EAE8; --fg-soft:#93A09C; --fg-faint:#66736F;
    --bg:#0B1315; --surface:#111B1E; --surface-2:#18262A;
    --line:#22343A;
    --accent:#2FBFA8; --accent-ink:#06211D; --accent-soft:#2FBFA81F;
    --good:#3FBF86; --warn:#D9A441; --thin:#D2704A;
    --shadow:0 18px 44px -30px #000000CC;
  }
  :root[data-theme="light"]{
    --fg:#0B1315; --fg-soft:#54615E; --fg-faint:#8A9793;
    --bg:#FBFCFC; --surface:#FFFFFF; --surface-2:#F3F6F6;
    --line:#E0E6E5;
    --accent:#12796B; --accent-ink:#FFFFFF; --accent-soft:#12796B14;
    --good:#2E7D5B; --warn:#A97514; --thin:#A8502A;
    --shadow:0 1px 0 #FFFFFF, 0 14px 36px -26px #0B131533;
  }

  *{box-sizing:border-box;}
  body{
    margin:0; background:var(--bg); color:var(--fg);
    font-family:var(--sans); font-size:16px; line-height:1.55;
    -webkit-font-smoothing:antialiased;
  }
  .wrap{max-width:1180px; margin:0 auto; padding:0 24px;}

  .eyebrow{
    font-family:var(--mono); font-size:11px; letter-spacing:.16em;
    text-transform:uppercase; color:var(--fg-soft);
  }

  /* ── banner ── */
  .notice{
    background:var(--accent-soft); border-bottom:1px solid var(--line);
    font-family:var(--mono); font-size:11px; letter-spacing:.1em;
    text-transform:uppercase; color:var(--fg-soft);
  }
  .notice .wrap{display:flex; gap:12px; align-items:center; padding-block:9px; flex-wrap:wrap;}
  .notice b{color:var(--fg); font-weight:600;}

  /* ── masthead ── */
  header.top{border-bottom:1px solid var(--line);}
  header.top .wrap{display:flex; align-items:center; gap:18px; padding-block:13px; flex-wrap:wrap;}
  .mark{display:flex; align-items:center; gap:12px; margin-right:auto;}
  .mark .logo{width:44px; height:44px; display:block; flex:none;}
  .mark .wm{display:flex; flex-direction:column; line-height:1.08;}
  .mark .cm{
    font-family:var(--mono); font-weight:700; letter-spacing:-.01em;
    font-size:15px; color:var(--fg);
  }
  .mark .me{
    font-family:var(--mono); font-size:10px; letter-spacing:.22em;
    text-transform:uppercase; color:var(--accent);
  }
  nav.top-nav{display:flex; gap:20px; flex-wrap:wrap;}
  nav.top-nav a{
    font-family:var(--mono); font-size:12px; letter-spacing:.06em;
    color:var(--fg-soft); text-decoration:none; padding:4px 0;
    border-bottom:1px solid transparent;
  }
  nav.top-nav a:hover, nav.top-nav a:focus-visible{color:var(--fg); border-bottom-color:var(--accent);}

  /* ── hero ── */
  .hero{padding-block:30px 24px;}
  .hero h1{
    margin:9px 0 0; font-size:clamp(31px,4.6vw,56px); line-height:1.03;
    letter-spacing:-.035em; font-weight:600; text-wrap:balance; max-width:15ch;
  }
  .hero h1 em{font-style:normal; color:var(--accent);}
  .hero .lede{
    margin:14px 0 0; max-width:62ch; color:var(--fg-soft); font-size:16px;
  }

  /* ── KPI board ── */
  .board{
    display:grid; gap:1px; background:var(--line);
    border:1px solid var(--line); margin-top:22px;
    grid-template-columns:repeat(3,1fr);
  }
  .cell{background:var(--surface); padding:20px 20px 18px;}
  .cell .k-label{
    font-family:var(--mono); font-size:11px; letter-spacing:.14em;
    text-transform:uppercase; color:var(--fg-soft); display:block;
  }
  .cell .k-num{
    font-family:var(--mono); font-weight:700; font-variant-numeric:tabular-nums;
    font-size:clamp(27px,3.6vw,44px); letter-spacing:-.04em; line-height:1;
    margin-top:10px; color:var(--fg);
  }
  .cell .k-sub{margin-top:8px; font-size:12.5px; color:var(--fg-soft);}
  .spark{display:block; width:100%; height:28px; margin-top:12px;}

  /* ── sections ── */
  section{padding-block:56px; border-top:1px solid var(--line);}
  .sec-head{display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; margin-bottom:8px;}
  .sec-head h2{
    margin:0; font-size:clamp(22px,2.6vw,30px); letter-spacing:-.02em;
    font-weight:600;
  }
  .sec-head p{margin:0; color:var(--fg-soft); font-size:14px; max-width:52ch;}

  .products{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:28px;}
  .prod{background:var(--surface); padding:26px 22px 24px; display:flex; flex-direction:column; gap:12px;}
  .prod .name{
    font-family:var(--mono); font-size:12px; letter-spacing:.2em;
    text-transform:uppercase; color:var(--accent);
  }
  .prod h3{margin:0; font-size:20px; letter-spacing:-.015em; font-weight:600;}
  .prod p{margin:0; font-size:14px; color:var(--fg-soft);}
  .prod ul{margin:4px 0 0; padding-left:0; list-style:none; display:flex; flex-direction:column; gap:7px;}
  .prod li{font-size:13px; color:var(--fg-soft); display:flex; gap:9px; align-items:flex-start;}
  .prod li::before{
    content:""; width:5px; height:5px; margin-top:7px; flex:none;
    background:var(--accent); border-radius:50%;
  }

  /* ── valuation ── */
  .val{
    margin-top:28px; border:1px solid var(--line); background:var(--surface);
    box-shadow:var(--shadow); display:grid; grid-template-columns:1.15fr 1fr;
  }
  .val-main{padding:30px 28px;}
  .val-side{padding:30px 28px; border-left:1px solid var(--line); background:var(--surface-2);}
  .val .car{font-size:21px; font-weight:600; letter-spacing:-.015em; margin:10px 0 4px;}
  .val .specs{
    font-family:var(--mono); font-size:12px; color:var(--fg-soft);
    letter-spacing:.04em; display:flex; gap:8px; flex-wrap:wrap;
  }
  .val .specs span::after{content:" ·"; color:var(--fg-faint);}
  .val .specs span:last-child::after{content:"";}
  .price{
    font-family:var(--mono); font-weight:700; font-variant-numeric:tabular-nums;
    font-size:clamp(34px,5vw,54px); letter-spacing:-.04em; line-height:1;
    margin-top:24px;
  }
  .price small{font-size:.42em; letter-spacing:.12em; color:var(--fg-soft); font-weight:500; margin-right:10px;}
  .interval-label{
    font-family:var(--mono); font-size:11px; letter-spacing:.14em;
    text-transform:uppercase; color:var(--fg-soft); margin-top:26px;
  }
  .dist{display:block; width:100%; height:92px; margin-top:12px;}
  .ticks{
    display:flex; justify-content:space-between; font-family:var(--mono);
    font-size:11px; color:var(--fg-soft); font-variant-numeric:tabular-nums; margin-top:6px;
  }
  .readout{display:flex; flex-direction:column; gap:16px;}
  .readout .row{display:flex; justify-content:space-between; gap:14px; align-items:baseline; border-bottom:1px dotted var(--line); padding-bottom:11px;}
  .readout .rk{font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--fg-soft);}
  .readout .rv{font-family:var(--mono); font-size:14px; font-variant-numeric:tabular-nums; color:var(--fg);}
  .pill{
    display:inline-flex; align-items:center; gap:7px; font-family:var(--mono);
    font-size:11px; letter-spacing:.1em; text-transform:uppercase;
    padding:4px 9px; border:1px solid currentColor; border-radius:2px;
  }
  .pill.good{color:var(--good);} .pill.warn{color:var(--warn);} .pill.thin{color:var(--thin);}
  .note{margin-top:20px; font-size:13px; color:var(--fg-soft); line-height:1.6;}

  /* ── coverage ── */
  .cov{display:grid; grid-template-columns:repeat(6,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:28px;}
  .cov div{background:var(--surface); padding:18px 16px;}
  .cov .m{font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--fg-soft);}
  .cov .n{font-family:var(--mono); font-size:22px; font-weight:700; font-variant-numeric:tabular-nums; letter-spacing:-.03em; margin-top:8px;}
  .bar{height:3px; background:var(--line); margin-top:10px;}
  .bar i{display:block; height:100%; background:var(--accent);}

  /* ── feed ── */
  .feed{margin-top:28px; border:1px solid var(--line); background:var(--surface); max-height:260px; overflow-y:auto;}
  .feed .fr{display:grid; grid-template-columns:88px 1fr auto; gap:14px; padding:11px 18px; border-bottom:1px solid var(--line); font-size:13px; align-items:center;}
  .feed .fr:last-child{border-bottom:none;}
  .feed .t{font-family:var(--mono); font-size:11px; color:var(--fg-faint); font-variant-numeric:tabular-nums;}
  .feed .src{font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--accent);}

  footer{border-top:1px solid var(--line); padding-block:34px 46px; color:var(--fg-soft); font-size:13px;}
  footer .wrap{display:flex; gap:26px; flex-wrap:wrap; align-items:baseline;}
  footer a{color:var(--fg-soft); text-decoration:none; border-bottom:1px solid var(--line);}
  footer a:hover, footer a:focus-visible{color:var(--fg); border-bottom-color:var(--accent);}
  footer .sp{margin-left:auto; font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;}

  a:focus-visible, button:focus-visible{outline:2px solid var(--accent); outline-offset:3px;}

  @media (max-width:900px){
    .board, .products{grid-template-columns:1fr;}
    .val{grid-template-columns:1fr;}
    .val-side{border-left:none; border-top:1px solid var(--line);}
    .cov{grid-template-columns:repeat(3,1fr);}
  }
  @media (max-width:560px){
    .cov{grid-template-columns:repeat(2,1fr);}
    .feed .fr{grid-template-columns:70px 1fr; }
    .feed .fr .src{grid-column:2; }
  }
  @media (prefers-reduced-motion:reduce){
    *{animation:none !important; transition:none !important;}
  }
  .page-head{padding-block:30px 6px;}
  .page-head h1{margin:8px 0 0; font-size:clamp(30px,4.2vw,50px); letter-spacing:-.035em;
                font-weight:600; line-height:1.03;}
  .page-head p{margin:12px 0 0; max-width:64ch; color:var(--fg-soft);}

  .board{display:grid; gap:1px; background:var(--line); border:1px solid var(--line);
         margin-top:22px; grid-template-columns:repeat(3,1fr);}
  .cell{background:var(--surface); padding:20px 20px 18px;}
  .cell .k-label{font-family:var(--mono); font-size:11px; letter-spacing:.14em;
                 text-transform:uppercase; color:var(--fg-soft); display:block;}
  .cell .k-num{font-family:var(--mono); font-weight:700; font-variant-numeric:tabular-nums;
               font-size:clamp(27px,3.6vw,44px); letter-spacing:-.04em; line-height:1;
               margin-top:10px; color:var(--fg);}
  .cell .k-sub{margin-top:8px; font-size:12.5px; color:var(--fg-soft);}

  #view-databases section, #view-harvest section{padding-block:44px; border-top:1px solid var(--line); margin-top:44px;}
  #view-databases section:first-of-type{margin-top:36px;}
  .sec-head{display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; margin-bottom:6px;}
  .sec-head h2{margin:0; font-size:clamp(21px,2.4vw,28px); letter-spacing:-.02em; font-weight:600;}
  .sec-head p{margin:0; color:var(--fg-soft); font-size:14px; max-width:54ch;}

  /* channel split */
  .libs{display:grid; grid-template-columns:repeat(2,1fr); gap:1px;
        background:var(--line); border:1px solid var(--line); margin-top:24px;}
  .lib{background:var(--surface); padding:24px 22px; display:flex; flex-direction:column; gap:14px;}
  .lib .name{font-family:var(--mono); font-size:12px; letter-spacing:.2em;
             text-transform:uppercase; color:var(--accent);}
  .lib .big{font-family:var(--mono); font-weight:700; font-variant-numeric:tabular-nums;
            font-size:clamp(28px,3.4vw,40px); letter-spacing:-.04em; line-height:1;}
  .meter{height:6px; background:var(--surface-2); display:flex; overflow:hidden;}
  .meter i{display:block; height:100%;}
  .meter .v{background:var(--accent);}
  .meter .u{background:var(--warn); opacity:.55;}
  .legend{display:flex; gap:18px; flex-wrap:wrap; font-family:var(--mono);
          font-size:11px; letter-spacing:.06em; color:var(--fg-soft);}
  .legend span{display:flex; align-items:center; gap:7px;}
  .legend i{width:9px; height:9px; flex:none;}

  /* import */
  .import{margin-top:24px; border:1px solid var(--line); background:var(--surface);
          box-shadow:var(--shadow); padding:26px 24px;}
  .field{display:flex; flex-direction:column; gap:8px; margin-top:18px;}
  .field label{font-family:var(--mono); font-size:11px; letter-spacing:.14em;
               text-transform:uppercase; color:var(--fg-soft);}
  .field input, .field textarea, .field select{
    font-family:var(--mono); font-size:13px; color:var(--fg); background:var(--bg);
    border:1px solid var(--line); padding:11px 12px; width:100%;
  }
  .field textarea{min-height:132px; resize:vertical; line-height:1.6;}
  .field input::placeholder, .field textarea::placeholder{color:var(--fg-faint);}
  .row2{display:grid; grid-template-columns:2fr 1fr; gap:18px;}
  .drop{border:1px dashed var(--line); background:var(--surface-2); padding:14px 16px;
        font-size:13px; color:var(--fg-soft); margin-top:8px;}
  .actions{display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin-top:20px;}
  .btn{font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase;
       padding:11px 18px; border:1px solid var(--accent); background:var(--accent);
       color:var(--accent-ink); cursor:pointer;}
  .btn.ghost{background:transparent; color:var(--fg); border-color:var(--line);}
  .btn:hover{filter:brightness(1.08);}
  .hint{font-size:12.5px; color:var(--fg-soft);}

  /* directories */
  .dirs{margin-top:24px; border:1px solid var(--line); background:var(--surface); overflow-x:auto;}
  table{border-collapse:collapse; width:100%; min-width:760px;}
  th{font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
     color:var(--fg-soft); text-align:left; font-weight:500; padding:12px 16px;
     border-bottom:1px solid var(--line); background:var(--surface-2); white-space:nowrap;}
  td{padding:14px 16px; border-bottom:1px solid var(--line); font-size:14px; vertical-align:middle;}
  tr:last-child td{border-bottom:none;}
  td.num{font-family:var(--mono); font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap;}
  .dname{font-weight:600;}
  .dsrc{font-family:var(--mono); font-size:11px; letter-spacing:.06em; color:var(--fg-faint);
        text-transform:uppercase; margin-top:3px;}
  .chip{display:inline-flex; align-items:center; gap:6px; font-family:var(--mono);
        font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
        padding:3px 8px; border:1px solid currentColor; white-space:nowrap;}
  .chip.email{color:var(--accent);} .chip.wa{color:var(--good);} .chip.both{color:var(--fg-soft);}
  .ratio{font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:13px;}
  .ratio b{font-weight:700;} .ratio span{color:var(--fg-faint);}
  .tbar{height:3px; background:var(--surface-2); margin-top:6px; width:88px;}
  .tbar i{display:block; height:100%; background:var(--accent);}
  .exp{font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase;
       color:var(--accent); text-decoration:none; border:1px solid var(--line); padding:6px 10px;
       white-space:nowrap; display:inline-block;}
  .exp:hover{border-color:var(--accent);}

  .callout{margin-top:24px; border:1px solid var(--line); border-left:3px solid var(--warn);
           background:var(--surface); padding:18px 20px; font-size:14px; color:var(--fg-soft);}
  .callout b{color:var(--fg);}

  footer{border-top:1px solid var(--line); padding-block:34px 46px; color:var(--fg-soft); font-size:13px; margin-top:44px;}
  footer .wrap{display:flex; gap:26px; flex-wrap:wrap; align-items:baseline;}
  footer a{color:var(--fg-soft); text-decoration:none; border-bottom:1px solid var(--line);}
  footer a:hover{color:var(--fg); border-bottom-color:var(--accent);}
  footer .sp{margin-left:auto; font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;}

  a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
    outline:2px solid var(--accent); outline-offset:2px;}

  @media (max-width:900px){
    .board{grid-template-columns:1fr;} .libs{grid-template-columns:1fr;} .row2{grid-template-columns:1fr;}
  }
  @media (prefers-reduced-motion:reduce){*{animation:none !important; transition:none !important;}}
  .page-head{padding-block:30px 6px;}
  .page-head h1{margin:8px 0 0; font-size:clamp(30px,4.2vw,50px); letter-spacing:-.035em;
                font-weight:600; line-height:1.03;}
  .page-head p{margin:12px 0 0; max-width:64ch; color:var(--fg-soft);}

  /* harvest cards */
  .rigs{display:grid; grid-template-columns:repeat(2,1fr); gap:1px;
        background:var(--line); border:1px solid var(--line); margin-top:26px;}
  .rig{background:var(--surface); padding:24px 22px; display:flex; flex-direction:column; gap:14px;}
  .rig .name{font-family:var(--mono); font-size:12px; letter-spacing:.2em;
             text-transform:uppercase; color:var(--accent);}
  .rig h3{margin:0; font-size:20px; letter-spacing:-.015em; font-weight:600;}
  .rig p.d{margin:0; font-size:14px; color:var(--fg-soft);}
  .scope{display:flex; gap:10px; flex-wrap:wrap;}
  .scope select{font-family:var(--mono); font-size:12px; color:var(--fg); background:var(--bg);
                border:1px solid var(--line); padding:9px 10px; flex:1; min-width:130px;}
  .runline{display:flex; gap:12px; align-items:center; flex-wrap:wrap;}
  .btn{font-family:var(--mono); font-size:12px; letter-spacing:.1em; text-transform:uppercase;
       padding:11px 18px; border:1px solid var(--accent); background:var(--accent);
       color:var(--accent-ink); cursor:pointer;}
  .btn:hover:not(:disabled){filter:brightness(1.08);}
  .btn:disabled{opacity:.45; cursor:not-allowed;}
  .btn.stop{background:transparent; color:var(--thin); border-color:var(--thin);}
  .state{font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase;
         color:var(--fg-soft); display:flex; align-items:center; gap:8px;}
  .dot{width:8px; height:8px; border-radius:50%; background:var(--fg-faint); flex:none;}
  .state.on .dot{background:var(--accent); animation:pulse 1.4s ease-in-out infinite;}
  .state.on{color:var(--accent);}
  @keyframes pulse{0%,100%{opacity:1;} 50%{opacity:.25;}}

  .prog{height:4px; background:var(--surface-2); overflow:hidden;}
  .prog i{display:block; height:100%; width:0; background:var(--accent); transition:width .35s ease;}
  .counts{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
  .counts div{border-top:1px solid var(--line); padding-top:10px;}
  .counts .cl{font-family:var(--mono); font-size:10px; letter-spacing:.12em;
              text-transform:uppercase; color:var(--fg-soft);}
  .counts .cv{font-family:var(--mono); font-size:20px; font-weight:700;
              font-variant-numeric:tabular-nums; letter-spacing:-.03em; margin-top:4px;}

  #view-databases section, #view-harvest section{padding-block:44px; border-top:1px solid var(--line); margin-top:44px;}
  .sec-head{display:flex; align-items:baseline; gap:16px; flex-wrap:wrap; margin-bottom:6px;}
  .sec-head h2{margin:0; font-size:clamp(21px,2.4vw,28px); letter-spacing:-.02em; font-weight:600;}
  .sec-head p{margin:0; color:var(--fg-soft); font-size:14px; max-width:54ch;}

  /* log */
  .log{margin-top:22px; border:1px solid var(--line); background:var(--surface);
       height:300px; overflow-y:auto; font-family:var(--mono); font-size:12.5px;}
  .log .ln{display:grid; grid-template-columns:76px 84px 1fr; gap:14px;
           padding:9px 16px; border-bottom:1px solid var(--line); align-items:baseline;}
  .log .ln:last-child{border-bottom:none;}
  .log .t{color:var(--fg-faint); font-variant-numeric:tabular-nums;}
  .log .src{letter-spacing:.08em; text-transform:uppercase; font-size:10.5px;}
  .log .src.dealer{color:var(--accent);} .log .src.listing{color:var(--good);}
  .log .src.system{color:var(--fg-faint);} .log .src.warn{color:var(--warn);}
  .log .msg{color:var(--fg-soft); word-break:break-word;}
  .log .empty{padding:26px 16px; color:var(--fg-faint); text-align:center;}

  /* sources */
  .srcs{display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
        background:var(--line); border:1px solid var(--line); margin-top:24px;}
  .srcs div{background:var(--surface); padding:18px 16px;}
  .srcs .sn{font-family:var(--mono); font-size:12px; letter-spacing:.08em; color:var(--fg);}
  .srcs .ss{font-family:var(--mono); font-size:10px; letter-spacing:.12em;
            text-transform:uppercase; margin-top:8px; display:flex; align-items:center; gap:7px;}
  .srcs .ss.ok{color:var(--good);} .srcs .ss.slow{color:var(--warn);} .srcs .ss.off{color:var(--fg-faint);}
  .srcs .ss i{width:7px; height:7px; border-radius:50%; background:currentColor; flex:none;}
  .srcs .sm{font-size:12px; color:var(--fg-soft); margin-top:8px;}

  .dirs{margin-top:24px; border:1px solid var(--line); background:var(--surface); overflow-x:auto;}
  table{border-collapse:collapse; width:100%; min-width:700px;}
  th{font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
     color:var(--fg-soft); text-align:left; font-weight:500; padding:12px 16px;
     border-bottom:1px solid var(--line); background:var(--surface-2); white-space:nowrap;}
  td{padding:13px 16px; border-bottom:1px solid var(--line); font-size:14px;}
  tr:last-child td{border-bottom:none;}
  td.num{font-family:var(--mono); font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap;}
  .pill{display:inline-flex; align-items:center; gap:6px; font-family:var(--mono);
        font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
        padding:3px 8px; border:1px solid currentColor; white-space:nowrap;}
  .pill.done{color:var(--good);} .pill.part{color:var(--warn);} .pill.fail{color:var(--thin);}

  .callout{margin-top:24px; border:1px solid var(--line); border-left:3px solid var(--warn);
           background:var(--surface); padding:18px 20px; font-size:14px; color:var(--fg-soft);}
  .callout b{color:var(--fg);}

  footer{border-top:1px solid var(--line); padding-block:34px 46px; color:var(--fg-soft);
         font-size:13px; margin-top:44px;}
  footer .wrap{display:flex; gap:26px; flex-wrap:wrap; align-items:baseline;}
  footer a{color:var(--fg-soft); text-decoration:none; border-bottom:1px solid var(--line);}
  footer a:hover{color:var(--fg); border-bottom-color:var(--accent);}
  footer .sp{margin-left:auto; font-family:var(--mono); font-size:11px;
             letter-spacing:.1em; text-transform:uppercase;}

  a:focus-visible, button:focus-visible, select:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}

  @media (max-width:900px){ .rigs{grid-template-columns:1fr;} .srcs{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:560px){ .log .ln{grid-template-columns:64px 1fr;} .log .ln .msg{grid-column:1 / -1;} }
  @media (prefers-reduced-motion:reduce){ *{animation:none !important; transition:none !important;} }

  /* ── in-page views: one document, no new tabs ── */
  .view{display:none;}
  .view.active{display:block;}
  nav.top-nav a{cursor:pointer;}
  .stub{padding-block:72px 90px; text-align:left;}
  .stub h1{margin:10px 0 0; font-size:clamp(28px,3.8vw,44px); letter-spacing:-.03em; font-weight:600;}
  .stub p{margin:14px 0 0; max-width:58ch; color:var(--fg-soft);}

  /* ── guide price workbench ── */
  .wb{display:grid; grid-template-columns:300px 1fr; gap:1px; background:var(--line);
      border:1px solid var(--line); margin-top:24px;}
  .wb-controls{background:var(--surface-2); padding:24px 22px; display:flex; flex-direction:column; gap:16px;}
  .wb-result{background:var(--surface); padding:26px 26px 24px;}
  .wb .field{gap:7px; margin:0;}
  .wb .field label{display:flex; justify-content:space-between; gap:10px; align-items:baseline;}
  .wb .tab{font-family:var(--mono); font-variant-numeric:tabular-nums; color:var(--fg); letter-spacing:0;
           text-transform:none; font-size:12px;}
  .wb input[type=range]{-webkit-appearance:none; appearance:none; width:100%; height:3px;
    background:var(--line); padding:0; border:none; outline-offset:6px;}
  .wb input[type=range]::-webkit-slider-thumb{-webkit-appearance:none; appearance:none;
    width:15px; height:15px; border-radius:50%; background:var(--accent); cursor:pointer; border:none;}
  .wb input[type=range]::-moz-range-thumb{width:15px; height:15px; border-radius:50%;
    background:var(--accent); cursor:pointer; border:none;}
  #g-canvas{display:block; width:100%; height:200px; margin-top:14px;}
  #view-guide .price{margin-top:16px;}
  #view-guide .note b{color:var(--fg);}
  #view-guide .pill{font-size:10px; padding:2px 7px; vertical-align:middle;}

  .effects{display:grid; grid-template-columns:repeat(5,1fr); gap:1px; background:var(--line);
           border:1px solid var(--line); margin-top:24px;}
  .eff{background:var(--surface); padding:18px 16px;}
  .eff .el{font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--fg-soft);}
  .eff .ev{font-family:var(--mono); font-size:19px; font-weight:700; font-variant-numeric:tabular-nums;
           letter-spacing:-.03em; margin-top:8px;}
  .eff .ed{font-size:12px; color:var(--fg-soft); margin-top:7px; line-height:1.45;}

  .wbar{height:4px; background:var(--surface-2); width:78px;}
  .wbar i{display:block; height:100%; background:var(--accent);}

  .reads{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line);
         border:1px solid var(--line); margin-top:24px;}
  .read{background:var(--surface); padding:22px 20px;}
  .read .rl{font-family:var(--mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase;
            color:var(--accent); margin-bottom:14px;}
  .read .rn{font-weight:600; font-size:15px; margin-top:10px;}
  .read .rd{font-family:var(--mono); font-size:11px; color:var(--fg-soft); letter-spacing:.04em; margin-top:2px;}
  .read .hint{margin-top:16px; font-size:12.5px; color:var(--fg-soft);}

  @media (max-width:900px){
    .wb{grid-template-columns:1fr;} .effects{grid-template-columns:repeat(2,1fr);}
    .reads{grid-template-columns:1fr;}
  }

  /* ── outreach ── */
  .senders{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line);
           border:1px solid var(--line); margin-top:24px;}
  .sender{background:var(--surface); padding:20px 18px;}
  .sender .sh{display:flex; justify-content:space-between; gap:10px; align-items:center; flex-wrap:wrap;}
  .sender .sn{font-family:var(--mono); font-size:14px; font-variant-numeric:tabular-nums; font-weight:600;}
  .sender .sm{font-size:12.5px; color:var(--fg-soft); margin-top:8px;}
  .sender .cap{margin-top:16px;}
  .sender .cl{font-family:var(--mono); font-size:10px; letter-spacing:.14em;
              text-transform:uppercase; color:var(--fg-soft);}
  .cbar{height:5px; background:var(--surface-2); margin-top:8px;}
  .cbar i{display:block; height:100%; background:var(--accent);}
  .sender .cn{font-family:var(--mono); font-size:11.5px; color:var(--fg-soft);
              font-variant-numeric:tabular-nums; margin-top:7px;}

  .camp{display:grid; grid-template-columns:340px 1fr; gap:1px; background:var(--line);
        border:1px solid var(--line); margin-top:24px;}
  .camp-form{background:var(--surface-2); padding:24px 22px; display:flex; flex-direction:column; gap:16px;}
  .camp-form .field{margin:0; gap:7px;}
  .camp-form .field label{display:flex; justify-content:space-between; align-items:baseline; gap:10px;}
  .camp-form input[type=range]{-webkit-appearance:none; appearance:none; width:100%; height:3px;
    background:var(--line); padding:0; border:none;}
  .camp-form input[type=range]::-webkit-slider-thumb{-webkit-appearance:none; appearance:none;
    width:15px; height:15px; border-radius:50%; background:var(--accent); cursor:pointer;}
  .camp-form input[type=range]::-moz-range-thumb{width:15px; height:15px; border-radius:50%;
    background:var(--accent); cursor:pointer; border:none;}
  .camp-prev{background:var(--surface); padding:26px 24px;}
  .bubble{margin-top:14px; background:var(--accent-soft); border:1px solid var(--line);
          border-left:3px solid var(--accent); padding:16px 18px; font-size:14.5px;
          line-height:1.6; white-space:pre-wrap;}
  .bubble.mail{background:var(--surface-2); border-left-color:var(--fg-faint); font-family:var(--mono); font-size:13px;}

  .queue{display:flex; flex-direction:column; gap:1px; background:var(--line);
         border:1px solid var(--line); margin-top:24px;}
  .draft{background:var(--surface); padding:20px 20px 18px;}
  .draft.settled{opacity:.58;}
  .draft .dh{display:flex; justify-content:space-between; gap:12px; align-items:flex-start; flex-wrap:wrap;}
  .draft .dn{font-weight:600; font-size:15px;}
  .draft .dm{font-family:var(--mono); font-size:11.5px; color:var(--fg-soft); margin-top:3px;}
  .draft .dbody{margin-top:14px; font-size:14px; line-height:1.6; color:var(--fg-soft);
                white-space:pre-wrap; border-left:2px solid var(--line); padding-left:14px;}
  .draft .dbody.editing{color:var(--fg); border-left-color:var(--accent); outline:none;}
  .draft .dact{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:16px;}
  .btn.sm{padding:8px 14px; font-size:11px;}
  .dstat{font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase;}
  .dstat.good{color:var(--good);} .dstat.muted{color:var(--fg-faint);}

  @media (max-width:900px){
    .senders{grid-template-columns:1fr;} .camp{grid-template-columns:1fr;}
  }

  /* ── trust centre ── */
  .gov{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line);
       border:1px solid var(--line); margin-top:22px;}
  .gv{background:var(--surface); padding:20px 18px;}
  .gv .gl{font-family:var(--mono); font-size:10px; letter-spacing:.14em;
          text-transform:uppercase; color:var(--fg-soft);}
  .gv .gvv{font-family:var(--mono); font-size:17px; font-weight:700; letter-spacing:-.02em;
           margin-top:9px; color:var(--fg);}
  .gv .gd{font-size:12.5px; color:var(--fg-soft); margin-top:9px; line-height:1.5;}

  .pipe{display:grid; grid-template-columns:repeat(5,1fr); gap:1px; background:var(--line);
        border:1px solid var(--line); margin-top:24px;}
  .st{background:var(--surface); padding:20px 18px;}
  .st .stn{font-family:var(--mono); font-size:10px; letter-spacing:.14em;
           text-transform:uppercase; color:var(--fg-soft);}
  .st .stv{font-family:var(--mono); font-size:26px; font-weight:700; letter-spacing:-.035em;
           font-variant-numeric:tabular-nums; margin-top:9px;}
  .stb{height:4px; background:var(--surface-2); margin-top:12px;}
  .stb i{display:block; height:100%; background:var(--accent);}

  @media (max-width:900px){
    .gov{grid-template-columns:repeat(2,1fr);} .pipe{grid-template-columns:repeat(2,1fr);}
  }
  @media (max-width:560px){ .gov{grid-template-columns:1fr;} }

  /* ── governance documents ── */
  .docs{display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line);
        border:1px solid var(--line); margin-top:24px;}
  .docgroup{background:var(--surface); padding:22px 20px; display:flex; flex-direction:column; gap:2px;}
  .docgroup .rl{font-family:var(--mono); font-size:11px; letter-spacing:.16em;
                text-transform:uppercase; color:var(--accent); margin-bottom:12px;}
  a.doc{display:flex; align-items:center; gap:10px; padding:11px 0; font-size:14px;
        color:var(--fg); text-decoration:none; border-bottom:1px solid var(--line);}
  .docgroup a.doc:last-child{border-bottom:none;}
  a.doc::after{content:"↗"; margin-left:auto; color:var(--fg-faint); font-size:13px;}
  a.doc:hover{color:var(--accent);} a.doc:hover::after{color:var(--accent);}
  .gv .gd a{color:var(--accent); text-decoration:none; border-bottom:1px solid var(--line);}
  @media (max-width:900px){ .docs{grid-template-columns:1fr;} }

  /* ── login gate ── */
  body.locked{overflow:hidden;}
  .login{position:fixed; inset:0; z-index:900; display:grid; grid-template-columns:1.05fr 1fr;
         background:var(--bg);}
  .login.gone{display:none;}
  .login-brand{background:#0B1315; color:#E7EAE8; padding:56px 52px;
               display:flex; flex-direction:column; justify-content:center; gap:26px;
               background-image:radial-gradient(120% 90% at 15% 10%, #14262A 0%, #0B1315 62%);}
  .login-logo{width:76px; height:76px;}
  .login-tag{font-family:var(--mono); font-size:11px; letter-spacing:.24em;
             text-transform:uppercase; color:#2FBFA8;}
  .login-stat{margin:0; font-size:clamp(27px,3.2vw,42px); line-height:1.08;
              letter-spacing:-.035em; font-weight:600; text-wrap:balance;}
  .login-facts{display:flex; gap:34px; flex-wrap:wrap; margin-top:8px;}
  .login-facts div{display:flex; flex-direction:column; gap:5px;}
  .lf-n{font-family:var(--mono); font-size:22px; font-weight:700; letter-spacing:-.03em;
        font-variant-numeric:tabular-nums; color:#E7EAE8;}
  .lf-l{font-family:var(--mono); font-size:10px; letter-spacing:.14em;
        text-transform:uppercase; color:#93A09C;}

  .login-panel{display:flex; align-items:center; justify-content:center; padding:40px 32px;}
  .login-form{width:100%; max-width:352px; display:flex; flex-direction:column; gap:16px;}
  .login-h1{margin:6px 0 0; font-size:32px; letter-spacing:-.03em; font-weight:600;}
  .login-sub{margin:0 0 6px; color:var(--fg-soft); font-size:14px;}
  .login-form .field{margin:0; gap:7px;}
  .login-form input{font-family:var(--sans); font-size:14px;}
  .login-btn{width:100%; justify-content:center; margin-top:4px;}
  .login-forgot summary{cursor:pointer; font-family:var(--mono); font-size:11px;
    letter-spacing:.1em; text-transform:uppercase; color:var(--accent); list-style:none;}
  .login-forgot div{margin-top:10px; font-size:13px; color:var(--fg-soft); line-height:1.55;}
  .login-trust{font-size:12px; color:var(--fg-faint); line-height:1.5; border-top:1px solid var(--line); padding-top:14px;}
  .login-demo{font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
              color:var(--accent); background:var(--accent-soft); padding:9px 11px; text-align:center;}
  nav.top-nav a.signout{color:var(--fg-faint);}
  @media (max-width:860px){
    .login{grid-template-columns:1fr; overflow-y:auto;}
    .login-brand{padding:38px 28px; gap:18px;}
    .login-stat{font-size:26px;}
  }

  /* ── auth: product shot + pricing on the brand panel ── */
  .login-shot{width:100%; max-width:345px; display:block; border:1px solid rgba(255,255,255,.10);
              border-radius:4px; box-shadow:0 26px 60px -34px rgba(0,0,0,.85);}
  .login-price{border-top:1px solid rgba(255,255,255,.12); padding-top:18px; margin-top:4px;}
  .lp-free{font-family:var(--mono); font-size:15px; font-weight:700; letter-spacing:-.01em; color:#2FBFA8;}
  .lp-then{font-family:var(--mono); font-size:12px; letter-spacing:.06em; color:#E7EAE8; margin-top:5px;}
  .lp-note{font-size:12px; color:#93A09C; margin-top:9px; line-height:1.5; max-width:44ch;}
  .login-alt{font-size:13px; color:var(--fg-soft);}
  .login-alt a{color:var(--accent); text-decoration:none; border-bottom:1px solid var(--line);}
  .login-brand{overflow-y:auto;}
  @media (max-width:860px){ .login-shot{max-width:100%;} }

  /* ── auth: tabbed sign-in / sign-up ── */
  .auth-body{overflow:hidden;}
  .login-panel{align-items:flex-start; padding-top:clamp(24px,6vh,64px);}
  .auth-card{width:100%; max-width:392px; display:flex; flex-direction:column; gap:0;}
  .tabs{position:relative; display:flex; gap:4px; margin:14px 0 4px;
        border-bottom:1px solid var(--line);}
  .tab{appearance:none; background:transparent; border:0; cursor:pointer;
       font-family:var(--mono); font-size:12px; letter-spacing:.1em;
       text-transform:uppercase; color:var(--fg-soft); padding:12px 14px;
       transition:color .28s ease;}
  .tab:hover{color:var(--fg);}
  .tab.on{color:var(--fg);}
  .tab-ink{position:absolute; left:0; bottom:-1px; height:2px; width:0;
           background:var(--accent); transition:transform .42s cubic-bezier(.4,0,.15,1),
           width .42s cubic-bezier(.4,0,.15,1);}

  /* Both panes are mounted; the inactive one is lifted out of flow so the card
     height follows whichever is showing, and the switch can be animated. */
  .panes{position:relative; overflow:hidden;}
  .pane{opacity:0; visibility:hidden; transform:translateX(14px);
        transition:opacity .34s ease, transform .42s cubic-bezier(.4,0,.15,1);
        position:absolute; inset:0 0 auto 0; pointer-events:none;}
  .pane.on{opacity:1; visibility:visible; transform:none;
           position:relative; pointer-events:auto;}
  .panes.at-signup #pane-signin{transform:translateX(-14px);}
  .pane .login-h1{margin:16px 0 0; font-size:27px;}
  .pane form{display:flex; flex-direction:column; gap:14px;}

  .login-price{display:flex; gap:10px; align-items:baseline; flex-wrap:wrap;
               border-top:1px solid var(--line); padding-top:14px; margin-top:20px;}
  .login-price .lp-free{font-family:var(--mono); font-size:12px; font-weight:700;
                        letter-spacing:.04em; color:var(--accent);}
  .login-price .lp-then{font-family:var(--mono); font-size:12px; color:var(--fg-soft);}
  .login-trust{margin-top:12px;}

  @media (prefers-reduced-motion:reduce){
    .pane, .tab-ink, .tab{transition:none !important;}
  }
  @media (max-width:860px){
    .auth-body{overflow:auto;}
    .login{grid-template-columns:1fr;}
    .login-panel{order:-1; padding-top:26px;}   /* form first on small screens */
    .login-shot{max-width:100%;}
  }

  /* Each half scrolls independently so nothing is ever unreachable — the page
     itself never scrolls, but a short viewport can still get to the bottom of
     the form. This is the fix for the cut-off switch link. */
  .login{height:100vh; height:100dvh;}
  .login-brand, .login-panel{overflow-y:auto; max-height:100vh; max-height:100dvh;}
  .login-panel{padding-bottom:32px;}
  .login-brand{justify-content:flex-start; padding-top:clamp(20px,4vh,48px);}

  /* ── dashboard: KPIs + guide-price workbench on one screen ── */
  .dash{padding-block:22px 6px;}
  .dash h1{font-size:clamp(26px,3.3vw,40px); margin-top:6px;}
  .dash-board{margin-top:16px;}
  .dash-board .cell{padding:15px 16px 13px;}
  .dash-board .k-num{font-size:clamp(23px,2.9vw,34px); margin-top:7px;}
  .dash-board .k-sub{margin-top:5px; font-size:12px;}
  .dash-actions{margin:16px 0 0; gap:10px;}
  .dash-actions .btn{padding:9px 15px; font-size:11px;}

  .dash-wb{margin-top:18px; grid-template-columns:280px 1fr;}
  .dash-wb .wb-controls{padding:18px 17px; gap:12px;}
  .dash-wb .wb-result{padding:18px 20px 16px;}
  .dash-wb .price{font-size:clamp(28px,3.8vw,42px); margin-top:10px;}
  .dash-wb .interval-label{margin-top:12px;}
  .dash-wb #d-canvas{display:block; width:100%; height:150px; margin-top:8px;}
  .dash-wb .row2{grid-template-columns:1fr 1fr;}
  .dash-wb .field label{font-size:10px;}

  .dash-chips{display:flex; gap:8px; flex-wrap:wrap; margin-top:14px;}
  .dchip{font-family:var(--mono); font-size:11px; letter-spacing:.04em;
         color:var(--fg-soft); border:1px solid var(--line); padding:6px 10px;
         display:inline-flex; gap:6px; align-items:baseline;}
  .dchip b{color:var(--fg); font-weight:700; font-variant-numeric:tabular-nums;}
  .dchip i{font-style:normal; color:var(--accent); text-transform:uppercase;
           letter-spacing:.1em; font-size:9.5px;}

  @media (max-width:900px){ .dash-wb{grid-template-columns:1fr;} }

  /* KPIs stacked down the right so the valuer gets the width it deserves */
  .dash-grid{display:grid; grid-template-columns:minmax(0,1fr) 236px; gap:18px;
             align-items:start; margin-top:18px;}
  .dash-grid .dash-wb{margin-top:0;}
  .dash-side{grid-template-columns:1fr; align-self:stretch;}
  .dash-side .cell{padding:16px 16px 14px;}
  .dash-side .k-num{font-size:30px;}
  @media (max-width:1080px){
    .dash-grid{grid-template-columns:1fr;}
    .dash-side{grid-template-columns:repeat(3,1fr);}
  }
  @media (max-width:760px){ .dash-side{grid-template-columns:1fr;} }
