/* ============================================================
   TROIB Engineering Brief — shared paper stylesheet
   Screen: dark abyss theme.  Print: clean light PDF.
   ============================================================ */

:root{
  --abyss:#04111f; --abyss-2:#061a2b; --ink:#02080f; --paper:#0a1c2e;
  --text:#eaf4f4; --muted:#8fa6b2; --faint:#5d7585;
  --coral:#ff7a45; --gold:#ffd166; --teal:#00e0c7; --cyan:#2ad4ff; --indigo:#6c7dff;
  --line:rgba(143,166,178,.16);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}

body{
  margin:0;
  background:
    radial-gradient(1200px 600px at 50% -10%, var(--abyss-2) 0%, transparent 60%),
    var(--abyss);
  color:var(--text);
  font-family:"Space Grotesk", system-ui, sans-serif;
  font-size:17px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}

/* ---- Background grain / nothing animation (purely decorative) ---- */
.bg-nothing{
  position:fixed; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(2px 2px at 20% 30%, rgba(0,224,199,.10), transparent 60%),
    radial-gradient(2px 2px at 80% 70%, rgba(108,125,255,.08), transparent 60%),
    radial-gradient(1px 1px at 60% 20%, rgba(42,212,255,.08), transparent 60%);
  animation:drift 28s ease-in-out infinite alternate;
}
@keyframes drift{from{transform:translateY(0)}to{transform:translateY(-24px)}}

/* ============================================================
   Fixed UI controls
   ============================================================ */
