/* assets/style.css */
@font-face{
  font-family:'Gotham';
  src:url('fonts/gotham-book.woff2') format('woff2'),
      url('fonts/gotham-book.woff') format('woff');
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Gotham';
  src:url('fonts/gotham-medium.woff2') format('woff2'),
      url('fonts/gotham-medium.woff') format('woff');
  font-weight:500;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Gotham';
  src:url('fonts/gotham-bold.woff2') format('woff2'),
      url('fonts/gotham-bold.woff') format('woff');
  font-weight:700;
  font-style:normal;
  font-display:swap;
}

:root{
  --orange: #ff5722;
  --orange-deep: #ff4713;
  --ink: #434b51;
  --ink-soft: #767e84;
  --paper: #ffffff;
  --mist: #f3f4f5;
  --line: #e2e4e6;
  --good: #2f8f5b;
  --warn: #c1521c;
  --font: 'Gotham', "Helvetica Neue", Helvetica, Arial, sans-serif;
}

*{box-sizing:border-box;}
.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;
}
body{
  margin:0;
  font-family:var(--font);
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
}
.app{max-width:1180px;margin:0 auto;padding:0 32px 96px;}
.app-fluid{max-width:none;padding:0 40px 96px;}

header.top{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;row-gap:10px;
  padding:22px 0;border-bottom:1px solid var(--line);
  margin-bottom:40px;
}
.app-fluid header.top{position:sticky;top:0;z-index:30;background:var(--paper);}
.brand{display:flex;align-items:center;gap:16px;}
.brand svg{display:block;height:26px;width:auto;}
.brand svg path{fill:var(--ink);}
.brand svg rect{fill:var(--orange-deep);}
.brand .divider{width:1px;height:20px;background:var(--line);}
.brand .app-name{
  font-size:13px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);
}
.top-nav{display:flex;gap:12px;margin-left:auto;flex-wrap:wrap;}
.nav-btn{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font);font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  text-decoration:none;padding:9px 16px;border:1px solid transparent;
  transition:background .15s ease, transform .1s ease;
}
.nav-btn svg{width:15px;height:15px;flex-shrink:0;}
.nav-btn:active{transform:translateY(1px);}
.nav-btn--dark{background:var(--ink);color:#fff;}
.nav-btn--dark:hover{background:#2f363b;}
.nav-btn--orange{background:var(--orange);color:#fff;}
.nav-btn--orange:hover{background:var(--orange-deep);}
.nav-btn--outline-dark{background:var(--paper);color:var(--ink);border-color:var(--ink);transition:background .15s ease, color .15s ease, transform .1s ease;}
.nav-btn--outline-dark:hover{background:var(--ink);color:#fff;}
.nav-btn--outline-orange{background:var(--paper);color:var(--orange);border-color:var(--orange);transition:background .15s ease, color .15s ease, transform .1s ease;}
.nav-btn--outline-orange:hover{background:var(--orange);color:#fff;}

.back-link{
  display:inline-flex;align-items:center;gap:6px;margin-bottom:14px;
  font-size:12.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--ink-soft);text-decoration:none;
}
.back-link:hover{color:var(--orange);}

h1.page-title{font-size:30px;font-weight:700;margin:0 0 26px;text-wrap:balance;letter-spacing:-.015em;}
h1.page-title:has(+ p.page-sub){margin-bottom:6px;}
p.page-sub{font-size:14.5px;color:var(--ink-soft);margin:0 0 36px;max-width:62ch;line-height:1.6;}

.dash-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:32px;}
.dash-intro .page-sub{margin-bottom:0;}
.export-actions{display:flex;gap:12px;flex-wrap:wrap;flex-shrink:0;padding-top:2px;}
.admin-overview-intro{margin-bottom:36px;}

.btn-outline{
  font-family:var(--font);background:var(--paper);color:var(--ink);border:1px solid var(--line);
  font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  padding:10px 18px;cursor:pointer;display:inline-block;text-decoration:none;
  transition:border-color .15s ease, color .15s ease;
}
.btn-outline:hover{border-color:var(--orange);color:var(--orange);}
.btn-outline:disabled{color:var(--ink-soft);border-color:var(--line);cursor:not-allowed;}
.btn-outline:disabled:hover{border-color:var(--line);color:var(--ink-soft);}

.kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:48px;}
.kpi{background:var(--paper);padding:22px 20px;border-left:3px solid var(--orange);display:flex;flex-direction:column;gap:10px;min-height:150px;}
.kpi .label{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);}
.kpi .winner{font-size:19px;font-weight:500;line-height:1.25;text-wrap:balance;}
.kpi .metric{
  margin-top:auto;font-size:14.5px;color:var(--ink);font-variant-numeric:tabular-nums;
  background:var(--mist);padding:9px 11px;line-height:1.35;
}
.kpi .metric b{color:var(--orange-deep);font-weight:700;font-size:15.5px;}
.kpi .empty{color:var(--ink-soft);font-style:italic;font-size:13px;}

.admin-performance-report{margin-bottom:48px;border:1px solid var(--line);border-radius:0;overflow:hidden;background:#f8f9f9;scroll-margin-top:104px;}
.admin-report-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:24px 28px 22px;background:var(--paper);border-bottom:1px solid var(--line);}
.admin-report-kicker,.admin-section-heading > div > span{display:block;margin-bottom:7px;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--orange-deep);}
.admin-report-header h2{margin:0;font-size:19px;font-weight:600;line-height:1.3;letter-spacing:0;}
.admin-report-status{display:inline-flex;align-items:center;gap:7px;padding-top:2px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;}
.admin-report-status i{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 4px rgba(47,143,91,.1);}
.admin-impact-overview{display:grid;grid-template-columns:minmax(280px,1.3fr) 1fr;background:var(--ink);color:var(--paper);}
.admin-impact-primary{padding:28px;display:flex;flex-direction:column;justify-content:center;gap:8px;}
.admin-impact-primary > span,.admin-impact-overview dt{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:rgba(255,255,255,.62);}
.admin-impact-primary strong{font-size:38px;line-height:1;font-weight:500;letter-spacing:0;font-variant-numeric:tabular-nums;white-space:nowrap;}
.admin-impact-primary strong small{font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--orange);}
.admin-impact-overview dl{display:grid;grid-template-columns:repeat(2,1fr);margin:0;border-left:1px solid rgba(255,255,255,.14);}
.admin-impact-overview dl > div{padding:28px 24px;display:flex;flex-direction:column;justify-content:center;gap:9px;}
.admin-impact-overview dl > div + div{border-left:1px solid rgba(255,255,255,.14);}
.admin-impact-overview dt{margin:0;}
.admin-impact-overview dd{margin:0;font-size:25px;font-weight:500;font-variant-numeric:tabular-nums;}
.admin-impact-overview dd small{font-size:12px;color:rgba(255,255,255,.62);}
.admin-report-body{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(260px,.75fr);gap:0;align-items:stretch;}
.admin-tool-ranking{padding:26px 28px 30px;min-width:0;background:var(--paper);}
.admin-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:18px;}
.admin-section-heading > div > span{margin-bottom:5px;}
.admin-section-heading h3{margin:0;font-size:15px;font-weight:600;letter-spacing:0;}
.admin-section-heading > span{font-size:11px;color:var(--ink-soft);white-space:nowrap;}
.admin-ranking-list{display:flex;flex-direction:column;}
.admin-ranking-row{display:grid;grid-template-columns:34px minmax(0,1fr) minmax(112px,auto);gap:14px;align-items:center;padding:14px 0;border-top:1px solid var(--line);}
.admin-ranking-row:last-child{border-bottom:1px solid var(--line);}
.admin-rank-number{font-size:11px;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
.admin-rank-detail{min-width:0;}
.admin-rank-title{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:9px;}
.admin-rank-title strong{font-size:13.5px;font-weight:600;overflow-wrap:anywhere;}
.admin-rank-title span{font-size:10.5px;color:var(--ink-soft);white-space:nowrap;}
.admin-rank-track{height:5px;background:var(--mist);overflow:hidden;border-radius:1px;}
.admin-rank-track i{display:block;height:100%;background:var(--orange);border-radius:1px;}
.admin-rank-value{text-align:right;font-variant-numeric:tabular-nums;}
.admin-rank-value strong{display:block;font-size:12.5px;font-weight:700;white-space:nowrap;}
.admin-rank-value span{display:block;margin-top:4px;font-size:10.5px;color:var(--ink-soft);}
.admin-standouts{padding:26px 28px 30px;background:#f3f4f4;border-left:1px solid var(--line);display:flex;flex-direction:column;}
.admin-standouts dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:0;margin:0;flex:1;}
.admin-standouts dl > div{padding:14px 14px 16px 0;border-top:1px solid var(--line);min-width:0;}
.admin-standouts dl > div:nth-child(even){padding-left:14px;padding-right:0;border-left:1px solid var(--line);}
.admin-standouts dl > div:nth-last-child(-n+2){border-bottom:1px solid var(--line);}
.admin-standouts dt{font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);}
.admin-standouts dd{margin:7px 0 5px;font-size:13.5px;font-weight:600;line-height:1.3;overflow-wrap:anywhere;}
.admin-standouts small{font-size:10.5px;color:var(--orange-deep);font-variant-numeric:tabular-nums;}

