@font-face{font-family:Plex;font-weight:400;font-style:normal;src:url(/static/fonts/plex-400-normal.woff2)format("woff2");font-display:swap}
@font-face{font-family:Plex;font-weight:500;font-style:normal;src:url(/static/fonts/plex-500-normal.woff2)format("woff2");font-display:swap}
@font-face{font-family:Plex;font-weight:600;font-style:normal;src:url(/static/fonts/plex-600-normal.woff2)format("woff2");font-display:swap}
@font-face{font-family:Plex;font-weight:700;font-style:normal;src:url(/static/fonts/plex-700-normal.woff2)format("woff2");font-display:swap}
@font-face{font-family:Plex;font-weight:400;font-style:italic;src:url(/static/fonts/plex-400-italic.woff2)format("woff2");font-display:swap}

:root{
  --blue:#1f5fae; --blue-dk:#143f78; --blue-pale:#e8f0fa;
  --amber:#c8782a; --amber-pale:#fbf0e4;
  --ink:#1a1d21; --muted:#5d6873; --rule:#d6e0ec; --bg:#f4f7fb;
  --ok:#1d7a4d; --bad:#b3261e;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:Plex,system-ui,sans-serif;font-size:16px;line-height:1.5}
a{color:var(--blue)}
img{display:block;max-width:100%}
:focus-visible{outline:3px solid var(--amber);outline-offset:2px}

/* ---------- chrome ---------- */
.top{background:var(--blue);border-bottom:4px solid var(--blue-dk);color:#fff}
.top .in{max-width:62rem;margin:0 auto;padding:.85rem 1rem;
  display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.top .brand{font-weight:700;font-size:1.1rem;color:#fff;text-decoration:none;margin-right:auto}
.top nav{display:flex;gap:1rem;align-items:center;font-size:.92rem}
.top nav a{color:#cfe0f3;text-decoration:none}
.top nav a:hover,.top nav a[aria-current]{color:#fff;text-decoration:underline}
.top form{margin:0}
.top button.link{background:0;border:0;color:#cfe0f3;font:inherit;cursor:pointer;padding:0}

main{max-width:62rem;margin:0 auto;padding:1.25rem 1rem 4rem}
h1{font-size:1.5rem;margin:0 0 1rem;letter-spacing:-.01em}
h2{font-size:1.05rem;margin:1.75rem 0 .6rem;letter-spacing:-.005em}

/* ---------- cards & tables ---------- */
.card{background:#fff;border:1px solid var(--rule);border-radius:4px;
  padding:1rem;margin:0 0 1rem}
.card>h2:first-child{margin-top:0}

table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:.72rem;letter-spacing:.07em;color:var(--blue);
  font-weight:700;padding:.5rem .55rem;background:var(--blue-pale);white-space:nowrap}
td{padding:.6rem .55rem;border-bottom:1px solid var(--rule);vertical-align:top}
.r{text-align:right}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- forms ---------- */
label{display:block;font-size:.76rem;font-weight:600;color:var(--muted);
  letter-spacing:.03em;margin:0 0 .2rem}
input,textarea,select{width:100%;font:inherit;color:var(--ink);background:#fff;
  border:1px solid #b8c4d2;border-radius:3px;padding:.5rem .6rem}
input:focus,textarea,select:focus{border-color:var(--blue)}
textarea{min-height:4.5rem;resize:vertical}
.grid{display:grid;gap:.75rem}
@media(min-width:40rem){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:1fr 1fr 1fr}}
.field{min-width:0}

.btn{display:inline-block;font:inherit;font-weight:600;cursor:pointer;
  border:2px solid var(--blue);background:var(--blue);color:#fff;
  border-radius:3px;padding:.52rem 1rem;text-decoration:none;text-align:center}
.btn:hover{background:var(--blue-dk);border-color:var(--blue-dk)}
.btn.ghost{background:#fff;color:var(--blue)}
.btn.ghost:hover{background:var(--blue-pale)}
.btn.amber{background:var(--amber);border-color:var(--amber)}
.btn.amber:hover{background:#a8631f;border-color:#a8631f}
.btn.sm{padding:.3rem .6rem;font-size:.85rem;border-width:1px}
.btn.danger{background:#fff;color:var(--bad);border-color:#e3b4b0}
.row-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.bar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin:1rem 0 0}
.bar form{margin:0}

/* ---------- status pills ---------- */
.pill{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.06em;
  padding:.16rem .45rem;border-radius:2px;white-space:nowrap}
.pill.draft{background:#eceff3;color:var(--muted)}
.pill.sent{background:var(--blue-pale);color:var(--blue)}
.pill.paid{background:#e4f3ea;color:var(--ok)}
.pill.void{background:#f6e7e6;color:var(--bad)}

.note{font-size:.85rem;color:var(--muted);margin:.35rem 0 0}
.flash{border-left:4px solid var(--blue);background:var(--blue-pale);
  padding:.6rem .8rem;margin:0 0 1rem;font-size:.92rem}
.flash.bad{border-color:var(--bad);background:#f9ecea}
.flash.ok{border-color:var(--ok);background:#e9f5ee}

/* ---------- line items ---------- */
.items .line{border:1px solid var(--rule);border-radius:3px;padding:.7rem;
  margin:0 0 .6rem;background:#fcfdfe}
.items .line .top-row{display:grid;gap:.6rem;grid-template-columns:1fr}
@media(min-width:46rem){
  .items .line .top-row{grid-template-columns:1fr 5rem 7rem 7rem auto;align-items:end}
}
.items .amt{font-weight:700;font-variant-numeric:tabular-nums;
  padding-bottom:.55rem;white-space:nowrap}

.totbox{margin-left:auto;max-width:22rem}
.totbox .l{display:flex;justify-content:space-between;padding:.3rem 0;color:#36404a}
.totbox .due{display:flex;justify-content:space-between;align-items:baseline;
  background:var(--amber);color:#fff;padding:.6rem .7rem;margin-top:.4rem;border-radius:3px}
.totbox .due b{font-size:1.2rem;font-variant-numeric:tabular-nums}

/* ---------- login ---------- */
.auth{max-width:22rem;margin:4rem auto;padding:0 1rem}
.auth .card{padding:1.4rem}

/* ---------- public invoice ---------- */
.pub-head{background:var(--blue);color:#fff;border-bottom:4px solid var(--blue-dk)}
.pub-head .in{max-width:46rem;margin:0 auto;padding:1.4rem 1rem;
  display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}
.pub-head .co{font-weight:700;font-size:1.3rem}
.pub-head .sub{color:#cfe0f3;font-size:.9rem}
.pub-head .word{font-weight:700;font-size:1.25rem;letter-spacing:.2em;text-align:right}
.pub{max-width:46rem;margin:0 auto;padding:1.25rem 1rem 4rem}
.meta4{display:grid;grid-template-columns:1fr 1fr;gap:2px;margin:0 0 1.25rem}
@media(min-width:40rem){.meta4{grid-template-columns:repeat(4,1fr)}}
.meta4>div{background:var(--blue-pale);padding:.5rem .6rem}
.meta4>div:last-child{background:var(--amber-pale);border-top:3px solid var(--amber)}
.meta4 .k{font-size:.66rem;font-weight:700;letter-spacing:.08em;color:var(--blue)}
.meta4>div:last-child .k{color:var(--amber)}
.meta4 .v{font-weight:700;font-size:1.05rem;font-variant-numeric:tabular-nums}
.meta4>div:last-child .v{color:var(--amber)}
.paidbanner{background:#e4f3ea;border-left:4px solid var(--ok);color:var(--ok);
  font-weight:700;padding:.7rem .9rem;margin:0 0 1.25rem}
.payrow{display:flex;gap:.7rem;flex-wrap:wrap;margin:1.5rem 0 0}
.payrow .btn{flex:1 1 12rem}
.fineprint{margin:2rem 0 0;padding-top:1rem;border-top:1px solid var(--rule);
  font-size:.85rem;color:var(--muted)}
