/* ------------------------------------------------------------------ *
 * Workshop tools — shared design system
 *
 * Built for a phone held in one hand at a bench, often in bad light with
 * dirty fingers: high contrast, large hit targets, numbers set in tabular
 * mono so digits stop jumping around as they change, and a result panel
 * that stays put while you type. Deliberately plain — this is signage,
 * not a portfolio piece.
 * ------------------------------------------------------------------ */
:root{
  --bg:#eef0f3;
  --card:#ffffff;
  --card-2:#f7f8fa;
  --ink:#14171c;
  --dim:#5c6672;
  --faint:#8c95a1;
  --line:#d3d8de;
  --line-2:#e6e9ed;
  --accent:#e85d04;
  --accent-ink:#ffffff;
  --good:#0d7a4a;
  --warn:#a8620a;
  --bad:#b3261e;
  --sans:'Barlow',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --r:10px;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#101318; --card:#181c22; --card-2:#1f242b;
    --ink:#eaeef4; --dim:#9aa5b2; --faint:#6f7986;
    --line:#2c333c; --line-2:#232931;
    --accent:#ff7a1a; --accent-ink:#151515;
    --good:#3ecf8e; --warn:#e0a458; --bad:#ff6b6b;
  }
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--sans);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}

/* ---------------- top bar ---------------- */
.topbar{
  position:sticky;top:0;z-index:20;
  background:var(--card);border-bottom:1px solid var(--line);
}
.topbar .in{
  max-width:820px;margin:0 auto;padding:11px 16px;
  display:flex;align-items:center;gap:12px;
}
.back{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--mono);font-size:11px;font-weight:500;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--dim);text-decoration:none;
  padding:7px 11px;border:1px solid var(--line);border-radius:999px;
  transition:color .15s,border-color .15s,background .15s;
  white-space:nowrap;
}
.back:hover{color:var(--ink);border-color:var(--dim);background:var(--card-2)}
.back svg{width:12px;height:12px}
.topbar h1{
  margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.cat{
  margin-left:auto;font-family:var(--mono);font-size:10px;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;color:var(--accent);
  border:1px solid currentColor;border-radius:999px;padding:3px 9px;
  white-space:nowrap;
}

/* ---------------- shell ---------------- */
main{max-width:820px;margin:0 auto;padding:18px 16px 60px}
.sub{margin:0 0 18px;color:var(--dim);font-size:15px;max-width:62ch}

/* ---------------- results ---------------- */
.results{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:18px 18px 14px;margin-bottom:18px;
  position:sticky;top:53px;z-index:10;
  box-shadow:0 1px 0 rgba(0,0,0,.03);
}
.res-main{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px}
.res-main .v{
  font-family:var(--mono);font-size:clamp(30px,8vw,42px);font-weight:600;
  letter-spacing:-.02em;line-height:1.05;
  font-variant-numeric:tabular-nums;
}
.res-main .u{font-family:var(--mono);font-size:16px;color:var(--dim);font-weight:500}
.res-main .l{
  width:100%;font-family:var(--mono);font-size:10.5px;font-weight:500;
  letter-spacing:.11em;text-transform:uppercase;color:var(--faint);
  margin-bottom:2px;order:-1;
}
.res-rows{
  margin-top:14px;padding-top:12px;border-top:1px solid var(--line-2);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:11px 18px;
}
.res-row .l{
  font-family:var(--mono);font-size:10px;font-weight:500;
  letter-spacing:.1em;text-transform:uppercase;color:var(--faint);
}
.res-row .v{
  font-family:var(--mono);font-size:19px;font-weight:600;
  font-variant-numeric:tabular-nums;margin-top:1px;
}
.res-row .v span{font-size:12px;color:var(--dim);font-weight:500;margin-left:3px}
.res-note{
  margin-top:12px;padding-top:11px;border-top:1px solid var(--line-2);
  font-size:13.5px;color:var(--dim);
}
.res-note.warn{color:var(--warn)}
.res-note.bad{color:var(--bad)}
.res-note.good{color:var(--good)}
.copy{
  position:absolute;top:14px;right:14px;
  font-family:var(--mono);font-size:10px;font-weight:500;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--dim);background:var(--card-2);
  border:1px solid var(--line);border-radius:999px;padding:5px 10px;
  cursor:pointer;transition:color .15s,border-color .15s;
}
.copy:hover{color:var(--ink);border-color:var(--dim)}