.chart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:48px;}
.chart-card{background:var(--paper);padding:20px;display:flex;flex-direction:column;gap:12px;min-width:0;}
.chart-card .table-wrap{min-width:0;}
.chart-card h3{font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin:0;}
.chart-card .chart-canvas-wrap{position:relative;height:220px;}
.chart-card .empty{color:var(--ink-soft);font-style:italic;font-size:13px;}

.range-toggle{display:inline-flex;background:var(--mist);border-radius:7px;padding:3px;gap:1px;}
.range-btn{
  border:none;background:none;color:var(--ink-soft);
  font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:5px 12px;border-radius:5px;cursor:pointer;
  transition:background .15s ease,color .15s ease;
}
.range-btn.is-active{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px rgba(24,26,28,.12);}
.range-btn:not(.is-active):hover{color:var(--orange);}

.activity-tag{
  font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:var(--ink-soft);white-space:nowrap;
}
.activity-tag.tag-submitted{color:var(--orange-deep);}

.status-pill{
  display:inline-block;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  padding:3px 8px;border-radius:3px;background:var(--mist);color:var(--ink-soft);
}
.status-pill.status-verified{background:#e5f3e8;color:#1c7a34;}
.status-pill.status-locked{background:#fdeceb;color:var(--warn);}
.status-pill.status-pending{background:var(--mist);color:var(--ink-soft);}
.status-pill.status-expired{background:var(--mist);color:var(--ink-soft);}

/* align-items:stretch (the default - no override here) lets the sidebar
   match whichever column is taller, which is the main content on most
   pages. A min-height tied to 100vh would instead force the whole row to
   full viewport height even on short pages (e.g. Activity History),
   leaving blank space below the actually-shorter content column. */
.dash-layout{display:flex;gap:36px;}
.dash-sidebar{
  flex:0 0 208px;position:sticky;top:24px;display:flex;flex-direction:column;gap:2px;
}
.app-fluid .dash-sidebar{top:98px;}
.dash-nav-item{
  display:flex;align-items:center;gap:10px;text-align:left;background:none;border:none;
  border-left:3px solid transparent;padding:11px 14px;font-size:13.5px;font-weight:500;
  color:var(--ink-soft);cursor:pointer;border-radius:0 4px 4px 0;
}
.dash-nav-item:hover{background:var(--mist);color:var(--ink);}
.dash-nav-item.is-active{background:var(--mist);color:var(--ink);font-weight:700;border-left-color:var(--orange);}
.dash-nav-item .count{
  margin-left:auto;font-size:11px;font-weight:700;color:var(--ink-soft);background:var(--paper);
  border:1px solid var(--line);border-radius:999px;padding:1px 7px;
}
.dash-nav-parent .dash-nav-caret{
  margin-left:auto;width:7px;height:7px;flex-shrink:0;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:rotate(45deg);transition:transform .15s ease;
}
.dash-nav-parent[aria-expanded="true"] .dash-nav-caret{transform:rotate(-135deg);}
.dash-nav-parent.is-active{background:none;color:var(--ink-soft);font-weight:500;border-left-color:transparent;}
.dash-nav-children{display:none;flex-direction:column;gap:2px;}
.dash-nav-children.is-open{display:flex;}
.dash-nav-child{padding-left:30px;font-size:13px;}
.dash-logout-form{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);}
.dash-logout-form .dash-nav-item{width:100%;font-family:var(--font);}
.dash-logout-button{
  color:var(--ink-soft);
  font-weight:500;
}
.dash-logout-button svg{width:18px;height:18px;flex:0 0 18px;display:block;}
.dash-logout-button:hover{color:#a8391f;background:var(--mist);}
.dash-logout-button:focus-visible{outline:2px solid #c65336;outline-offset:2px;}
.dash-content{flex:1;min-width:0;}
.dash-section{display:none;}
.dash-section.is-active{display:block;}
.dash-glimpse-link{font-size:12.5px;font-weight:700;color:var(--orange-deep);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;}
.dash-glimpse-link:hover{text-decoration:underline;}

.block{margin-bottom:52px;}
.block-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.block-head h2{font-size:15px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin:0;}
.block-head span{
  font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink-soft);background:var(--mist);border-left:2px solid var(--orange);
  padding:6px 12px;
}

.table-wrap{
  overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;
}
.table-wrap::-webkit-scrollbar{height:6px;}
.table-wrap::-webkit-scrollbar-track{background:transparent;}
.table-wrap::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px;}
.table-wrap::-webkit-scrollbar-thumb:hover{background:var(--ink-soft);}
table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:720px;}
thead th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-soft);background:var(--mist);padding:11px 16px;border-bottom:1px solid var(--line);white-space:nowrap;}
tbody td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle;}
tbody tr:last-child td{border-bottom:0;}
tbody tr:hover{background:var(--mist);}
td.num, th.num{text-align:right;font-variant-numeric:tabular-nums;}
td.rank{color:var(--ink-soft);font-variant-numeric:tabular-nums;width:28px;}
.tool-name{font-weight:500;}
.negative{color:var(--warn);}
.table-extra-row.is-hidden{display:none;}
.table-view-more{
  font-family:var(--font);background:var(--paper);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;padding:12px;margin-top:14px;cursor:pointer;
  font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);
  transition:background-color .15s ease, border-color .15s ease, color .15s ease;
}
.table-view-more:hover{border-color:var(--orange);color:var(--orange-deep);}
.table-view-more-icon{
  flex-shrink:0;width:8px;height:8px;border:solid currentColor;border-width:0 1.5px 1.5px 0;
  transform:rotate(45deg);transition:transform .2s ease;
}
.table-view-more[aria-expanded="true"] .table-view-more-icon{transform:rotate(-135deg);}

