main{
  padding:18px clamp(14px, 2vw, 26px);
  width:min(1920px, calc(100vw - 12px));
  max-width:none;
  margin:0 auto;
}
.card{
  background:var(--tower-paper);
  border:1px solid var(--tower-border);
  border-radius:16px;
  padding:16px;
  margin-bottom:16px;
  box-shadow:0 3px 14px rgba(31,29,26,.04);
}
.card h2,.card h3,.card h4{
  margin-top:0;
  font-family:"Proxima Nova", "Avenir Next", "Avenir", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
  letter-spacing:.01em;
  font-weight:600;
}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
table{width:100%;font-size:15.5px}
table th{font-weight:600;color:#4a433b;background:#f6f1e9}
table th, table td{vertical-align:top}
table td, table th{padding:10px !important;border-color:#efe7dd !important}
table tr:hover td{background:rgba(107,92,74,.02)}
.table-wrap{
  overflow:auto;
  border:1px solid #eee5d9;
  border-radius:12px;
  background:#fff;
}
.table-wrap table{margin-bottom:0}
pre{
  background:#1f1d1a;
  color:#f6f4ef;
  border-radius:12px;
  padding:12px;
  border:1px solid #3a352f;
  max-height:420px;
  overflow:auto;
}
input,select,textarea,button{font:inherit}
textarea{width:100%;min-height:84px}
input[type=text],input[type=password],input[type=number],input[type=url],select,textarea{
  width:100%;
  border:1px solid var(--tower-border);
  border-radius:12px;
  padding:8px 10px;
  background:#fff;
  color:var(--tower-ink);
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:#c4b29d;
  box-shadow:0 0 0 3px rgba(107,92,74,.10);
}
button,
.actions a,
.section-title > a,
a.btn{
  border:1px solid var(--tower-border-strong);
  background:#fff;
  color:var(--tower-link-hover);
  border-radius:12px;
  padding:8px 12px;
  font-weight:600;
  cursor:pointer;
  text-decoration:none;
  line-height:1.2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  transition:.12s ease-in-out;
}
.actions a,
.section-title > a{padding:8px 11px}
button:hover,
.actions a:hover,
.section-title > a:hover,
a.btn:hover{
  background:#f4efe7;
  border-color:#c6b8a5;
  color:var(--tower-link-hover);
}
button:disabled{opacity:.65;cursor:wait}
button[type=submit],
.actions form > button[type=submit],
.actions > button{
  background:#2f2a24;
  color:#fff;
  border-color:#2f2a24;
}
button[type=submit]:hover,
.actions form > button[type=submit]:hover,
.actions > button:hover{
  background:#1f1d1a;
  border-color:#1f1d1a;
  color:#fff;
}
button.btn-triage-state,
.actions form > button.btn-triage-state[type=submit]{
  opacity:1;
}
button.btn-triage-add,
.actions form > button.btn-triage-add[type=submit]{
  background:#2f2a24;
  border-color:#2f2a24;
  color:#fff;
}
button.btn-triage-add:hover,
.actions form > button.btn-triage-add[type=submit]:hover{
  background:#1f1d1a;
  border-color:#1f1d1a;
  color:#fff;
}
button.btn-triage-pending,
.actions form > button.btn-triage-pending[type=submit]{
  background:#fff4cf;
  border-color:#e4c973;
  color:#6a5413;
}
button.btn-triage-pending:hover,
.actions form > button.btn-triage-pending[type=submit]:hover{
  background:#ffefba;
  border-color:#d7b95e;
  color:#5d4a12;
}
button.btn-triage-pipeline,
.actions form > button.btn-triage-pipeline[type=submit]{
  background:#e7f0ff;
  border-color:#b8ccef;
  color:#2f4f86;
}
button.btn-triage-pipeline:hover,
.actions form > button.btn-triage-pipeline[type=submit]:hover{
  background:#dfeaff;
  border-color:#abc2ec;
  color:#27467b;
}
button.btn-triage-state[disabled],
.actions form > button.btn-triage-state[type=submit][disabled]{
  opacity:1;
  cursor:not-allowed;
  filter:saturate(.9);
}
.actions .btn-outline-primary,
.actions .btn-outline-secondary{
  background:#fff;
  border-color:var(--tower-border-strong);
  color:var(--tower-link-hover);
}
.actions .btn-outline-primary:hover,
.actions .btn-outline-secondary:hover{
  background:#f4efe7;
  border-color:#c6b8a5;
  color:var(--tower-link-hover);
}
.btn-compact,
.btn-primary-compact,
.btn-outline-compact,
.btn-link-compact{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:6px 10px;
  border-radius:10px;
  font-weight:600;
  font-size:14px;
  line-height:1.2;
  text-decoration:none;
  border:1px solid transparent;
  cursor:pointer;
  transition:.12s ease-in-out;
}
.btn-compact{background:#fff;color:var(--tower-link-hover);border-color:var(--tower-border-strong)}
.btn-compact:hover{background:#f4efe7;border-color:#c6b8a5}
.btn-primary-compact,
button.btn-primary-compact[type=submit]{
  background:#2f2a24;
  color:#fff;
  border-color:#2f2a24;
}
.btn-primary-compact:hover,
button.btn-primary-compact[type=submit]:hover{
  background:#1f1d1a;
  border-color:#1f1d1a;
  color:#fff;
}
.btn-outline-compact,
button.btn-outline-compact[type=submit]{
  background:#fff;
  color:var(--tower-link-hover);
  border-color:var(--tower-border-strong);
}
.btn-outline-compact:hover,
button.btn-outline-compact[type=submit]:hover{
  background:#f4efe7;
  border-color:#c6b8a5;
  color:var(--tower-link-hover);
}
.btn-link-compact,
button.btn-link-compact[type=submit]{
  background:#fff;
  color:var(--tower-link-hover);
  border-color:var(--tower-border);
}
.btn-link-compact:hover,
button.btn-link-compact[type=submit]:hover{
  background:#f6f1ea;
  border-color:#cbbba7;
  color:var(--tower-link-hover);
}
.btn-outline-danger{
  background:#fff;
  color:#9a3f36;
  border-color:#e6c4bf;
}
.btn-outline-danger:hover{
  background:#fff5f3;
  color:#7d251f;
  border-color:#d9a7a0;
}
.nav-dropdown-menu button.nav-linklike,
.nav-dropdown-menu button.nav-linklike[type=submit]{
  background:transparent;
  border:none;
  color:var(--tower-link);
  justify-content:flex-start;
  font-weight:500;
  padding:8px 10px;
  width:100%;
}
.nav-dropdown-menu button.nav-linklike:hover,
.nav-dropdown-menu button.nav-linklike[type=submit]:hover{
  background:rgba(107,92,74,.07);
  color:var(--tower-link-hover);
  border:none;
}
.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.muted{color:var(--tower-muted);font-size:13px}
.error{
  background:#fff4f2;color:#8f2f28;border:1px solid #efccc7;padding:10px 12px;border-radius:12px;margin-bottom:12px
}
.success{
  background:#f4faf5;color:#235b34;border:1px solid #d6eadb;padding:10px 12px;border-radius:12px;margin-bottom:12px
}
/* ── Toast notifications ───────────────────────────────────────────────── */
#tower-toast-host{
  position:fixed;top:16px;right:16px;z-index:9999;
  display:flex;flex-direction:column;gap:8px;max-width:340px;min-width:220px;
  pointer-events:none;
}
.tower-toast{
  background:var(--tower-paper-2,#fff);
  border:1px solid var(--tower-border,#e5dfd5);
  border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.5;
  box-shadow:0 4px 20px rgba(0,0,0,.10);
  pointer-events:all;
  display:flex;align-items:flex-start;gap:10px;
  animation:tower-toast-in .18s ease;
  transition:opacity .22s ease,transform .22s ease;
}
.tower-toast.toast-success{background:#f4faf5;color:#235b34;border-color:#d6eadb;border-left:3px solid #4caf70}
.tower-toast.toast-error  {background:#fff4f2;color:#8f2f28;border-color:#efccc7;border-left:3px solid #e06055}
.tower-toast.toast-warning{background:#fffbf0;color:#7a4f10;border-color:#f0dfa8;border-left:3px solid #e9a825}
.tower-toast-body{flex:1}
.tower-toast-body a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.tower-toast-close{
  color:var(--tower-muted,#756d62);font-size:18px;line-height:1;
  flex-shrink:0;cursor:pointer;padding:0 2px;margin-top:-1px;user-select:none;
}
.tower-toast-close:hover{color:var(--tower-ink,#1f1d1a)}
.tower-toast-hiding{opacity:0;transform:translateX(14px)}
@keyframes tower-toast-in{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:translateX(0)}}
.pill{
  display:inline-block;padding:3px 9px;border-radius:999px;font-size:13px;font-weight:600;
  background:#f5efe6;color:#5b5045;border:1px solid #e3d7c8;
  text-transform:lowercase;
}
.pill.status-succeeded{background:#edf7ef;color:#275b37;border-color:#d5e9db}
.pill.status-failed{background:#fff3f1;color:#8f2f28;border-color:#efcdc7}
.pill.status-running{background:#f3f0ec;color:#5a5148;border-color:#dfd6ca}
.pill.status-skipped_locked{background:#f8f1e6;color:#8a5a22;border-color:#ead4b3}
.pill.status-succeeded_with_errors{background:#fbf5e8;color:#8a621e;border-color:#efdfb4}
form.inline{display:inline}
.kpi{
  display:flex; align-items:flex-start; justify-content:space-between; gap:10px;
}
.kpi .value{font-size:1.35rem;font-weight:700;line-height:1.1}
.mono-pre{
  white-space:pre-wrap;
  word-break:break-word;
  background:rgba(107,92,74,.03);
  color:var(--tower-ink);
  border:1px solid var(--tower-border);
  border-radius:12px;
  padding:12px;
  font-size:.92em;
  line-height:1.45;
  margin:0;
  max-height:none;
}
.subtle{font-size:14px;color:#475569}
.section-title{display:flex;justify-content:space-between;align-items:center;gap:8px}
.section-title-heading{
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-width:0;
}
.section-title-heading h1,
.section-title-heading h2,
.section-title-heading h3,
.section-title-heading h4{
  margin:0;
}
.section-heading{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.section-heading-row{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
}
.section-eyebrow{
  font-size:12px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#857663;
  font-weight:700;
}
.section-meta{
  font-size:13px;
  color:var(--tower-muted);
}
.section-copy{
  margin-top:10px;
  color:#4b443b;
}
.page-intro{
  padding:18px 18px 16px;
}
.page-intro .section-heading{
  gap:10px;
}
.page-intro-copy{
  margin-top:12px;
  max-width:960px;
  color:#433c33;
  font-size:15px;
  line-height:1.58;
}
.page-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  justify-content:flex-end;
}
.metric-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:14px;
}
.metric-card{
  padding:14px 15px;
}
.metric-label{
  font-size:13px;
  color:#706659;
}
.metric-value{
  margin-top:4px;
  font-size:1.45rem;
  font-weight:700;
  line-height:1.05;
  color:#221f1a;
}
.metric-meta{
  margin-top:8px;
  font-size:13px;
  color:#706659;
}
.section-shell{
  padding:16px;
}
.section-stack{
  display:flex;
  flex-direction:column;
  gap:14px;
}
.section-actions-compact{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
  margin-top:10px;
}
.canonical-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:12px;
}
.canonical-tab{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:7px 12px;
  border-radius:999px;
  border:1px solid var(--tower-border-strong);
  background:#fff;
  color:var(--tower-link-hover);
  font-weight:600;
  font-size:14px;
  line-height:1.2;
  text-decoration:none;
}
.canonical-tab:hover{
  background:#f4efe7;
  border-color:#c6b8a5;
}
.canonical-tab.is-active{
  background:#2f2a24;
  border-color:#2f2a24;
  color:#fff;
}
.docs-link-button{
  padding:6px !important;
  border-radius:999px !important;
  white-space:nowrap;
  min-width:32px;
  justify-content:center;
}
.docs-link-icon{
  display:inline-flex;
  width:16px;
  height:16px;
}
.docs-link-icon svg{
  width:16px;
  height:16px;
  display:block;
}
.badge-soft{
  background:var(--tower-accent-soft); color:#5c4e3f; border:1px solid #e1d5c7;
  border-radius:999px; padding:3px 10px; font-size:13px; font-weight:600;
}
code{
  color:#5a4f43;
  background:#f4eee6;
  border:1px solid #eadfce;
  padding:1px 5px;
  border-radius:6px;
}
a{
  color:var(--tower-link);
  text-underline-offset:2px;
}
a:hover{
  color:var(--tower-link-hover);
}
.table-wrap a:not(.btn){
  color:#4c443b;
  text-decoration:underline;
  text-decoration-color:#cbbca8;
  text-underline-offset:2px;
}
.table-wrap a:not(.btn):hover{
  text-decoration-color:#8f7c64;
}
.sort-head{
  display:inline-flex;
  align-items:center;
  gap:6px;
  color:inherit;
  text-decoration:none !important;
  border-radius:8px;
  padding:2px 6px 2px 2px;
  margin-left:-2px;
  transition:background .12s ease,color .12s ease;
  white-space:nowrap;
}
.sort-head:hover{
  background:rgba(107,92,74,.06);
  color:var(--tower-link-hover);
}
.sort-head-arrow{
  display:inline-block;
  min-width:1ch;
  color:#9c8f7f;
  opacity:.18;
  transform:translateY(-1px);
  transition:opacity .12s ease,color .12s ease;
  font-size:13px;
  line-height:1;
}
.sort-head:hover .sort-head-arrow{
  opacity:.75;
  color:#7f6f5c;
}
.sort-head.is-active{
  color:var(--tower-link-hover);
  font-weight:600;
}
.sort-head.is-active .sort-head-arrow{
  opacity:1;
  color:#6b5c4a;
}
.card.card-plain{
  margin:0;
  background:var(--tower-paper-2);
}
.grid + .card{
  margin-top:16px;
}
.link-list-inline{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  row-gap:6px;
}
.link-list-inline > *{
  display:inline-flex;
  align-items:center;
}
.link-list-inline > * + *::before{
  content:"•";
  color:var(--tower-muted);
  margin:0 10px;
}
.link-list-inline a{
  color:var(--tower-link-hover);
  text-decoration:underline;
  text-decoration-color:#cbbca8;
}
.link-list-inline a:hover{
  text-decoration-color:#8f7c64;
}
.list-plain-reset{
  margin:0;
  padding-left:0;
}
.section-title.is-clickable{
  cursor:pointer;
}
.grid.grid-min-240{
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
}
.grid.grid-min-260{
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
}
.grid.grid-min-280{
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
}
.col-span-2{
  grid-column:span 2;
}
.mt-0{margin-top:0 !important}
.mt-4{margin-top:4px !important}
.mt-6{margin-top:6px !important}
.mt-8{margin-top:8px !important}
.mt-10{margin-top:10px !important}
.mt-12{margin-top:12px !important}
.mb-0{margin-bottom:0 !important}
.mb-4{margin-bottom:4px !important}
.mb-6{margin-bottom:6px !important}
.mb-8{margin-bottom:8px !important}
.mb-10{margin-bottom:10px !important}
.mb-12{margin-bottom:12px !important}
.pb-4{padding-bottom:4px !important}
.actions-end{
  align-items:end;
}
.actions-center{
  justify-content:center;
}
.form-check-row{
  display:block;
  margin-bottom:8px;
}
.form-check-inline{
  display:block;
}
.form-check-inline.mt-10{
  margin-top:10px;
}
.field-label{
  display:block;
  margin-top:8px;
}
.stack-gap-8{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.text-danger-soft{
  color:#8f2f28;
}
.pre-wrap{
  white-space:pre-wrap;
}
.inline-block{
  display:inline-block;
}
.flex-between-start{
  display:flex;
  justify-content:space-between;
  gap:8px;
  align-items:flex-start;
}
.tower-sidebar-backdrop{
  display:none;
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.35);
  z-index:25;
}
@media (max-width: 1024px) {
  .tower-shell{display:block}
  .tower-sidebar{
    position:fixed;
    left:0;
    top:0;
    bottom:0;
    transform:translateX(-105%);
    transition:transform .18s ease-in-out;
    width:260px;
    max-width:85vw;
    height:auto;
    box-shadow:0 12px 36px rgba(0,0,0,.24);
  }
  body.sidebar-open .tower-sidebar{transform:translateX(0)}
  body.sidebar-open .tower-sidebar-backdrop{display:block}
  .sidebar-toggle-mobile{display:inline-flex}
  .sidebar-toggle-desktop{display:none}
}
@media (max-width: 900px) {
  header{align-items:flex-start; flex-direction:column;}
  .header-main-nav{width:100%; flex-direction:column; align-items:stretch;}
  .header-actions{justify-content:flex-start;}
  nav{width:100%}
  .nav-user-text{display:none}
  .nav-dropdown-menu{left:0; right:auto; min-width:220px;}
  main{width:100%; padding:12px;}
  .card{padding:14px}
  .row{grid-template-columns:1fr}
  .actions{gap:6px}
  .section-heading-row{flex-direction:column;align-items:stretch}
  .page-actions{justify-content:flex-start}
  button,.actions a,.section-title > a,a.btn{width:auto}
}
