/* Ledger house style. Single source of truth.
   Spec: design-standards.md. Do not edit a deployed copy; edit here and redeploy.
   Self-hosted fonts, no third-party requests. */

@font-face{font-family:"Source Serif 4";src:url("fonts/SourceSerif4-400.woff2")format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("fonts/SourceSerif4-600.woff2")format("woff2");
  font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/IBMPlexSans-400.woff2")format("woff2");
  font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("fonts/IBMPlexSans-600.woff2")format("woff2");
  font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/IBMPlexMono-400.woff2")format("woff2");
  font-weight:400;font-style:normal;font-display:swap}

:root{
  --paper:#EDEDE7; --panel:#F5F5F0; --ink:#1C1E1B; --ink-2:#52564E;
  --rule:#C6C7BF; --edge:#767A70; --signal:#8C3A1E; --signal-2:#2C5852;
  --font-head:"Source Serif 4","Iowan Old Style","Palatino Linotype",Palatino,serif;
  --font-body:"IBM Plex Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
  --font-mono:"IBM Plex Mono","SF Mono",Menlo,Consolas,monospace;
  --s1:8px; --s2:16px; --s3:24px; --s4:40px; --s5:64px; --s6:96px;
  --measure:68ch;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#191B18; --panel:#212420; --ink:#E6E6DE; --ink-2:#A2A69B;
  --rule:#3B3F38; --edge:#6A6F66; --signal:#D8825C; --signal-2:#74AFA5;}}
:root[data-theme="dark"]{
  --paper:#191B18; --panel:#212420; --ink:#E6E6DE; --ink-2:#A2A69B;
  --rule:#3B3F38; --edge:#6A6F66; --signal:#D8825C; --signal-2:#74AFA5;}

*,*::before,*::after{box-sizing:border-box;border-radius:0}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--font-body);font-size:16px;line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

.wrap{max-width:var(--measure);margin:0 auto;padding:var(--s5) var(--s3) var(--s6)}
.wrap-wide{max-width:96ch}

h1,h2,h3,h4{font-family:var(--font-head);font-weight:600;line-height:1.15;margin:0 0 var(--s2)}
h1{font-size:3.05rem;letter-spacing:-.01em}
h2{font-size:1.95rem;margin-top:var(--s5);padding-bottom:var(--s1);border-bottom:2px solid var(--ink)}
h3{font-size:1.56rem;margin-top:var(--s4)}
h4{font-size:1.25rem;margin-top:var(--s3)}
p,ul,ol{margin:0 0 var(--s2);max-width:var(--measure)}
li{margin-bottom:calc(var(--s1)/2)}
.lede{font-family:var(--font-head);font-size:1.25rem;color:var(--ink-2)}
.meta{font-family:var(--font-body);font-size:.8rem;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-2);margin-bottom:var(--s1)}
small,.small{font-size:.8rem;color:var(--ink-2)}
.prose-serif{font-family:var(--font-head);font-size:1.05rem}

a{color:var(--signal);text-underline-offset:1px}
a:hover{color:var(--ink)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--signal);outline-offset:2px}

.btn{font-family:var(--font-body);font-size:.95rem;line-height:1.2;padding:var(--s1) var(--s2);
  background:var(--panel);color:var(--ink);border:1px solid var(--edge);cursor:pointer}
.btn:hover{background:var(--paper);border-color:var(--ink)}
.btn:disabled{color:var(--ink-2);border-color:var(--rule);cursor:not-allowed}
.btn-primary{background:var(--signal);color:var(--paper);border-color:var(--signal)}
.btn-primary:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}

label{display:block;font-family:var(--font-body);font-size:.8rem;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-2);margin-bottom:var(--s1)}
input,select,textarea{font-family:var(--font-body);font-size:1rem;padding:var(--s1);width:100%;
  background:var(--panel);color:var(--ink);border:1px solid var(--edge)}
.field{margin-bottom:var(--s3)}
.field-error input{border:2px solid var(--signal)}
.field-error .msg{font-size:.8rem;color:var(--signal);margin-top:var(--s1)}

.table-scroll{overflow-x:auto;margin:var(--s3) 0}
table{width:100%;border-collapse:collapse;font-size:.95rem}
th{font-family:var(--font-body);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;
  text-align:left;padding:var(--s1) var(--s1) var(--s1) 0;
  border-bottom:2px solid var(--ink);color:var(--ink-2);font-weight:600}
td{padding:var(--s1) var(--s1) var(--s1) 0;border-bottom:1px solid var(--rule);vertical-align:top}
/* IBM Plex has no tnum in the Google build, so numeric columns must use mono, which is
   inherently tabular. Do not swap this for font-variant-numeric on the sans. */
td.num,th.num{font-family:var(--font-mono);text-align:right;font-variant-numeric:tabular-nums}

.callout{border:1px solid var(--edge);padding:var(--s2);margin:var(--s3) 0}
.callout b{font-family:var(--font-body)}

pre{background:var(--panel);border:1px solid var(--rule);padding:var(--s2);overflow-x:auto;
  font-family:var(--font-mono);font-size:.85rem;line-height:1.5;margin:0}
code{font-family:var(--font-mono);font-size:.9em}
p code,li code,td code{background:var(--panel);border:1px solid var(--rule);padding:0 4px}

figure{margin:var(--s3) 0}
figure img{max-width:100%;height:auto;display:block;border:1px solid var(--rule)}
figcaption{font-family:var(--font-body);font-size:.8rem;color:var(--ink-2);margin-top:var(--s1)}

hr{border:0;border-top:1px solid var(--rule);margin:var(--s4) 0}
blockquote{margin:var(--s3) 0;padding:var(--s2);border:1px solid var(--rule);
  font-family:var(--font-head)}

/* Skeleton: flat fill plus opacity pulse. Never a gradient sweep. */
.skeleton{background:var(--rule);height:14px;margin-bottom:var(--s1)}
.skeleton--title{height:28px;width:60%}
.skeleton--w70{width:70%} .skeleton--w40{width:40%}
@media (prefers-reduced-motion:no-preference){
  .skeleton{animation:ledger-sk 1.6s ease-in-out infinite}
  @keyframes ledger-sk{0%,100%{opacity:1}50%{opacity:.55}}}

.two-col{display:grid;grid-template-columns:2fr 1fr;gap:var(--s4)}
@media (max-width:720px){.two-col{grid-template-columns:1fr}}

.site-footer{margin-top:var(--s6);padding-top:var(--s2);border-top:1px solid var(--rule);
  font-size:.8rem;color:var(--ink-2)}
.site-footer a{margin-right:var(--s2)}

.skip-link{position:absolute;left:-9999px}
.skip-link:focus{left:var(--s2);top:var(--s2);background:var(--panel);
  border:1px solid var(--edge);padding:var(--s1);z-index:10}