.form-banner{
  display:block;width:100%;height:auto;border:1px solid var(--line);margin-bottom:40px;
}

.form-page-intro{max-width:640px;margin:0 auto 32px;text-align:center;}
.form-page-intro .page-sub{margin-left:auto;margin-right:auto;}

.alert-banner{
  max-width:640px;margin:0 auto 24px;padding:14px 18px;
  background:color-mix(in srgb, var(--warn) 8%, var(--paper));
  border-left:3px solid var(--warn);color:var(--warn);font-size:13.5px;
}

.form-shell{
  border:1px solid var(--line);padding:36px;max-width:640px;
  box-shadow:0 16px 40px -24px color-mix(in srgb, var(--ink) 30%, transparent);
}
.form-page .form-shell{
  margin:0 auto;
  animation:form-shell-in .5s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@media (prefers-reduced-motion: reduce){
  .form-page .form-shell{animation:none;}
}
@keyframes form-shell-in{
  from{opacity:0;transform:translateY(10px);}
  to{opacity:1;transform:translateY(0);}
}
.field{margin-bottom:22px;}
.field label{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.add-form{display:flex;align-items:flex-end;flex-wrap:wrap;gap:14px;margin-bottom:28px;}
.add-form .field{margin-bottom:0;width:320px;max-width:100%;}
.add-form .field.field-sm{width:170px;}
.add-form .field.field-lg{width:280px;}
.add-form .submit{flex-shrink:0;white-space:nowrap;}

.form-divider{border:none;border-top:1px solid var(--line);margin:24px 0 20px;}
.filter-row{
  display:flex;align-items:center;gap:10px;
  margin-bottom:20px;padding:14px 16px;
  background:var(--mist);border-radius:8px;
}
.filter-row select, .filter-row input[type=text]{background:var(--paper);}
.filter-row select{width:190px;flex-shrink:0;}
.filter-row input[type=text]{width:280px;flex-shrink:0;}
.filter-count{
  margin-left:auto;flex-shrink:0;font-size:11.5px;font-weight:700;color:var(--ink-soft);
  background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:5px 12px;white-space:nowrap;
}
tr.is-filtered-out{display:none;}
input[type=text], input[type=number], input[type=password], select{
  width:100%;font-family:var(--font);font-size:14.5px;color:var(--ink);
  border:1px solid var(--line);background:var(--paper);padding:11px 13px;
  transition:border-color .15s ease, outline-color .15s ease;
}
input:focus, select:focus{outline:2px solid var(--orange);outline-offset:1px;border-color:var(--orange);}
.field-error{color:var(--warn);font-size:12.5px;margin:6px 0 0;}
.field-hint{color:var(--ink-soft);font-size:12.5px;margin:6px 0 0;}
.verified-session-note{
  display:inline-flex;align-items:center;gap:7px;max-height:34px;overflow:hidden;
  margin-top:9px;padding:6px 10px 6px 8px;border:1px solid color-mix(in srgb, var(--good) 30%, var(--line));
  border-radius:999px;background:color-mix(in srgb, var(--good) 9%, var(--paper));
  color:color-mix(in srgb, var(--good) 68%, var(--ink));font-size:11.5px;font-weight:500;line-height:1;
  box-shadow:0 8px 22px -18px color-mix(in srgb, var(--good) 60%, transparent);
  animation:verified-note-hide .55s ease 5s forwards;
}
.verified-session-note svg{
  width:15px;height:15px;flex-shrink:0;border-radius:50%;
  background:var(--good);fill:#fff;padding:2px;
}
@keyframes verified-note-hide{
  to{opacity:0;max-height:0;margin-top:0;padding-top:0;padding-bottom:0;border-width:0;visibility:hidden;}
}
.otp-sent-to{
  margin:10px 0 0;color:var(--ink);background:var(--mist);border-left:3px solid var(--orange);
  padding:9px 12px;font-size:13px;line-height:1.5;
}
.otp-sent-to strong{font-weight:700;}

.otp-code-boxes{display:flex;gap:10px;justify-content:center;}
.otp-code-boxes input.otp-code-box{
  width:44px;height:52px;flex-shrink:0;text-align:center;
  font-family:var(--font);font-size:22px;font-weight:700;color:var(--ink);
  border:1px solid var(--line);background:var(--paper);padding:0;
  transition:border-color .15s ease, outline-color .15s ease;
}
.otp-code-boxes input.otp-code-box:focus{outline:2px solid var(--orange);outline-offset:1px;border-color:var(--orange);}
input[readonly]{background:var(--mist);color:var(--ink-soft);cursor:not-allowed;}
.rate-note{font-size:12.5px;color:var(--ink-soft);line-height:1.5;}
.rate-note:not(:empty){
  margin-top:8px;color:var(--ink);background:var(--mist);border-left:3px solid var(--orange);
  padding:9px 12px;
}

.tool-dropdown{position:relative;}
.tool-dropdown-control{position:relative;}
.tool-dropdown-input{
  width:100%;font-family:var(--font);font-size:14.5px;color:var(--ink);
  border:1px solid var(--line);background:var(--paper);padding:11px 34px 11px 13px;
  transition:border-color .15s ease, outline-color .15s ease;
}
.tool-dropdown-input:hover{border-color:var(--orange);}
.tool-dropdown-input:focus, .tool-dropdown-input[aria-expanded="true"]{
  outline:2px solid var(--orange);outline-offset:1px;border-color:var(--orange);
}
.tool-dropdown-input::placeholder{color:var(--ink-soft);opacity:1;}
.tool-dropdown-caret{
  position:absolute;top:50%;right:14px;transform:translateY(-65%) rotate(45deg);
  width:9px;height:9px;border:solid var(--ink-soft);border-width:0 1.5px 1.5px 0;
  pointer-events:none;
}
.tool-dropdown-panel{
  position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:10;
  background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px;
  box-shadow:0 20px 40px -20px color-mix(in srgb, var(--ink) 35%, transparent);
}
.tool-dropdown-panel.is-hidden{display:none;}

.tools-grid{
  display:flex;flex-direction:column;gap:2px;max-height:260px;overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent;
}
.tools-grid::-webkit-scrollbar{width:6px;}
.tools-grid::-webkit-scrollbar-track{background:transparent;}
.tools-grid::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px;}
.tools-grid::-webkit-scrollbar-thumb:hover{background:var(--ink-soft);}
.tools-grid .tool-check{
  display:flex;align-items:center;gap:11px;
  border-radius:7px;padding:10px 12px;font-size:13.5px;font-weight:500;color:var(--ink);
  text-transform:none;letter-spacing:0;
  cursor:pointer;white-space:nowrap;
  transition:background-color .15s ease, color .15s ease;
}
.tool-check:hover{background:var(--mist);}
.tool-check.is-hidden{display:none;}
.tool-check input{
  appearance:none;-webkit-appearance:none;margin:0;width:17px;height:17px;flex-shrink:0;
  border:1.5px solid var(--line);border-radius:5px;position:relative;cursor:pointer;
  transition:background-color .15s ease, border-color .15s ease;
}
.tool-check:hover input{border-color:var(--ink-soft);}
.tool-check input:checked{background:var(--orange);border-color:var(--orange);}
.tool-check input:checked::after{
  content:'';position:absolute;left:5px;top:2px;width:4px;height:8px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);
}
.tool-check:has(input:checked){background:color-mix(in srgb, var(--orange) 10%, transparent);color:var(--orange-deep);font-weight:600;}
.tool-check:has(input:checked):hover{background:color-mix(in srgb, var(--orange) 16%, transparent);}
.tools-empty{font-size:12.5px;color:var(--ink-soft);font-style:italic;margin:10px 0 0;}
.tools-empty.is-hidden{display:none;}
.primary-row{margin-top:18px;padding-top:16px;border-top:1px dashed var(--line);}
.primary-row.is-hidden{display:none;}
.primary-row-label{
  font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);
  margin-bottom:4px;
}
.primary-row-hint{font-size:12.5px;color:var(--ink-soft);line-height:1.5;margin:0 0 12px;}