/* ---------------- inputs ---------------- */
.fields{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:6px 18px 18px;
}
.field{padding:13px 0;border-bottom:1px solid var(--line-2)}
.field:last-child{border-bottom:0}
.field > label{
  display:block;font-size:13.5px;font-weight:500;color:var(--dim);margin-bottom:7px;
}
.field .hintline{display:block;font-size:12px;color:var(--faint);font-weight:400;margin-top:2px}
.inputrow{display:flex;align-items:stretch;gap:0}
input[type=number],input[type=text],select{
  flex:1;min-width:0;width:100%;
  font-family:var(--mono);font-size:17px;font-weight:500;
  font-variant-numeric:tabular-nums;
  color:var(--ink);background:var(--card-2);
  border:1.5px solid var(--line);border-radius:8px;
  padding:11px 12px;
  -webkit-appearance:none;appearance:none;
  transition:border-color .15s,background .15s;
}
select{
  background-image:linear-gradient(45deg,transparent 50%,var(--dim) 50%),linear-gradient(135deg,var(--dim) 50%,transparent 50%);
  background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;
  padding-right:34px;cursor:pointer;
}
input:focus,select:focus{outline:none;border-color:var(--accent);background:var(--card)}
input[type=number]{-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.inputrow .unit{
  display:flex;align-items:center;padding:0 12px;margin-left:-1.5px;
  font-family:var(--mono);font-size:13px;color:var(--dim);
  background:var(--card-2);border:1.5px solid var(--line);
  border-left:0;border-radius:0 8px 8px 0;white-space:nowrap;
}
.inputrow input:not(:only-child){border-radius:8px 0 0 8px}

/* segmented control, for two or three mutually exclusive choices */
.seg{display:flex;gap:0;border:1.5px solid var(--line);border-radius:8px;overflow:hidden}
.seg button{
  flex:1;font-family:var(--mono);font-size:12.5px;font-weight:500;
  letter-spacing:.03em;
  color:var(--dim);background:var(--card-2);
  border:0;border-right:1.5px solid var(--line);
  padding:11px 8px;cursor:pointer;
  transition:background .15s,color .15s;
}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--accent);color:var(--accent-ink)}
.seg button:not(.on):hover{color:var(--ink)}

/* ---------------- tables ---------------- */
.tablewrap{
  margin-top:18px;background:var(--card);
  border:1px solid var(--line);border-radius:var(--r);
  overflow-x:auto;
}
table{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:13px}
th,td{padding:9px 13px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line-2)}
th:first-child,td:first-child{text-align:left}
th{
  font-size:10px;font-weight:500;letter-spacing:.09em;text-transform:uppercase;
  color:var(--faint);background:var(--card-2);position:sticky;top:0;
}
tbody tr:last-child td{border-bottom:0}
tbody tr.hi td{background:color-mix(in srgb, var(--accent) 12%, transparent);font-weight:600}
td.num{font-variant-numeric:tabular-nums}

/* ---------------- notes ---------------- */
.notes{
  margin-top:20px;padding:16px 18px;
  background:var(--card-2);border:1px solid var(--line-2);border-radius:var(--r);
  font-size:13.5px;color:var(--dim);line-height:1.6;
}
.notes h3{
  margin:0 0 8px;font-family:var(--mono);font-size:10.5px;font-weight:500;
  letter-spacing:.11em;text-transform:uppercase;color:var(--faint);
}
.notes p{margin:0 0 9px}
.notes p:last-child{margin-bottom:0}
.notes code{
  font-family:var(--mono);font-size:12.5px;
  background:var(--card);border:1px solid var(--line-2);
  border-radius:4px;padding:1px 5px;
}
.notes strong{color:var(--ink);font-weight:600}

footer.toolfoot{
  max-width:820px;margin:0 auto;padding:6px 16px 44px;
  font-family:var(--mono);font-size:11px;color:var(--faint);
  display:flex;flex-wrap:wrap;gap:14px;
}
footer.toolfoot a{color:var(--dim);text-decoration:none;border-bottom:1px solid var(--line)}
footer.toolfoot a:hover{color:var(--accent);border-color:var(--accent)}

@media (max-width:560px){
  main{padding:14px 12px 50px}
  .results{padding:15px 15px 12px;top:51px}
  .fields{padding:4px 15px 15px}
  .res-rows{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
  .topbar h1{font-size:15px}
  .cat{display:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none !important}}