.paper-nav{
  position:fixed; top:18px; left:20px; z-index:50;
  font-family:"Space Mono", monospace; font-size:13px; letter-spacing:.04em;
  color:var(--teal); text-decoration:none;
  padding:8px 14px; border:1px solid var(--line); border-radius:8px;
  background:rgba(6,26,43,.72); backdrop-filter:blur(8px);
  transition:border-color .2s, color .2s;
}
.paper-nav:hover{border-color:var(--teal); color:#fff;}

.print-btn{
  position:fixed; top:18px; right:20px; z-index:50;
  font-family:"Space Mono", monospace; font-size:13px; letter-spacing:.04em;
  color:var(--gold); cursor:pointer;
  padding:8px 14px; border:1px solid var(--line); border-radius:8px;
  background:rgba(6,26,43,.72); backdrop-filter:blur(8px);
  transition:border-color .2s, color .2s;
}
.print-btn:hover{border-color:var(--gold); color:#fff;}

/* ============================================================
   Document column
   ============================================================ */
.doc{
  position:relative; z-index:1;
  max-width:820px; margin:0 auto;
  padding:96px 28px 80px;
  counter-reset:section figure equation table reference;
}

/* ---- Cover ---- */
.cover{padding-bottom:30px; border-bottom:1px solid var(--line); margin-bottom:40px;}
.eyebrow{
  font-family:"Space Mono", monospace;
  color:var(--teal); font-size:13px; letter-spacing:.34em; text-transform:uppercase;
  margin:0 0 22px;
}
.title{
  font-family:"Archivo Expanded","Space Grotesk",sans-serif;
  font-weight:800; font-size:clamp(30px,5.2vw,52px); line-height:1.04;
  letter-spacing:-.01em; margin:0 0 18px;
  background-image:linear-gradient(176deg,#fff 0%,#e4e9f0 20%,#b3bcca 42%,#828c9b 51%,#aab3c1 60%,#e8edf3 80%,#fff 100%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent;
}
.subtitle{color:var(--muted); font-size:19px; max-width:60ch; margin:0 0 26px;}
.meta-row{
  display:flex; flex-wrap:wrap; gap:10px 26px;
  font-family:"Space Mono", monospace; font-size:12.5px; color:var(--faint);
  border-top:1px solid var(--line); padding-top:18px;
}
.meta-row b{color:var(--muted); font-weight:700;}

/* ---- Disclaimer callout ---- */
.disclaimer{
  border:1px solid rgba(255,209,102,.34);
  border-left:3px solid var(--gold);
  background:rgba(255,209,102,.06);
  border-radius:10px; padding:16px 20px; margin:0 0 44px;
  font-size:15px; color:#f4e6c6;
}
.disclaimer strong{color:var(--gold); font-family:"Space Mono",monospace; font-size:12px; letter-spacing:.14em; text-transform:uppercase; display:block; margin-bottom:6px;}

/* ---- Abstract ---- */
.abstract{
  background:var(--paper); border:1px solid var(--line); border-radius:12px;
  padding:24px 26px; margin:0 0 44px;
}
.abstract h2{
  font-family:"Space Mono",monospace; font-size:12px; letter-spacing:.2em;
  text-transform:uppercase; color:var(--teal); margin:0 0 10px; counter-increment:none;
}
.abstract h2::before{content:none;}
.abstract p{margin:0; color:#d3e3e3;}

/* ============================================================
   Headings — numbered via counters
   ============================================================ */
h2.sec{
  counter-increment:section;
  font-family:"Archivo Expanded","Space Grotesk",sans-serif;
  font-weight:700; font-size:25px; line-height:1.2;
  margin:54px 0 16px; padding-top:8px;
}
h2.sec::before{
  content:counter(section);
  font-family:"Space Mono",monospace; color:var(--teal); font-weight:700;
  font-size:18px; margin-right:14px;
  border-bottom:2px solid var(--teal); padding-bottom:2px;
}
h3.sub{
  counter-increment:subsection;
  font-family:"Archivo Expanded","Space Grotesk",sans-serif;
  font-weight:600; font-size:19px; margin:34px 0 12px; color:#fff;
}
h2.sec{counter-reset:subsection;}
h3.sub::before{
  content:counter(section) "." counter(subsection);
  font-family:"Space Mono",monospace; color:var(--gold);
  font-size:15px; margin-right:12px;
}

p{margin:0 0 16px;}
a{color:var(--cyan);}
strong{color:#fff;}
em{color:var(--muted);}

/* ============================================================
   Figures
   ============================================================ */
.fig{
  counter-increment:figure;
  margin:34px 0; text-align:center;
  border-top:2px solid var(--teal);
  background:#02101d; border-radius:0 0 12px 12px;
  padding:22px 22px 16px;
  box-shadow:0 0 0 1px var(--line);
  break-inside:avoid;
}
.fig img{width:100%; height:auto; display:block; border-radius:8px;}
.fig figcaption{
  font-family:"Space Mono",monospace; font-size:13px; color:var(--muted);
  margin-top:14px; text-align:left; line-height:1.55;
}
.fig figcaption::before{
  content:"FIG " counter(figure) " — ";
  color:var(--teal); font-weight:700;
}

/* ============================================================
   Tables
   ============================================================ */
.tbl-wrap{margin:30px 0; overflow-x:auto; break-inside:avoid;}
table.data{
  width:100%; border-collapse:collapse;
  font-family:"Space Mono",monospace; font-size:13.5px;
  border:1px solid var(--line);
}
table.data caption{
  counter-increment:table;
  caption-side:top; text-align:left;
  font-family:"Space Mono",monospace; font-size:12.5px; color:var(--muted);
  padding:0 0 10px;
}
table.data caption::before{
  content:"TABLE " counter(table) " — ";
  color:var(--gold); font-weight:700;
}
table.data thead th{
  background:rgba(0,224,199,.12); color:var(--teal);
  text-align:left; padding:10px 12px; font-weight:700;
  border-bottom:1px solid rgba(0,224,199,.3);
  letter-spacing:.02em;
}
table.data td{padding:9px 12px; border-bottom:1px solid var(--line); color:#d3e3e3;}
table.data tbody tr:nth-child(odd){background:rgba(143,166,178,.04);}
table.data td.num{text-align:right;}

/* ============================================================
   Equations
   ============================================================ */
.eq{
  display:flex; align-items:center; gap:18px;
  margin:26px 0; padding:16px 22px;
  background:var(--paper); border:1px solid var(--line); border-radius:10px;
  break-inside:avoid;
}
.eq .expr{
  flex:1; text-align:center;
  font-family:"Space Mono",monospace; font-size:19px; color:#eef9f9;
  letter-spacing:.01em;
}
.eq .num{
  counter-increment:equation;
  font-family:"Space Mono",monospace; color:var(--gold); font-size:14px;
  white-space:nowrap;
}
.eq .num::before{content:"(" counter(equation) ")";}
.eq sub,.eq sup{font-size:.7em;}

/* inline mono token */
.tok{font-family:"Space Mono",monospace; color:var(--cyan); font-size:.92em;}

/* ============================================================
   Spec callout cards
   ============================================================ */
.specs{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:14px; margin:30px 0;
}
.spec{
  background:linear-gradient(180deg,var(--paper),#08182a);
  border:1px solid var(--line); border-top:2px solid var(--gold);
  border-radius:10px; padding:16px 16px 14px; break-inside:avoid;
}
.spec .v{
  font-family:"Archivo Expanded",sans-serif; font-weight:700;
  font-size:26px; line-height:1; color:#fff; margin-bottom:6px;
}
.spec .v small{font-size:14px; color:var(--teal); font-weight:600;}
.spec .k{
  font-family:"Space Mono",monospace; font-size:11.5px; letter-spacing:.05em;
  text-transform:uppercase; color:var(--muted);
}

/* ============================================================
   Nomenclature
   ============================================================ */
.nomen{
  width:100%; border-collapse:collapse; margin:18px 0 8px;
  font-size:15px;
}
.nomen th,.nomen td{
  text-align:left; padding:7px 12px; border-bottom:1px solid var(--line);
  vertical-align:top;
}
.nomen th{
  width:130px; font-family:"Space Mono",monospace; color:var(--cyan);
  font-weight:700; font-size:14px;
}
.nomen td{color:var(--muted);}

/* ============================================================
   References
   ============================================================ */
ol.refs{
  counter-reset:reference; list-style:none; padding:0; margin:14px 0 0;
  font-size:14.5px; color:var(--muted);
}
ol.refs li{
  counter-increment:reference; position:relative;
  padding:8px 0 8px 42px; border-bottom:1px solid var(--line);
}
ol.refs li::before{
  content:"[" counter(reference) "]";
  position:absolute; left:0; top:8px;
  font-family:"Space Mono",monospace; color:var(--gold); font-size:13px;
}

/* ============================================================
   Footer
   ============================================================ */
.doc-footer{
  margin-top:64px; padding-top:24px; border-top:1px solid var(--line);
  font-size:13px; color:var(--faint);
}
.doc-footer .brand{
  font-family:"Space Mono",monospace; color:var(--muted); letter-spacing:.06em;
  margin-bottom:10px;
}
.doc-footer .fine{font-size:12px; line-height:1.55;}

/* ============================================================
   PRINT — clean professional PDF
   ============================================================ */
@media print{
  @page{margin:18mm 16mm 20mm; size:A4;}
  html,body{
    background:#fff !important; color:#10222e !important;
    font-size:11pt; line-height:1.5;
  }
  .bg-nothing,.paper-nav,.print-btn{display:none !important;}
  .doc{max-width:none; margin:0; padding:0;}

  .eyebrow{color:#0a7c70 !important;}
  .title{
    -webkit-text-fill-color:#0a1c2e !important; color:#0a1c2e !important;
    background:none !important;
  }
  .subtitle{color:#33505e !important;}
  .meta-row,.meta-row b{color:#33505e !important; border-color:#cfd9df !important;}
  .cover{border-color:#cfd9df !important;}

  .disclaimer{
    background:#fff8e8 !important; border-color:#caa53a !important;
    border-left:3px solid #b8860b !important; color:#5a4a18 !important;
  }
  .disclaimer strong{color:#8a6d12 !important;}

  .abstract{background:#f3f7f9 !important; border-color:#cfd9df !important;}
  .abstract p{color:#22323c !important;}
  .abstract h2{color:#0a7c70 !important;}

  p,td,li,.subtitle{color:#1b2c36 !important;}
  strong{color:#000 !important;}
  em{color:#445663 !important;}
  a{color:#0a1c2e !important; text-decoration:none;}

  h2.sec{color:#0a1c2e !important; page-break-after:avoid;}
  h2.sec::before{color:#0a7c70 !important; border-color:#0a7c70 !important;}
  h3.sub{color:#0a1c2e !important; page-break-after:avoid;}
  h3.sub::before{color:#9a7a10 !important;}

  .fig{
    background:#fff !important; border-top:2px solid #0a7c70 !important;
    box-shadow:none !important; border:1px solid #cfd9df;
    page-break-inside:avoid; break-inside:avoid;
  }
  .fig img{border:1px solid #e3e9ec;}
  .fig figcaption{color:#33505e !important;}
  .fig figcaption::before{color:#0a7c70 !important;}

  table.data{border-color:#cfd9df !important;}
  table.data thead th{
    background:#e4f4f1 !important; color:#0a7c70 !important;
    border-bottom:1px solid #9ec9c2 !important;
    -webkit-print-color-adjust:exact; print-color-adjust:exact;
  }
  table.data td{color:#1b2c36 !important; border-color:#e3e9ec !important;}
  table.data tbody tr:nth-child(odd){background:#f5f8f9 !important;}
  table.data caption,table.data caption::before{color:#33505e !important;}
  table.data caption::before{color:#9a7a10 !important;}
  .tbl-wrap{page-break-inside:avoid; break-inside:avoid;}

  .eq{background:#f3f7f9 !important; border-color:#cfd9df !important; break-inside:avoid;}
  .eq .expr{color:#0a1c2e !important;}
  .eq .num{color:#9a7a10 !important;}
  .tok{color:#0a6b7a !important;}

  .spec{
    background:#f5f8f9 !important; border:1px solid #cfd9df !important;
    border-top:2px solid #b8860b !important; break-inside:avoid;
  }
  .spec .v{color:#0a1c2e !important;}
  .spec .v small{color:#0a7c70 !important;}
  .spec .k{color:#445663 !important;}

  .nomen th{color:#0a6b7a !important;}
  .nomen td{color:#33505e !important;}
  .nomen th,.nomen td{border-color:#e3e9ec !important;}

  ol.refs{color:#33505e !important;}
  ol.refs li{border-color:#e3e9ec !important;}
  ol.refs li::before{color:#9a7a10 !important;}

  .doc-footer{border-color:#cfd9df !important; color:#5a6b75 !important;}
  .doc-footer .brand{color:#33505e !important;}

  .print-footnote{
    display:block !important; margin-top:10px;
    font-family:"Space Mono",monospace; font-size:8.5pt; color:#7a8a92 !important;
    text-align:center; border-top:1px solid #e3e9ec; padding-top:8px;
  }
  *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}

/* hidden on screen, shown only when printing */
.print-footnote{display:none;}

@media (max-width:560px){
  .doc{padding:88px 18px 60px;}
  body{font-size:16px;}
  .meta-row{gap:8px 16px;}
}