.primary-options{display:flex;flex-wrap:wrap;gap:8px;}
.primary-option{
  display:inline-flex;align-items:center;gap:7px;
  border:1px solid var(--line);padding:8px 13px;font-size:13px;font-weight:500;color:var(--ink);
  cursor:pointer;white-space:nowrap;
  transition:background-color .15s ease, border-color .15s ease, color .15s ease;
}
.primary-option:hover{border-color:var(--orange-deep);}
.primary-option input{
  appearance:none;-webkit-appearance:none;margin:0;width:14px;height:14px;flex-shrink:0;
  border:1.5px solid var(--ink-soft);border-radius:50%;position:relative;cursor:pointer;transform:translateY(2.75px);
}
.primary-option input:checked{background:var(--orange-deep);border-color:var(--orange-deep);}
.primary-option input:checked::after{
  content:'';position:absolute;top:3px;left:3px;width:6px;height:6px;border-radius:50%;background:#fff;
}
.primary-option:has(input:checked){background:var(--orange-deep);border-color:var(--orange-deep);color:#fff;}

.savings-preview{display:flex;gap:28px;background:var(--mist);border-left:3px solid var(--orange);padding:16px 20px;margin-bottom:24px;}
.savings-preview div span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft);margin-bottom:4px;}
.savings-preview div b{font-size:19px;font-variant-numeric:tabular-nums;}

.submit, a.submit{
  font-family:var(--font);background:var(--orange);color:#fff;border:0;
  font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:14px 30px;cursor:pointer;display:inline-block;text-decoration:none;
  transition:background-color .15s ease, transform .1s ease;
}
.submit:hover, a.submit:hover{background:var(--orange-deep);color:#fff;}
.submit:active, a.submit:active{transform:translateY(1px);}
.submit.btn-danger{background:var(--warn);}
.submit.btn-danger:hover{background:color-mix(in srgb, var(--warn) 80%, black);}

.modal-overlay{
  position:fixed;inset:0;background:color-mix(in srgb, var(--ink) 55%, transparent);
  display:flex;align-items:center;justify-content:center;z-index:50;padding:20px;
}
.modal-overlay.is-hidden{display:none;}
.modal{
  background:#fff;border:1px solid var(--line);max-width:420px;width:100%;padding:28px;
  box-shadow:0 24px 60px -20px rgba(0,0,0,.35);
}
.modal h2{font-size:18px;font-weight:500;margin:0 0 8px;}
.modal p{font-size:13.5px;color:var(--ink-soft);margin:0 0 24px;line-height:1.5;}
.modal-actions{display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;}

.thank-you-shell{max-width:480px;}
.form-page .thank-you-shell{margin:0 auto;text-align:center;}
.form-page .thank-you-shell .savings-preview{justify-content:center;}
.thank-you-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}

.admin-actions{display:flex;gap:8px;align-items:center;}
.admin-actions form{display:inline-flex;margin:0;}
.link-btn{
  font-family:var(--font);background:none;border:0;padding:0;cursor:pointer;
  font-size:12.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);
  text-decoration:underline;
}
.link-btn:hover{color:var(--orange);}
.link-btn.danger:hover{color:var(--warn);}
.action-btn{
  --action-color:var(--ink-soft);
  --action-bg:color-mix(in srgb, var(--action-color) 10%, white);
  width:34px;height:34px;border:1px solid color-mix(in srgb, var(--action-color) 34%, white);
  border-radius:7px;background:var(--action-bg);color:var(--action-color);
  display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;text-decoration:none;
  transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .1s ease;
}
.action-btn svg{width:17px;height:17px;display:block;}
.action-btn:hover{
  background:var(--action-color);border-color:var(--action-color);color:#fff;
  transform:translateY(-1px);
}
.action-btn:focus-visible{outline:3px solid color-mix(in srgb, var(--action-color) 28%, transparent);outline-offset:2px;}
.action-btn:active{transform:translateY(0);}
.action-btn--edit{--action-color:#5084c1;}
.action-btn--remove{--action-color:#b66a00;}
.action-btn--delete{--action-color:#7a2917;}
.auth-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin-top:18px;}
.auth-actions form{display:inline;}

.form-disabled{opacity:.35;filter:blur(1px);pointer-events:none;user-select:none;}
.otp-modal-backdrop{
  position:fixed;top:var(--header-height,0);left:0;right:0;bottom:0;background:rgba(30,30,32,.55);
  display:flex;align-items:center;justify-content:center;z-index:100;padding:24px;
  pointer-events:none;
}
.otp-modal{
  background:var(--paper);border-radius:8px;width:100%;max-width:820px;min-height:430px;
  box-shadow:0 24px 60px rgba(0,0,0,.3);
  pointer-events:auto;display:grid;grid-template-columns:minmax(280px, .9fr) minmax(360px, 1fr);overflow:hidden;
}
.otp-modal-media{
  position:relative;min-height:430px;padding:34px;display:flex;align-items:flex-end;overflow:hidden;
  background:var(--ink);color:#fff;
}
.otp-modal-media::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(30,30,32,.08) 0%, rgba(30,30,32,.68) 100%);
}
.otp-modal-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.otp-modal-media-copy{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px;}
.otp-modal-media-logo svg{display:block;width:92px;height:auto;}
.otp-modal-media-logo svg path{fill:#fff;}
.otp-modal-media-logo svg rect{fill:var(--orange-deep);}
.otp-modal-media-copy strong{
  max-width:12ch;font-size:27px;line-height:1.12;font-weight:400;letter-spacing:.08em;color:#fff;
}
.otp-modal-panel{padding:42px 42px 36px;display:flex;flex-direction:column;justify-content:center;}
.otp-modal h2{margin:0 0 8px;font-size:20px;}
.otp-modal p.page-sub,.otp-modal-panel > p{margin:0 0 22px;color:var(--ink-soft);font-size:14px;line-height:1.5;}
.otp-modal .submit{width:100%;}

.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--mist);}
.auth-card{background:var(--paper);border-radius:8px;padding:36px;width:100%;max-width:400px;box-shadow:0 12px 40px rgba(0,0,0,.12);}
.auth-card .brand{justify-content:center;margin-bottom:28px;}
.auth-card h1{margin:0 0 8px;font-size:20px;text-align:center;}
.auth-card .auth-sub{margin:0 0 24px;color:var(--ink-soft);font-size:14px;line-height:1.5;text-align:center;}
.auth-card .submit{width:100%;}
.auth-card .field-error{text-align:center;margin-bottom:16px;}

.edit-layout{display:flex;gap:32px;align-items:flex-start;}
.edit-layout .form-shell{flex-shrink:0;}
.entry-history{flex:1;min-width:280px;border:1px solid var(--line);padding:28px;}
.entry-history h2{font-size:13px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;margin:0 0 20px;}
.entry-history-empty{font-size:13px;color:var(--ink-soft);font-style:italic;margin:0;}

.empty-state{
  display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;
  padding:64px 24px;border:1px solid var(--line);
}
.empty-state h2{margin:0;font-size:18px;color:var(--ink);}
.empty-state p{margin:0;max-width:40ch;font-size:14px;line-height:1.6;color:var(--ink-soft);}
.empty-state .submit{margin-top:6px;}

.entry-history-list{list-style:none;margin:0;padding:0;}
.history-entry{position:relative;padding:0 0 24px 20px;}
.history-entry:last-child{padding-bottom:0;}
.history-entry::before{
  content:'';position:absolute;left:0;top:5px;width:8px;height:8px;
  border-radius:50%;background:var(--orange);
}
.history-entry:not(:last-child)::after{
  content:'';position:absolute;left:3.5px;top:15px;bottom:-6px;width:1px;background:var(--line);
}
.history-entry-time{
  font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ink-soft);font-variant-numeric:tabular-nums;margin-bottom:12px;
}

.diff-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;}
.diff-row{font-size:13px;}
.diff-label{
  display:flex;align-items:center;gap:6px;font-size:10.5px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:3px;
}
.diff-row--auto .diff-label::after{
  content:'Auto-calculated';font-size:9px;font-weight:700;letter-spacing:.04em;
  text-transform:none;color:var(--orange-deep);background:color-mix(in srgb, var(--orange) 12%, transparent);
  padding:2px 6px;border-radius:20px;
}
.diff-values{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;line-height:1.55;}
.diff-old{color:var(--ink-soft);text-decoration:line-through;text-decoration-color:var(--line);}
.diff-arrow{color:var(--orange);font-weight:700;flex-shrink:0;}
.diff-new{font-weight:500;color:var(--ink);}

@media (max-width: 860px){
  /* Remove the header's bottom margin so the tab row's natural (unscrolled)
     position exactly matches its sticky "stuck" position - otherwise the
     two differ by that margin, and the Activity History dropdown below
     (which assumes the stuck position to compute its fixed offset) would
     overlap and hide the tab row's own toggle button before any scrolling
     has happened, leaving no way to close it. */
  header.top{margin-bottom:0;}
  .kpi-row{grid-template-columns:repeat(2,1fr);}
  .admin-report-body{grid-template-columns:1fr;}
  .admin-standouts{border-left:none;border-top:1px solid var(--line);}
  .chart-grid{grid-template-columns:1fr;}
  .field-row{grid-template-columns:1fr;}
  .app{padding:0 18px 64px;}
  .form-shell{padding:24px;}
  .dash-intro{flex-direction:column;}
  .edit-layout{flex-direction:column;}
  .entry-history{width:100%;}
  .dash-layout{flex-direction:column;gap:20px;}
  .dash-sidebar, .app-fluid .dash-sidebar{
    position:sticky;top:71px;z-index:20;flex-direction:row;flex:none;width:100%;overflow-x:auto;gap:0;
    border-bottom:1px solid var(--line);padding-bottom:0;min-height:0;background:var(--paper);
    scrollbar-width:none;-ms-overflow-style:none;
  }
  .dash-sidebar::-webkit-scrollbar{display:none;}
  .dash-nav-item{border-left:none;border-bottom:3px solid transparent;border-radius:0;white-space:nowrap;}
  .dash-nav-item.is-active{border-left-color:transparent;border-bottom-color:var(--orange);}
  /* Inside the mobile horizontal tab row, the Activity History children
     drop down as a full-width panel below the whole row instead of
     appearing inline next to the toggle button. position:fixed (rather
     than absolute) is used so the panel escapes the tab row's own
     overflow-x:auto clipping - a row that scrolls on one axis is forced
     by the spec to clip the other axis too, which would otherwise hide
     the dropdown entirely. 117px = sticky header (71px) + tab row (46px). */
  .dash-nav-children{
    position:fixed;top:117px;left:14px;right:14px;z-index:21;
    background:var(--paper);border:1px solid var(--line);
    box-shadow:0 12px 24px -12px rgba(24,26,28,.25);padding:4px 0;
  }
  .dash-nav-child{padding-left:14px;}
  .dash-logout-form{margin-top:0;margin-left:auto;padding-top:0;border-top:none;flex-shrink:0;}
  .dash-logout-form .dash-nav-item{width:auto;}
  .otp-modal{max-width:520px;min-height:0;grid-template-columns:1fr;}
  .otp-modal-media{min-height:210px;padding:24px;}
  .otp-modal-media-copy strong{max-width:none;font-size:28px;line-height:1.05;}
  .otp-modal-panel{padding:30px 28px 28px;}
}

@media (max-width: 560px){
  .app{padding:0 14px 48px;}
  .kpi-row{grid-template-columns:1fr;}
  .admin-report-header{padding:20px;}
  .admin-impact-overview{grid-template-columns:1fr;}
  .admin-impact-primary{padding:24px 20px;}
  .admin-impact-primary strong{font-size:32px;}
  .admin-impact-overview dl{border-left:none;border-top:1px solid rgba(255,255,255,.14);}
  .admin-impact-overview dl > div{padding:20px;}
  .admin-tool-ranking,.admin-standouts{padding:22px 20px 24px;}
  .admin-ranking-row{grid-template-columns:26px minmax(0,1fr);}
  .admin-rank-value{grid-column:2;text-align:left;display:flex;align-items:baseline;gap:10px;}
  .admin-rank-title{align-items:flex-start;flex-direction:column;gap:3px;}
  .savings-preview{flex-direction:column;gap:14px;}
  table{font-size:12.5px;}
  thead th{padding:9px 11px;}
  tbody td{padding:10px 11px;}
  input[type=text], input[type=number], input[type=password], select{padding:13px;}
  .tool-check{padding:9px 12px;}
  .otp-modal-backdrop{padding:14px;}
  .otp-modal-media{min-height:160px;}
  .otp-modal-panel{padding:24px 20px 22px;}
  .otp-code-boxes{gap:6px;}
  .otp-code-boxes input.otp-code-box{width:38px;height:48px;}
}
