/*
Theme Name: Bobby KB
Theme URI: https://example.com
Author: Custom Build
Description: A mobile-first, app-style knowledge base theme for British police forces. Login-gated, icon-led categories, expandable articles with red/amber/green status flags.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: bobby-kb
*/

/* -------------------------------------------------------
   TOKENS
------------------------------------------------------- */
:root{
  --navy-950:#050f1f;
  --navy-900:#0a1c33;
  --navy-800:#0f2a4a;
  --navy-700:#123663;
  --paper:#f4f6f9;
  --paper-dim:#e7ebf1;
  --white:#ffffff;
  --brand-blue:#0067df;
  --brand-blue-dark:#004ea6;
  --brand-blue-light:#7eb0ff;
  --brand-grey:#8b9cad;
  --hivis:#0067df;      /* kept as an alias so accent components stay in one blue */
  --hivis-dark:#004ea6;
  --ink:#0a1c33;
  --muted:#5c6b78;
  --line:#dde1e8;

  --green:#1f7a3d;
  --green-bg:#e6f4ea;
  --blue-bg:#e3edfd;
  --orange:#c66a00;
  --orange-bg:#fdf0dd;
  --red:#b3261e;
  --red-bg:#fbe7e5;
  --yellow:#b8960b;
  --yellow-bg:#faf3d9;

  --radius-lg:22px;
  --radius-md:14px;
  --radius-sm:9px;
  --shadow-soft:0 10px 30px rgba(8,17,32,.14);
  --shadow-tap:0 2px 8px rgba(8,17,32,.18);

  --font-display:'Oswald', 'Arial Narrow', sans-serif;
  --font-body:'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

*,*::before,*::after{box-sizing:border-box;}
/* These few tag-level rules are front-end page styling, not meant for
   wp-admin — this stylesheet is also loaded on the guide builder admin
   screen (see inc/guides.php), and wp-admin's <body> always carries a
   "wp-admin" class, so :not(.wp-admin) keeps these from ever touching
   wp-admin's own chrome (menus, admin bar, etc.) while leaving every
   other front-end page untouched. Wrapped in :where(...) so this scoping
   adds ZERO extra specificity — otherwise "body:not(.wp-admin) h1" would
   outrank the plain "h1" it replaces and start beating more specific
   front-end rules (e.g. a tile's own label color) that used to win against
   it. The guide builder re-declares the handful of these it actually
   needs, scoped under .kb-admin-guide-scope, in its own enqueue hook. */
:where(html:not(.wp-admin)){-webkit-text-size-adjust:100%;overflow-x:hidden;max-width:100%;}
:where(body:not(.wp-admin)){
  margin:0;
  max-width:100%;
  overflow-x:hidden;
  font-family:var(--font-body);
  background:var(--paper);
  color:var(--ink);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
:where(body:not(.wp-admin)) img{max-width:100%;display:block;}
:where(body:not(.wp-admin)) a{color:inherit;}
:where(body:not(.wp-admin)) button{font-family:inherit;}
:focus-visible{outline:3px solid var(--hivis);outline-offset:2px;}

:where(body:not(.wp-admin)) h1,
:where(body:not(.wp-admin)) h2,
:where(body:not(.wp-admin)) h3,
:where(body:not(.wp-admin)) h4{
  font-family:var(--font-display);
  font-weight:600;
  letter-spacing:.2px;
  margin:0 0 .4em;
  color:var(--navy-900);
}

.kb-shell{min-height:100dvh;display:flex;flex-direction:column;}
.kb-container{width:100%;max-width:720px;margin:0 auto;padding:0 18px;}

/* -------------------------------------------------------
   SILLITOE TARTAN STRIP — the signature British-police motif
------------------------------------------------------- */
.kb-tartan{
  height:15px;
  width:100%;
  background:repeating-linear-gradient(
    -45deg,
    var(--brand-blue) 0 34px,
    var(--white) 34px 68px
  );
}
.kb-tartan--accent{
  background:repeating-linear-gradient(
    -45deg,
    var(--navy-950) 0 10px,
    var(--hivis) 10px 20px
  );
}

/* -------------------------------------------------------
   APP BAR
------------------------------------------------------- */
.kb-appbar{
  background:var(--navy-900);
  color:var(--white);
  position:fixed;
  top:var(--kb-view-as-offset, 0px);left:0;right:0;
  z-index:40;
}
.kb-appbar-spacer{
  /* --kb-appbar-height is the fixed .kb-appbar's own real rendered height,
     measured and kept in sync by JS (it varies: a title+eyebrow makes the
     top row taller than an empty title does, the search box only shows
     when logged in, etc.) — a guessed fixed number here previously drifted
     out of sync with the real height on plenty of pages, leaving either a
     gap or an overlap below the bar. The 145px is only a same-paint
     fallback for the instant before that JS measurement runs. */
  height:calc(var(--kb-appbar-height, 145px) + var(--kb-view-as-offset, 0px));
}
.kb-appbar-row{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:12px;
  padding:14px 18px;
  padding-top:calc(14px + env(safe-area-inset-top, 0px));
  max-width:720px;
  margin:0 auto;
}
.kb-appbar-left{
  display:flex;align-items:center;gap:12px;min-width:0;
}
.kb-appbar-back{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:38px;height:38px;
  border-radius:50%;
  background:rgba(255,255,255,.08);
  color:var(--white);
  text-decoration:none;
  flex:none;
  font-size:18px;
}
.kb-appbar-back:active{background:rgba(255,255,255,.18);}
.kb-appbar-logo{
  display:flex;align-items:center;justify-self:center;
}
.kb-appbar-logo img{
  height:30px;width:auto;display:block;
}
.kb-appbar-title{
  flex:1;
  min-width:0;
}
.kb-appbar-title h1,.kb-appbar-title h2{
  color:var(--white);
  font-size:19px;
  margin:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.kb-appbar-title span{
  display:block;
  font-size:11px;
  letter-spacing:.4px;
  color:var(--brand-blue-light);
  font-weight:600;
}
.kb-appbar-user{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;font-size:13px;color:#cfd8e3;justify-self:end;min-width:0;
}
.kb-user-menu{position:relative;}
.kb-badge-mini{
  width:34px;height:34px;border-radius:50%;
  background:var(--white);color:var(--brand-blue);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-display);font-weight:700;font-size:14px;
  border:none;cursor:pointer;padding:0;
}
.kb-user-popup{
  position:absolute;top:44px;right:0;
  background:var(--white);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-soft);
  min-width:170px;
  display:flex;flex-direction:column;
  padding:6px;
  z-index:60;
}
.kb-user-popup[hidden]{display:none;}
.kb-user-popup a{
  display:flex;align-items:center;gap:8px;
  padding:10px 14px;
  border-radius:var(--radius-sm);
  color:var(--ink);
  text-decoration:none;
  font-size:14px;font-weight:600;
}
.kb-user-popup a:active{background:var(--paper-dim);}
.kb-fav-count{
  background:var(--brand-blue);color:var(--white);
  font-size:11px;font-weight:700;line-height:1;
  min-width:18px;height:18px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  padding:0 5px;flex:none;
}
.kb-logout{
  color:#cfd8e3;text-decoration:none;font-size:12px;border:1px solid rgba(255,255,255,.25);
  padding:6px 10px;border-radius:999px;white-space:nowrap;
}
.kb-logout:active{background:rgba(255,255,255,.1);}

/* -------------------------------------------------------
   LOGIN / LANDING
------------------------------------------------------- */
.kb-auth-wrap{
  flex:1;
  background:radial-gradient(circle at 50% -10%, var(--navy-700), var(--navy-950) 65%);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:32px 18px 48px;
  padding-top:max(32px, env(safe-area-inset-top, 0px));
  padding-bottom:max(48px, env(safe-area-inset-bottom, 0px));
}
.kb-auth-card{
  width:100%;max-width:400px;
  background:var(--white);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-soft);
  overflow:hidden;
  transition:max-width .2s ease;
}
.kb-auth-card--wide{max-width:640px;}
.kb-auth-top{
  padding:30px 28px 6px;
  text-align:center;
}
.kb-logo{
  max-width:220px;
  margin:0 auto 12px;
}
.kb-auth-top .kb-eyebrow{
  color:var(--muted);font-size:12px;letter-spacing:.5px;margin-bottom:4px;
}
.kb-auth-top h1{font-size:26px;margin-bottom:6px;}
.kb-auth-top p{color:var(--muted);font-size:14.5px;margin:0;}

.kb-auth-tabs{
  display:flex;
  margin:18px 28px 18px;
  background:var(--paper-dim);
  border-radius:999px;
  padding:4px;
}
.kb-auth-tab{
  flex:1;
  border:none;background:none;
  padding:10px 0;
  border-radius:999px;
  font-family:var(--font-display);
  font-size:14px;font-weight:600;letter-spacing:.2px;
  color:var(--muted);cursor:pointer;
}
.kb-auth-tab.is-active{
  background:var(--white);
  color:var(--navy-900);
  box-shadow:var(--shadow-tap);
}
.kb-auth-panel{padding:0 28px;}

.kb-auth-intro{color:var(--muted);font-size:13.5px;margin:0 0 14px;text-align:center;}
.kb-auth-panel-title{font-size:18px;margin:0 0 14px;text-align:center;}
.kb-forgot-link{
  display:block;
  margin:14px auto 0;
  background:none;border:none;
  color:var(--brand-blue);
  font-size:13px;font-weight:600;
  cursor:pointer;text-align:center;width:100%;
}

.kb-auth-form{padding:6px 0 30px;}
.kb-auth-form form p{margin:0 0 14px;}
.kb-auth-form label{
  display:block;font-size:13px;font-weight:600;color:var(--navy-900);margin-bottom:6px;
}
.kb-auth-form input[type=text],
.kb-auth-form input[type=password],
.kb-auth-form input[type=email]{
  width:100%;
  padding:13px 14px;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px;
  background:var(--paper);
}
.kb-auth-form input:focus{border-color:var(--navy-700);outline:none;box-shadow:0 0 0 3px rgba(30,64,102,.15);}
.kb-auth-form .forgetmenot{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);}
.kb-auth-form input[type=submit]{
  width:100%;
  background:var(--brand-blue);
  color:var(--white);
  border:none;
  padding:14px;
  border-radius:999px;
  font-family:var(--font-display);
  font-size:16px;
  font-weight:600;
  letter-spacing:.3px;
  cursor:pointer;
  box-shadow:var(--shadow-tap);
}
.kb-auth-form input[type=submit]:active{background:var(--brand-blue-dark);}
.kb-auth-form select{
  width:100%;
  padding:13px 14px;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px;
  background:var(--paper);
  color:var(--ink);
}
.kb-detected-force{
  display:block;
  width:100%;
  padding:13px 14px;
  border:1.5px dashed var(--line);
  border-radius:var(--radius-sm);
  font-size:14.5px;
  background:var(--paper);
  color:var(--muted);
  box-sizing:border-box;
}
.kb-detected-force.is-detected{
  border-style:solid;
  border-color:var(--brand-blue);
  color:var(--navy-900);
  font-weight:600;
}
.kb-auth-foot{
  padding:16px 28px 26px;text-align:center;color:var(--muted);font-size:12px;
}
.kb-login-msg{
  margin:0 0 16px;padding:10px 14px;border-radius:var(--radius-sm);
  background:var(--red-bg);color:var(--red);font-size:13px;
  transition:opacity 2s ease, max-height 2s ease, margin 2s ease, padding 2s ease;
  overflow:hidden;
}
.kb-login-msg--ok{
  background:var(--green-bg);color:var(--green);
  transition:opacity .6s ease, max-height .6s ease, margin .6s ease, padding .6s ease;
}
.kb-login-msg.kb-fade-out{
  opacity:0;max-height:0;margin-bottom:0;padding-top:0;padding-bottom:0;
}

/* -------------------------------------------------------
   CATEGORY GRID
------------------------------------------------------- */
.kb-greeting{padding:20px 18px 4px;max-width:720px;margin:0 auto;width:100%;}
.kb-greeting p{color:var(--muted);font-size:13px;margin:0;}
.kb-greeting h2{font-size:22px;}
.kb-greeting-force{
  display:inline-block;
  font-family:var(--font-body);
  font-size:12.5px;font-weight:600;
  color:var(--brand-blue);
  background:var(--paper-dim);
  padding:4px 12px;
  border-radius:999px;
  margin-left:10px;
  vertical-align:middle;
}

.kb-cat-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:14px;
  padding:14px 18px 18px;
  max-width:720px;
  margin:0 auto;
  width:100%;
}
@media(min-width:560px){
  .kb-cat-grid{grid-template-columns:repeat(3,1fr);}
}

/* -------------------------------------------------------
   DESKTOP LAYOUT — wider content, 4-across grid, right-hand sidebar
------------------------------------------------------- */
.kb-page-layout{max-width:720px;margin:0 auto;width:100%;}
.kb-page-main{min-width:0;}
.kb-page-main--spaced{padding-top:18px;}
.kb-sidebar{max-width:720px;margin:0 auto;width:100%;padding:18px 18px 30px;}
.kb-sidebar--desktop{display:none;}

@media(min-width:960px){
  .kb-appbar-row,
  .kb-search,
  .kb-greeting,
  .kb-cat-heading,
  .kb-article-list,
  .kb-single-wrap,
  .kb-single-article-wrap,
  .kb-overtime-deadline-banner{max-width:1100px;}

  .kb-page-layout{
    max-width:1100px;
    display:grid;
    grid-template-columns:1fr 300px;
    gap:28px;
    align-items:start;
  }
  /* The guide builder (add/edit) needs real room on desktop for its tree layout,
     WYSIWYG toolbars and answer rows — pop it out to the same width used
     throughout the site's own desktop content area, rather than the standard,
     much narrower modal width meant for simple forms. */
  .kb-modal-wide.kb-modal-guide{max-width:min(1100px, calc(100vw - 40px));}
  /* The editable text box in the add/edit article and guide-step forms is sized so its
     TEXT area is exactly as wide as that text is on the live site (article body text:
     674px beside the sidebar; guide step text: 690px), so what's typed wraps and lays out
     the way it will for readers. Box = text width + 28px padding + 3px border. */
  .kb-modal-wide.kb-modal-article{max-width:min(760px, calc(100vw - 40px));}
  .kb-modal-article .kb-wysiwyg{width:705px;max-width:100%;}
  .kb-modal-guide .kb-wysiwyg{width:721px;max-width:100%;}
  /* Same idea for "view selected on a map" — a map is more useful the more
     screen it gets, so on desktop it uses the site's full 1100px content
     width instead of the standard, much narrower modal meant for forms. */
  .kb-modal-wide.kb-modal-location-map{max-width:min(1100px, calc(100vw - 40px));}
  .kb-location-all-map-el{height:600px;}
  .kb-cat-grid{grid-template-columns:repeat(4,1fr);max-width:100%;}
  .kb-sidebar--desktop{display:block;max-width:100%;padding:18px 0 30px;}
  .kb-sidebar--mobile{display:none;}
}

.kb-sidebar-block{
  background:var(--white);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-tap);
  padding:16px 18px;
  margin-bottom:16px;
}
.kb-sidebar-block h4{font-size:14px;margin:0 0 10px;}
.kb-sidebar-list{list-style:none;margin:0;padding:0;}
.kb-sidebar-list li{margin-bottom:8px;}
.kb-sidebar-list li:last-child{margin-bottom:0;}
.kb-sidebar-list a{color:var(--navy-700);text-decoration:none;font-size:13.5px;font-weight:600;}
.kb-sidebar-list a:hover{text-decoration:underline;}
.kb-sidebar-empty{color:var(--muted);font-size:13px;margin:0;}
.kb-sidebar-list--overtime li{display:flex;flex-direction:column;gap:2px;}
.kb-sidebar-list-title{color:var(--navy-700);font-size:13.5px;font-weight:600;}
.kb-sidebar-list-meta{color:var(--muted);font-size:12px;}
.kb-sidebar-list-comments{color:var(--ink);font-size:12px;font-style:italic;}
.kb-sidebar-list-btn{
  display:block;width:100%;text-align:center;margin-top:12px;
  background:var(--navy-900);color:var(--white);
  padding:8px 10px;border-radius:999px;font-size:12px;font-weight:600;
  text-decoration:none;border:none;cursor:pointer;
  -webkit-appearance:none;appearance:none;box-sizing:border-box;
}
.kb-sidebar-list-btn:active{background:var(--navy-700);}
.kb-sidebar-list-btn:active{background:var(--paper-dim);}
.kb-sidebar-bail-list{display:flex;flex-direction:column;gap:8px;margin-bottom:4px;}
.kb-sidebar-bail-item{
  display:block;background:var(--paper-dim);border-radius:var(--radius-sm);
  padding:10px 12px;text-decoration:none;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:filter .1s ease;
}
.kb-sidebar-bail-item:active{filter:brightness(0.96);}
.kb-sidebar-bail-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.kb-sidebar-bail-reference{font-family:var(--font-display);font-size:13.5px;font-weight:700;color:var(--navy-900);}
.kb-sidebar-bail-label{display:block;margin-top:3px;font-size:12px;font-weight:600;color:var(--navy-700);}
.kb-sidebar-bail-remaining{display:block;margin-top:2px;font-size:12px;color:var(--muted);}
.kb-sidebar-bail-item.kb-bail-row--current-green .kb-sidebar-bail-reference,
.kb-sidebar-bail-item.kb-bail-row--current-green .kb-sidebar-bail-label,
.kb-sidebar-bail-item.kb-bail-row--current-green .kb-sidebar-bail-remaining{color:var(--green);}
.kb-sidebar-bail-item.kb-bail-row--current-orange .kb-sidebar-bail-reference,
.kb-sidebar-bail-item.kb-bail-row--current-orange .kb-sidebar-bail-label,
.kb-sidebar-bail-item.kb-bail-row--current-orange .kb-sidebar-bail-remaining{color:var(--orange);}
.kb-sidebar-bail-item.kb-bail-row--current-red .kb-sidebar-bail-reference,
.kb-sidebar-bail-item.kb-bail-row--current-red .kb-sidebar-bail-label,
.kb-sidebar-bail-item.kb-bail-row--current-red .kb-sidebar-bail-remaining{color:var(--red);}
.kb-sidebar-bail-expired-badge{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 9px 2px 7px;border-radius:999px;
  background:linear-gradient(155deg,var(--red),#a8281f);color:var(--white);
  font-family:var(--font-display);font-size:10px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;
  box-shadow:0 1px 3px rgba(0,0,0,.2);flex:none;
}
.kb-sidebar-bail-expired-badge .dashicons{font-size:11px;width:11px;height:11px;line-height:1;}
.kb-sidebar-advert{padding:0;overflow:hidden;}
.kb-sidebar-advert img{width:100%;display:block;}
.kb-cat-tile{
  background:var(--navy-900);
  border-radius:var(--radius-lg);
  padding:20px 14px;
  text-decoration:none;
  color:var(--white);
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:14px;
  min-height:140px;
  box-shadow:var(--shadow-tap);
  position:relative;
  overflow:hidden;
  transition:transform .12s ease;
}
.kb-cat-tile[data-tile-color="navy"]{background:var(--navy-900);}
.kb-cat-tile[data-tile-color="blue"]{background:var(--brand-blue);}
.kb-cat-tile[data-tile-color="green"]{background:var(--green);}
.kb-cat-tile[data-tile-color="orange"]{background:var(--orange);}
.kb-cat-tile[data-tile-color="red"]{background:var(--red);}
.kb-cat-tile[data-tile-color="yellow"]{background:var(--yellow);}
.kb-tile-flash{
  position:absolute;top:14px;right:14px;
  width:12px;height:12px;border-radius:50%;
  background:#ff3b30;
  box-shadow:0 0 0 rgba(255,59,48,.6);
  animation:kb-tile-flash-pulse 1.4s infinite;
}
@keyframes kb-tile-flash-pulse{
  0%{box-shadow:0 0 0 0 rgba(255,59,48,.6);}
  70%{box-shadow:0 0 0 8px rgba(255,59,48,0);}
  100%{box-shadow:0 0 0 0 rgba(255,59,48,0);}
}
.kb-tile-flash--mine{
  top:auto;bottom:14px;right:14px;left:auto;
  background:#34c759;
  animation:kb-tile-flash-pulse-mine 1.4s infinite;
}
@keyframes kb-tile-flash-pulse-mine{
  0%{box-shadow:0 0 0 0 rgba(52,199,89,.6);}
  70%{box-shadow:0 0 0 8px rgba(52,199,89,0);}
  100%{box-shadow:0 0 0 0 rgba(52,199,89,0);}
}
.kb-cat-tile:active{transform:scale(.97);}
.kb-cat-tile::after{
  content:"";
  position:absolute;right:-30px;bottom:-30px;width:100px;height:100px;border-radius:50%;
  background:rgba(255,255,255,.05);
}
.kb-cat-icon{
  width:46px;height:46px;border-radius:50%;
  background:var(--white);
  color:var(--brand-blue);
  display:flex;align-items:center;justify-content:center;
  flex:none;
}
.kb-cat-icon .dashicons{font-size:24px;width:24px;height:24px;}
.kb-cat-tile h3{color:var(--white);font-size:16.5px;margin:0;line-height:1.25;}
.kb-cat-count{
  font-size:11.5px;color:rgba(255,255,255,.8);font-weight:600;letter-spacing:.3px;margin-top:-8px;
}
.kb-cat-desc{
  font-size:12px;font-weight:600;color:rgba(255,255,255,.75);line-height:1.35;margin-top:-8px;
}
.kb-empty{
  padding:40px 18px;text-align:center;color:var(--muted);
}

/* Time Owed calculator */
.kb-time-owed-balance{
  border-radius:var(--radius-lg);box-shadow:var(--shadow-tap);
  padding:24px;text-align:center;margin-bottom:20px;
}
.kb-time-owed-balance--positive{background:var(--green-bg);color:var(--green);}
.kb-time-owed-balance--negative{background:var(--red-bg);color:var(--red);}
.kb-time-owed-balance-figure{display:block;font-family:var(--font-display);font-size:40px;font-weight:700;line-height:1.1;}
.kb-time-owed-balance-label{display:block;font-size:13px;color:inherit;opacity:.75;margin-top:4px;}
.kb-time-owed-list{margin-top:20px;display:flex;flex-direction:column;gap:10px;}
.kb-time-owed-row{
  display:grid;grid-template-columns:1fr auto;
  grid-template-areas:"main select" "actions actions";
  column-gap:12px;row-gap:8px;align-items:start;
  background:var(--blue-bg);border:1.5px solid var(--line);border-radius:var(--radius-md);
  padding:14px 16px;
}
.kb-time-owed-row .kb-ot-row-select{grid-area:select;padding-top:2px;}
.kb-time-owed-row .kb-ot-row-main{grid-area:main;min-width:0;}
.kb-time-owed-row-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:6px;}
.kb-time-owed-badge{
  display:inline-block;padding:3px 10px;border-radius:999px;
  font-family:var(--font-display);font-size:13px;font-weight:700;
}
.kb-time-owed-badge--earned{background:var(--green-bg);color:var(--green);}
.kb-time-owed-badge--used{background:var(--red-bg);color:var(--red);}
.kb-time-owed-row-date{font-size:13.5px;font-weight:600;color:var(--ink);}
.kb-time-owed-row-notes{font-size:13.5px;color:var(--ink);margin:0 0 6px;}
.kb-time-owed-row .kb-ot-details{margin-bottom:0;}
.kb-time-owed-row .kb-ot-row-buttons{grid-area:actions;justify-content:flex-end;}

/* -------------------------------------------------------
   ARTICLE LIST (accordion cards)
------------------------------------------------------- */
.kb-cat-heading{padding:18px 18px 2px;max-width:720px;margin:0 auto;width:100%;}
.kb-cat-heading p{color:var(--muted);font-size:13.5px;margin:2px 0 0;}

.kb-article-list{
  padding:14px 18px 60px;
  display:flex;flex-direction:column;gap:12px;
  max-width:720px;margin:0 auto;width:100%;
}

.kb-article{
  background:var(--green-bg);
  border-left:6px solid var(--green);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-tap);
  overflow:hidden;
  transition:background-color .2s ease, border-color .2s ease;
}
.kb-article[data-status="orange"]{background:var(--orange-bg);border-left-color:var(--orange);}
.kb-article[data-status="red"]{background:var(--red-bg);border-left-color:var(--red);}

.kb-article-head{display:flex;align-items:stretch;}
.kb-article-toggle{
  flex:1;min-width:0;
  background:none;border:none;text-align:left;
  padding:16px 16px;
  display:flex;align-items:flex-start;gap:12px;cursor:pointer;
}
.kb-article-side{
  flex:none;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:6px;
  padding:16px 16px 14px 4px;
}
.kb-favourite-btn{
  background:none;border:none;cursor:pointer;padding:0;
  display:flex;align-items:center;justify-content:center;
  color:var(--muted);
}
.kb-favourite-btn .dashicons{font-size:21px;width:21px;height:21px;}
.kb-favourite-btn[aria-pressed="true"]{color:#d6336c;}
.kb-favourite-btn:active{transform:scale(0.9);}
.kb-article-side .kb-chev{
  flex:none;transition:transform .2s ease;color:var(--muted);font-size:20px;line-height:1;
}
.kb-chev-btn{
  background:none;border:none;padding:2px;margin:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
}
.kb-article[data-open="true"] .kb-chev{transform:rotate(180deg);}
.kb-article-heading{min-width:0;}
.kb-force-codes{display:flex;gap:6px;margin:4px 0;flex-wrap:wrap;}
.kb-force-code-badge{
  display:inline-block;background:var(--paper-dim);border:1px solid var(--line);
  border-radius:6px;padding:2px 8px;font-size:11.5px;font-weight:700;
  color:var(--navy-700);letter-spacing:.02em;
}
.kb-fin-dept-badge{
  display:inline-block;background:var(--paper-dim);border:1px solid var(--line);
  border-radius:6px;padding:2px 8px;font-size:11px;font-weight:700;
  color:var(--navy-700);letter-spacing:.02em;text-transform:uppercase;
}
.kb-article-heading h3{
  font-size:16.5px;margin:0 0 4px;color:var(--navy-900);
}
.kb-article-heading p{
  margin:0;color:var(--muted);font-size:13.5px;line-height:1.4;
}
.kb-status-dot{
  width:10px;height:10px;border-radius:50%;flex:none;margin-top:6px;
  background:var(--green);
}
.kb-article[data-status="orange"] .kb-status-dot{background:var(--orange);}
.kb-article[data-status="red"] .kb-status-dot{background:var(--red);}

.kb-article-body{
  max-height:0;
  overflow:hidden;
  transition:max-height .28s ease;
}
.kb-article-body-inner{
  padding:0 18px 20px 38px;
}
.kb-contact .kb-article-body-inner{
  padding-left:16px;
}
.kb-article-content{
  font-size:15px;color:var(--ink);
}
.kb-article-content p{margin:0 0 1em;}
.kb-article-content ul,.kb-article-content ol{padding-left:1.2em;}
.kb-article-content a{color:var(--navy-700);text-decoration:underline;}

.kb-article-locked{
  text-align:center;padding:18px 10px;
}
.kb-article-locked-text{
  color:var(--muted);font-size:14px;margin:0 0 12px;
}
.kb-article-locked-text .dashicons{vertical-align:text-bottom;color:var(--orange);}

.kb-status-control{
  margin-top:16px;
  padding-top:14px;
  border-top:1px dashed rgba(13,27,42,.15);
}
.kb-status-label{
  font-size:11.5px;letter-spacing:.4px;color:var(--muted);font-weight:600;display:block;margin-bottom:8px;
}
.kb-status-pills{display:flex;gap:8px;flex-wrap:wrap;}
.kb-pill{
  border:1.5px solid transparent;
  background:var(--white);
  padding:8px 14px;
  border-radius:999px;
  font-size:13px;font-weight:600;
  display:inline-flex;align-items:center;gap:7px;
  cursor:pointer;color:var(--ink);
}
.kb-pill .dot{width:9px;height:9px;border-radius:50%;}
.kb-pill[data-val="green"] .dot{background:var(--green);}
.kb-pill[data-val="orange"] .dot{background:var(--orange);}
.kb-pill[data-val="red"] .dot{background:var(--red);}
.kb-pill[data-val="publish"] .dot{background:var(--green);}
.kb-pill[data-val="draft"] .dot{background:var(--brand-grey);}
.kb-pill[aria-pressed="true"]{border-color:currentColor;}
.kb-pill[data-val="green"][aria-pressed="true"]{color:var(--green);background:var(--green-bg);}
.kb-pill[data-val="orange"][aria-pressed="true"]{color:var(--orange);background:var(--orange-bg);}
.kb-pill[data-val="red"][aria-pressed="true"]{color:var(--red);background:var(--red-bg);}
.kb-pill[data-val="publish"][aria-pressed="true"]{color:var(--green);background:var(--green-bg);}
.kb-pill[data-val="draft"][aria-pressed="true"]{color:var(--navy-700);background:var(--paper-dim);}
.kb-pill:active{transform:scale(.96);}

.kb-meta-row{
  display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;
}
.kb-chip{
  font-size:11px;color:var(--navy-700);background:rgba(21,48,77,.08);
  padding:4px 10px;border-radius:999px;text-decoration:none;
}
.kb-draft-badge{
  display:inline-block;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  color:var(--brand-grey);background:var(--paper-dim);
  padding:2px 8px;border-radius:999px;vertical-align:middle;
}

/* -------------------------------------------------------
   SINGLE ARTICLE PAGE
------------------------------------------------------- */
.kb-single-wrap{padding:18px 18px 60px;max-width:720px;margin:0 auto;width:100%;}

.kb-single-article-wrap{padding:18px 18px 60px;max-width:720px;margin:0 auto;width:100%;}
.kb-single-article-wrap .kb-article-body{max-height:none !important;}
.kb-single-article-wrap .kb-article-toggle{cursor:default;}

.kb-profile-card{
  background:var(--white);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-tap);
  padding:24px;
  margin-bottom:28px;
}
.kb-profile-card p{margin:0 0 14px;}
.kb-profile-card label{display:block;font-size:13px;font-weight:600;color:var(--navy-900);margin-bottom:6px;}
.kb-profile-card input[type=text],
.kb-profile-card input[type=password],
.kb-profile-card input[type=number],
.kb-profile-card select{
  width:100%;
  padding:12px 14px;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px;
  background:var(--paper);
}
.kb-profile-card input[disabled]{color:var(--muted);background:var(--paper-dim);}
.kb-profile-day-fields{margin-bottom:14px;}
.kb-session-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);margin-bottom:10px;}
.kb-session-row--current{background:var(--blue-bg);border-color:var(--brand-blue);}
.kb-session-info{min-width:0;flex:1 1 auto;}
.kb-session-badge{display:inline-block;margin-left:8px;padding:2px 8px;background:var(--brand-blue);color:var(--white);border-radius:999px;font-size:11px;font-weight:700;vertical-align:middle;}
.kb-session-logout-btn.kb-tool-reset-btn{width:auto;flex:none;margin-top:0;white-space:nowrap;}
.kb-profile-subheading{font-size:17px;margin:0 0 12px;}
.kb-toolkit-heading{margin-top:8px;}
.kb-page-main > .kb-profile-subheading{padding:0 18px;box-sizing:border-box;}

.kb-az-nav{
  display:flex;flex-wrap:wrap;gap:4px;margin:0 0 14px;
}
.kb-page-main > .kb-az-nav{padding:0 18px;box-sizing:border-box;}
.kb-az-nav .kb-az-btn,
.kb-az-nav span{
  width:26px;height:26px;
  display:flex;align-items:center;justify-content:center;
  border-radius:6px;
  font-size:12px;font-weight:600;
  border:none;
}
.kb-az-nav .kb-az-btn{background:var(--paper-dim);color:var(--navy-700);cursor:pointer;}
.kb-az-nav .kb-az-btn.is-active{background:var(--brand-blue);color:var(--white);}
.kb-az-nav .kb-az-btn:hover{background:var(--brand-blue-light);}
.kb-az-nav .kb-az-btn:disabled{color:var(--line);background:none;cursor:default;}
.kb-az-nav span{color:var(--line);background:none;}

/* -------------------------------------------------------
   MISC
------------------------------------------------------- */
.kb-footer{
  text-align:center;padding:22px 18px 34px;color:var(--muted);font-size:12px;
}
.kb-footer-links{
  display:flex;flex-wrap:wrap;justify-content:center;gap:6px 16px;margin-bottom:10px;
}
.kb-footer-links a{
  color:var(--navy-700);font-size:12.5px;text-decoration:none;font-weight:600;
}
.kb-footer-links a:hover{text-decoration:underline;}
.kb-footer p{margin:0;}
.screen-reader-text{position:absolute;left:-9999px;}

.kb-cookie-banner{
  position:fixed;left:0;right:0;bottom:0;z-index:90;
  width:100%;max-width:100%;box-sizing:border-box;
  background:var(--navy-950);color:#dbe3ec;
  padding:16px 18px;
  padding-bottom:calc(16px + env(safe-area-inset-bottom, 0px));
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:14px;
  box-shadow:0 -6px 20px rgba(0,0,0,.25);
}
.kb-cookie-banner[hidden]{
  display:none;
}
.kb-cookie-banner p{margin:0;font-size:13px;max-width:640px;text-align:center;flex:1 1 240px;min-width:0;}
.kb-cookie-actions{flex:none;}
.kb-cookie-accept{
  background:var(--brand-blue);color:var(--white);border:none;
  padding:10px 22px;border-radius:999px;font-family:var(--font-display);
  font-size:14px;font-weight:600;cursor:pointer;
}
.kb-cookie-accept:active{background:var(--brand-blue-dark);}

.kb-install-banner{
  position:fixed;left:12px;right:12px;z-index:95;
  bottom:calc(12px + env(safe-area-inset-bottom, 0px));
  background:var(--white);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-soft);
  padding:14px;
  display:flex;align-items:center;gap:12px;
}
.kb-install-banner[hidden]{display:none;}
.kb-install-icon{width:40px;height:40px;border-radius:10px;flex:none;}
.kb-install-text{flex:1;min-width:0;}
.kb-install-text strong{display:block;font-size:14px;color:var(--navy-900);}
.kb-install-text p{margin:2px 0 0;font-size:12.5px;color:var(--muted);}
.kb-install-cta{
  flex:none;
  background:var(--brand-blue);color:var(--white);border:none;
  padding:10px 18px;border-radius:999px;font-family:var(--font-display);
  font-size:13.5px;font-weight:600;cursor:pointer;
}
.kb-install-cta:active{background:var(--brand-blue-dark);}
.kb-install-close{
  flex:none;background:none;border:none;color:var(--muted);
  font-size:20px;line-height:1;cursor:pointer;padding:0 2px;
}
@media(min-width:960px){
  .kb-install-banner{display:none !important;}
}
.kb-install-banner--raised{bottom:calc(90px + env(safe-area-inset-bottom, 0px));}

/* -------------------------------------------------------
   SEARCH BAR (in the app bar)
------------------------------------------------------- */
.kb-search{
  max-width:720px;margin:0 auto;
  padding:0 18px 14px;
  display:flex;align-items:center;gap:8px;
  position:relative;
}
.kb-search .dashicons{
  position:absolute;left:32px;color:var(--navy-950);opacity:.5;font-size:18px;pointer-events:none;
}
.kb-search input[type=search]{
  width:100%;
  padding:11px 14px 11px 38px;
  border:none;border-radius:999px;
  background:var(--white);
  font-size:16px;color:var(--ink);
}
.kb-search input[type=search]:focus{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.4);}

/* -------------------------------------------------------
   CONTACT DIRECTORY
------------------------------------------------------- */
.kb-cat-tile--contacts .kb-cat-count{color:rgba(255,255,255,.85);}

.kb-contact .kb-status-dot{display:none;}
.kb-contact-address{
  display:flex;gap:8px;align-items:flex-start;color:var(--ink);font-size:14.5px;margin:0 0 14px;
}
.kb-contact-address .dashicons{color:var(--brand-blue);flex:none;margin-top:1px;}
.kb-contact-lines{margin-bottom:14px;}
.kb-contact-line{
  display:flex;align-items:center;gap:10px;
  padding:8px 0;
  border-bottom:1px solid rgba(10,28,51,.06);
  font-size:14.5px;
}
.kb-force-towns{align-items:flex-start;}
.kb-force-towns .dashicons{margin-top:2px;}
.kb-contact-line:last-child{border-bottom:none;}
.kb-contact-line .dashicons{color:var(--brand-blue);flex:none;}
.kb-contact-line span:nth-child(2){flex:1;color:var(--ink);word-break:break-word;}
.kb-call-btn{
  flex:none;
  border:1.5px solid var(--brand-blue);
  color:var(--brand-blue);
  background:var(--white);
  padding:6px 14px;
  border-radius:999px;
  box-sizing:border-box;
  display:inline-flex;align-items:center;justify-content:center;
  line-height:1.2;
  font-size:12.5px;font-weight:600;
  text-decoration:none;
  cursor:pointer;
}
.kb-call-btn:active{background:var(--brand-blue);color:var(--white);}
.kb-contact-line-desc{
  display:block;color:var(--muted);font-size:12.5px;line-height:1.4;margin-top:1px;
}

/* Common Offences — offence detail rows inside the accordion body, matching
   the Contact Directory's icon-then-content line style. Each field's icon
   and label sit together on their own header line, with the value directly
   underneath — tight spacing between the two so the header reads as part of
   the same block as its content rather than a separate element. Values
   (wording, points to prove, etc.) can run to several lines, so the row
   aligns to the top instead of centering, while the copy button stays
   vertically centred against the whole row. */
.kb-contact-line--offence{align-items:flex-start;}
.kb-contact-line--offence .kb-copy-btn{align-self:center;}
.kb-offence-line-main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0;}
.kb-offence-line-head{display:flex;align-items:center;gap:8px;}
.kb-offence-line-head .dashicons{color:var(--brand-blue);flex:none;}
.kb-offence-line-label{font-weight:700;color:var(--ink);font-size:13px;}
.kb-offence-line-value{
  display:block;font-weight:400;color:var(--ink);white-space:pre-line;word-break:break-word;
}
.kb-empty-inline{color:var(--muted);font-size:14px;margin:4px 0 0;}

/* Offence status flag — reuses the same green/amber/red pill control and
   data-status colouring that articles use, so admins can mark an offence
   card with a background colour the same way they flag an article. */
.kb-offence .kb-status-dot{display:block;}

.kb-copy-btn{
  flex:none;
  border:1.5px solid var(--line);
  color:var(--navy-700);
  background:var(--white);
  padding:6px 14px;
  border-radius:999px;
  box-sizing:border-box;
  display:inline-flex;align-items:center;justify-content:center;
  line-height:1.2;
  font-size:12.5px;font-weight:600;
  cursor:pointer;
}
.kb-copy-btn:active{background:var(--paper-dim);}
.kb-copy-btn.is-copied{border-color:var(--green);color:var(--green);}
.kb-map-frame-wrap{border-radius:var(--radius-md);overflow:hidden;margin-top:0;}
#kb-map-frame{height:320px;}
@media(min-width:960px){
  .kb-modal--map{max-width:820px;}
  #kb-map-frame{height:560px;}
}

.kb-repeat-wrap{margin-bottom:6px;}
.kb-repeat-row{margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed var(--line);}
.kb-repeat-row:last-of-type{border-bottom:none;}
.kb-repeat-row label{display:block;font-size:12.5px;font-weight:600;margin-bottom:3px;}
.kb-repeat-row input,
.kb-repeat-row textarea{
  width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:14.5px;margin-bottom:6px;box-sizing:border-box;
}
.kb-repeat-desc{font-size:13px;margin-bottom:0;}
.kb-address-warning{
  color:var(--orange);font-size:12px;margin:-4px 0 6px;
}
.kb-form-error{
  background:var(--red-bg);color:var(--red);
  padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin:0 0 14px;
}

/* -------------------------------------------------------
   TOOL KIT — standalone tool pages
------------------------------------------------------- */
.kb-tool-card{
  background:var(--white);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-tap);
  padding:24px;
}
.kb-tool-card + .kb-tool-card{margin-top:20px;}
.kb-tool-intro{color:var(--muted);font-size:13.5px;line-height:1.5;margin:0 0 20px;}
.kb-tool-field{margin-bottom:18px;}
.kb-tool-field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;}
.kb-ot-radio-row{display:flex;gap:28px;}
.kb-tool-field .kb-ot-radio-row label{display:inline-flex;align-items:center;gap:6px;font-weight:400;margin-bottom:0;}
.kb-ot-radio-row input[type="radio"],
.kb-ot-status-filters input[type="checkbox"],
.kb-ot-row-checkbox,
#kb-ot-select-all{
  accent-color:var(--brand-blue);width:18px;height:18px;cursor:pointer;flex-shrink:0;
}
.kb-ot-status-filters{display:flex;gap:16px;flex-wrap:wrap;}
.kb-tool-field .kb-ot-status-filters label{display:inline-flex;align-items:center;gap:6px;font-weight:400;margin-bottom:0;}
.kb-ot-row--booked{background:var(--blue-bg);}
.kb-ot-row--worked{background:var(--red-bg);}
.kb-ot-row--submitted{background:var(--orange-bg);}
.kb-ot-row--paid{background:var(--green-bg);}

.kb-ot-tiles{display:grid;grid-template-columns:repeat(5, 1fr);gap:10px;margin-bottom:20px;}
.kb-ot-tile{
  border-radius:var(--radius-md);box-shadow:var(--shadow-tap);
  padding:16px 10px;text-align:center;position:relative;
  text-decoration:none;color:inherit;
}
.kb-ot-tile--booked{background:var(--blue-bg);}
.kb-ot-tile--worked{background:var(--red-bg);}
.kb-ot-tile--submitted{background:var(--orange-bg);}
.kb-ot-tile--paid{background:var(--green-bg);}
.kb-ot-tile--salary{background:var(--paper-dim);}
.kb-ot-tile-number{font-size:28px;font-weight:700;font-family:var(--font-display);color:var(--navy-900);margin:0;line-height:1.1;}
.kb-ot-tile-value{font-size:13px;font-weight:700;color:var(--navy-900);margin:2px 0 0;}
.kb-ot-tile-label{font-size:12px;color:var(--navy-700);margin:4px 0 0;}
.kb-ot-tile-edit-btn{
  margin-top:8px;background:var(--white);border:1.5px solid var(--line);color:var(--navy-700);
  padding:4px 12px;border-radius:999px;font-size:11px;font-weight:600;cursor:pointer;
}
@media(min-width:700px){
  .kb-ot-tile:not(.kb-ot-tile--salary){display:flex;flex-direction:column;justify-content:center;}
}
@media(max-width:699px){
  .kb-ot-tiles{grid-template-columns:repeat(2, 1fr);}
  .kb-ot-tile--salary{grid-column:1 / -1;}
}
.kb-tool-field input[type="datetime-local"],
.kb-tool-field input[type="date"],
.kb-tool-field input[type="time"],
.kb-tool-field input[type="number"],
.kb-tool-field input[type="password"],
.kb-tool-field input[type="email"],
.kb-tool-field input[type="text"]{
  display:block;
  width:100%;max-width:100%;min-width:0;
  height:48px;line-height:44px;
  -webkit-appearance:none;appearance:none;
  padding:0 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:16px;font-family:inherit;box-sizing:border-box;margin-bottom:8px;
}
.kb-tool-now-btn{
  background:none;border:1.5px dashed var(--line);color:var(--navy-700);
  padding:8px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;
  cursor:pointer;
}
.kb-tool-now-btn:active{background:var(--paper-dim);}
.kb-tool-now-btn[disabled]{opacity:.5;cursor:not-allowed;}
.kb-tool-calculate-btn{
  width:100%;
  background:var(--navy-900);color:var(--white);border:none;
  padding:14px;border-radius:999px;
  font-family:var(--font-display);font-size:15px;font-weight:600;
  cursor:pointer;margin-top:6px;
}
.kb-tool-calculate-btn:active{background:var(--navy-700);}
.kb-tool-reset-btn{
  width:100%;
  background:none;color:var(--navy-700);border:1.5px solid var(--line);
  padding:12px;border-radius:999px;
  font-family:var(--font-display);font-size:14px;font-weight:600;
  cursor:pointer;margin-top:10px;
}
.kb-tool-reset-btn:active{background:var(--paper-dim);}

.kb-mp-search-wrap{position:relative;}
.kb-mp-btn-row{display:flex;gap:8px;}
.kb-mp-btn-row .kb-tool-now-btn{flex:1;margin:8px 0 0;text-align:center;}
.kb-mp-search-results{
  position:absolute;top:74px;left:0;right:0;z-index:5;
  background:var(--white);border:1.5px solid var(--line);border-radius:var(--radius-sm);
  box-shadow:0 6px 16px rgba(0,0,0,.12);
  max-height:220px;overflow-y:auto;
}
.kb-mp-search-result{
  display:block;width:100%;text-align:left;
  padding:10px 14px;border:none;border-bottom:1px solid var(--line);
  background:var(--white);font-size:13.5px;line-height:1.4;color:var(--ink);
  cursor:pointer;
}
.kb-mp-search-result:last-child{border-bottom:none;}
.kb-mp-search-result:active{background:var(--paper-dim);}
.kb-mp-range-row{display:flex;gap:8px;}
.kb-mp-range-row input{flex:2;margin-bottom:0;min-width:0;}
.kb-mp-range-row select{flex:1;min-width:76px;margin-bottom:0;}
.kb-mp-two-col{display:flex;gap:10px;}
.kb-mp-two-col > div{flex:1;min-width:0;}
.kb-mp-color-label-row{display:flex;gap:10px;align-items:flex-end;}
.kb-mp-color-label-row > div:first-child{flex:none;}
.kb-mp-color-label-row > div:last-child{flex:1;min-width:0;}
@media(max-width:959px){
  #kb-actual-time-now{display:block;width:100%;box-sizing:border-box;text-align:center;}
}
.kb-mp-record-select{
  flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;
  background:none;border:none;padding:0;margin:0;text-align:left;cursor:pointer;font-family:inherit;
}
.kb-mp-color-dot{
  display:inline-block;width:10px;height:10px;border-radius:50%;
  margin-right:6px;vertical-align:middle;border:1px solid rgba(0,0,0,.15);
}
.kb-mp-accordion-toggle{
  display:flex;align-items:center;justify-content:space-between;width:100%;
  background:none;border:none;padding:6px 0;margin:0;
  font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--navy-900);
  cursor:pointer;text-align:left;
}
.kb-mp-accordion-icon{font-size:13px;color:var(--muted);transition:transform .15s ease;}
.kb-mp-accordion-toggle[aria-expanded="true"] .kb-mp-accordion-icon{transform:rotate(180deg);}
.kb-mp-accordion-panel{padding-top:10px;}
.kb-mp-section-header{display:flex;align-items:center;gap:8px;}
.kb-mp-section-header .kb-mp-accordion-toggle{flex:1;}
.kb-mp-section-header .kb-mp-accordion-toggle--chevron{flex:none;width:26px;padding:6px 0;justify-content:center;}
.kb-mp-info-btn{
  flex:none;width:26px;height:26px;border-radius:50%;
  background:var(--paper-dim);border:1.5px solid var(--line);color:var(--navy-700);
  font-size:15px;cursor:pointer;line-height:1;padding:0;
  display:flex;align-items:center;justify-content:center;
}
.kb-mp-info-btn:active{background:var(--line);}
.kb-tool-field input[type="color"]{
  display:block;width:64px;height:48px;padding:2px;margin-bottom:8px;
  border:1.5px solid var(--line);border-radius:var(--radius-sm);
  background:var(--white);cursor:pointer;
}

.kb-age-advice{
  margin-top:18px;padding:16px;border-radius:var(--radius-sm);
  background:var(--paper);border:1.5px solid var(--line);
}
.kb-age-advice h3{margin:0 0 8px;font-size:14px;font-family:var(--font-display);color:var(--navy-900);}
.kb-age-advice #kb-age-advice-text{font-size:13.5px;line-height:1.5;color:var(--ink);}
.kb-age-advice #kb-age-advice-text p{margin:0 0 10px;}
.kb-age-advice #kb-age-advice-text p:last-child{margin-bottom:0;}
.kb-age-advice #kb-age-advice-text ul,
.kb-age-advice #kb-age-advice-text ol{margin:0 0 10px;padding-left:20px;}
.kb-tool-stop-btn{
  width:100%;
  background:none;color:var(--red);border:1.5px solid var(--red);
  padding:12px;border-radius:999px;
  font-family:var(--font-display);font-size:14px;font-weight:600;
  cursor:pointer;margin-top:10px;
}
.kb-tool-stop-btn:active{background:var(--red);color:var(--white);}

.kb-fin-reminder{
  background:var(--red-bg);border:1px solid var(--red);border-radius:var(--radius-md);
  padding:14px;margin-bottom:16px;
}
.kb-overtime-deadline-banner{
  background:var(--yellow-bg);border:1px solid var(--yellow);border-radius:var(--radius-md);
  padding:14px 18px;margin:18px auto 16px;max-width:720px;width:calc(100% - 36px);box-sizing:border-box;
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
}
.kb-overtime-deadline-banner p{margin:0;font-size:13.5px;font-weight:600;color:var(--navy-900);}
.kb-overtime-deadline-banner-btn{
  flex:none;background:var(--navy-900);color:var(--white);text-decoration:none;
  padding:8px 16px;border-radius:999px;font-size:13px;font-weight:600;
}

.kb-view-as-bar{
  display:flex;align-items:center;flex-wrap:wrap;gap:10px;
  background:var(--yellow-bg);border-bottom:1.5px solid var(--yellow);
  padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top, 0px));
  font-size:13px;
  position:fixed;top:0;left:0;right:0;
  z-index:41;
}
.kb-view-as-label{color:var(--navy-900);font-weight:600;}
.kb-view-as-bar select{
  padding:6px 10px;border:1.5px solid var(--yellow);border-radius:var(--radius-sm);
  font-size:13px;font-family:inherit;background:var(--white);
}
.kb-view-as-stop{
  background:var(--navy-900);color:var(--white);border:none;
  padding:6px 14px;border-radius:999px;font-size:12.5px;font-weight:600;
  cursor:pointer;
}
.kb-view-as-stop:active{opacity:.85;}

/* Rendered by bobbykb_app_bar() itself, right after .kb-appbar-spacer, so it
   sits in normal document flow directly below the (fixed) header on every
   page that has one, rather than stacking as another fixed bar above it. */
.kb-trial-banner-bar{
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;
  background:var(--orange-bg);border-bottom:1.5px solid var(--orange);
  padding:10px 16px;
  font-size:13px;
}
.kb-trial-banner-text{color:var(--navy-900);font-weight:600;}
.kb-trial-banner-btn{
  flex:none;background:var(--navy-900);color:var(--white);text-decoration:none;
  padding:6px 14px;border-radius:999px;font-size:12.5px;font-weight:600;
}
.kb-trial-banner-btn:active{opacity:.85;}
.kb-trial-banner-bar--expired{
  background:var(--red-bg);border-bottom:1.5px solid var(--red);
}
.kb-trial-banner-bar--expired .kb-trial-banner-text{color:var(--red);}
.kb-trial-banner-bar--expired .kb-trial-banner-btn{background:var(--red);}
.kb-fin-reminder p{color:var(--red);font-size:13px;font-weight:600;margin:0 0 10px;line-height:1.4;}
.kb-fin-reminder-btn{
  width:100%;background:var(--red);color:var(--white);border:none;
  padding:10px;border-radius:999px;font-family:var(--font-display);font-size:13px;font-weight:600;
  cursor:pointer;
}
.kb-fin-reminder-btn:active{opacity:.85;}
.kb-field-hint{display:block;color:var(--muted);font-size:12px;margin-top:4px;}
.kb-field-hint[hidden]{display:none;}
.kb-field-hint--error{color:var(--red);font-weight:600;}
.kb-field-hint--ok{color:var(--green);font-weight:600;}
.kb-bail-step-hint{margin-bottom:10px;}

.kb-tool-field select{
  display:block;width:100%;max-width:100%;
  height:48px;line-height:44px;
  -webkit-appearance:none;appearance:none;
  padding:0 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:16px;font-family:inherit;box-sizing:border-box;margin-bottom:8px;
  background:var(--white);
}
/* The fixed line-height above is only meant to vertically centre the closed
   box's text; browsers also apply it to each row of the opened dropdown
   list, which clips a longer option label (like "Extension 2
   (Superintendent)") if it wraps onto a second line. This select is the one
   with option text long enough to actually wrap, so it's reset here rather
   than loosening the shared rule every other (short-option) select relies on. */
#kb-bail-save-confirmed-step{line-height:normal;}
.kb-tool-field textarea{
  display:block;width:100%;max-width:100%;
  padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:16px;font-family:inherit;box-sizing:border-box;margin-bottom:8px;
  background:var(--white);resize:vertical;
}

/* -------------------------------------------------------
   TOOL KIT — Location
------------------------------------------------------- */
.kb-location-expiry{font-size:13px;font-weight:600;color:var(--navy-700);margin:0 0 10px;}
.kb-location-grid{font-size:14px;font-weight:600;color:var(--ink);margin:12px 0 16px;}
.kb-location-loading{color:var(--muted);font-size:13.5px;}
.kb-location-list{display:flex;flex-direction:column;gap:10px;}
.kb-location-row{
  display:flex;align-items:center;gap:12px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:12px 14px;
}
.kb-location-row-checkbox{flex:none;width:20px;height:20px;cursor:pointer;accent-color:var(--brand-blue);}
.kb-location-select-row{display:flex;justify-content:flex-end;margin-bottom:10px;}
.kb-location-select-row[hidden]{display:none;}
.kb-location-view-map-btn{margin-top:18px;}
.kb-location-row-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}
.kb-location-row-main{flex:1;min-width:0;}
.kb-location-row-name{font-weight:600;font-size:14px;}
.kb-location-row-grid{font-size:13px;color:var(--muted);margin-top:2px;}
.kb-location-row-navigate{flex:none;}
.kb-location-row-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}

/* FIN Finder rows — its own classes rather than reusing .kb-location-row's, since an
   officer/department pill and (for a department) an Edit link sit on the right, and
   every row needs to end up the same height regardless of whether that Edit link is
   there — centring everything on one flex row, rather than stacking the edit control
   below the row's content, is what keeps that height consistent. */
.kb-fin-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:12px 14px;
}
.kb-fin-row-main{flex:1;min-width:0;}
.kb-fin-row-name{font-weight:600;font-size:14px;}
.kb-fin-row-detail{font-size:13px;color:var(--muted);margin-top:2px;}
.kb-fin-row-side{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:4px;}
.kb-fin-row-side .kb-edit-link{margin-top:0;font-size:12px;}
.kb-referral-copy-btn{padding:4px 12px;font-size:12px;}
.kb-referral-stats{display:flex;gap:12px;margin-bottom:18px;flex-wrap:wrap;}
.kb-referral-stat{
  flex:1;min-width:140px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:14px 16px;text-align:center;
}
.kb-referral-stat-num{display:block;font-family:var(--font-display);font-size:28px;font-weight:700;color:var(--navy-900);line-height:1.1;}
.kb-referral-stat-label{display:block;font-size:12.5px;color:var(--muted);margin-top:2px;}
.kb-referral-progress{margin-bottom:22px;}
.kb-referral-progress-bar{
  height:10px;border-radius:999px;background:var(--paper-dim);overflow:hidden;
}
.kb-referral-progress-fill{height:100%;background:var(--brand-blue);border-radius:999px;transition:width .3s ease;}
.kb-referral-progress .kb-field-hint{margin-top:6px;}
.kb-referral-invite-form{margin-top:4px;}
.kb-location-row-shared{font-size:11.5px;color:var(--muted);}
.kb-location-row-countdown{font-size:11.5px;color:var(--orange);font-weight:600;}
.kb-tool-result{
  margin-top:18px;padding:14px 16px;border-radius:var(--radius-sm);
  font-size:14.5px;font-weight:600;line-height:1.4;
}
.kb-tool-result--ok{background:var(--green-bg);color:var(--green);}
.kb-tool-result-value{font-weight:400;}
.kb-tool-result--error{background:var(--red-bg);color:var(--red);}

/* Aircraft Tracker */
.kb-aircraft-summary{margin:0;font-size:13px;color:var(--muted);text-align:center;}
.kb-aircraft-marker{background:none;border:none;}
.kb-aircraft-marker-shape{
  width:0;height:0;
  border-left:7px solid transparent;
  border-right:7px solid transparent;
  border-bottom:16px solid var(--navy-900);
  transform-origin:50% 60%;
}

/* Officer Location — "view all on a map" */
.kb-location-all-map-el{
  height:min(60vh, 460px);
  border-radius:var(--radius-sm);overflow:hidden;
  border:1.5px solid var(--line);position:relative;z-index:1;
}
.kb-officer-marker{background:none;border:none;}
.kb-officer-marker-shape{
  width:20px;height:20px;border-radius:50%;
  background:var(--brand-blue);
  border:3px solid var(--white);
  box-shadow:0 1px 4px rgba(0,0,0,.35);
}
.kb-location-popup{font-size:13.5px;line-height:1.6;}
.kb-location-popup-time{color:var(--muted);font-size:12.5px;}
.kb-location-popup-expiry{color:var(--red);font-weight:600;font-size:12.5px;}
.kb-location-popup-actions{text-align:center;margin-top:6px;}
.kb-location-popup-actions .kb-location-row-navigate{display:inline-block;padding:5px 14px;font-size:12.5px;}
.kb-location-map-empty{margin:14px 0;color:var(--muted);text-align:center;}

/* Subscriptions / paywall */
.kb-paywall-wrap{max-width:620px;margin:0 auto;padding:24px 16px;}
.kb-paywall-card{text-align:center;}
.kb-pricing-cards{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:18px;}
.kb-pricing-card{
  flex:1 1 200px;max-width:240px;
  border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:20px 16px;text-align:center;position:relative;background:var(--white);
}
.kb-pricing-card--featured{border-color:var(--navy-900);box-shadow:0 2px 10px rgba(10,28,51,.08);}
.kb-pricing-card h3{margin:0 0 8px;}
.kb-pricing-amount{font-size:28px;font-weight:700;color:var(--navy-900);margin:0 0 16px;}
.kb-pricing-amount span{font-size:13px;font-weight:400;color:var(--muted);}
.kb-pricing-badge{
  position:absolute;top:-11px;left:50%;transform:translateX(-50%);
  background:var(--orange);color:#fff;font-size:11px;font-weight:700;
  padding:3px 10px;border-radius:999px;white-space:nowrap;
}

/* Bail Calculator */
.kb-bail-timeline{margin-top:18px;display:flex;flex-direction:column;gap:8px;}
.kb-bail-row{
  background:var(--paper-dim);border-radius:var(--radius-sm);padding:10px 14px;
}
.kb-bail-row-head{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center;}
.kb-bail-row-label{font-size:13.5px;color:var(--navy-700);font-weight:600;line-height:1.3;}
.kb-bail-row-date{font-family:var(--font-display);font-size:14.5px;font-weight:700;color:var(--navy-900);white-space:nowrap;line-height:1.3;display:inline-flex;align-items:center;}
.kb-bail-row-remaining{margin:4px 0 0;font-size:12.5px;font-weight:400;text-align:center;}
@media(min-width:960px){
  .kb-bail-row-head{flex-direction:row;justify-content:space-between;align-items:center;gap:10px;text-align:left;}
  .kb-bail-row-head .kb-bail-row-label,
  .kb-bail-row-head .kb-bail-row-date{align-self:center;}
  .kb-bail-row-remaining{text-align:left;}
}
.kb-bail-row--current-green{background:var(--green-bg);}
.kb-bail-row--current-green .kb-bail-row-label,
.kb-bail-row--current-green .kb-bail-row-date,
.kb-bail-row--current-green .kb-bail-row-remaining{color:var(--green);}
.kb-bail-row--current-orange{background:var(--orange-bg);}
.kb-bail-row--current-orange .kb-bail-row-label,
.kb-bail-row--current-orange .kb-bail-row-date,
.kb-bail-row--current-orange .kb-bail-row-remaining{color:var(--orange);}
.kb-bail-row--current-red{background:var(--red-bg);}
.kb-bail-row--current-red .kb-bail-row-label,
.kb-bail-row--current-red .kb-bail-row-date,
.kb-bail-row--current-red .kb-bail-row-remaining{color:var(--red);}
.kb-bail-expired-badge{
  display:inline-block;margin-left:8px;padding:2px 9px;border-radius:999px;
  background:var(--red);color:var(--white);
  font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.03em;
  text-transform:uppercase;vertical-align:middle;
}
.kb-bail-confirm-extension{display:block;width:100%;margin-top:10px;text-align:center;background:var(--white);box-sizing:border-box;}
.kb-bail-row--current-green .kb-bail-confirm-extension{border-color:var(--green);color:var(--green);}
.kb-bail-row--current-orange .kb-bail-confirm-extension{border-color:var(--orange);color:var(--orange);}
.kb-bail-row--current-red .kb-bail-confirm-extension{border-color:var(--red);color:var(--red);}
.kb-bail-confirm-extension:active{background:var(--paper-dim);}

/* Bail Calculations (saved list) */
.kb-bail-calc-list{display:flex;flex-direction:column;gap:10px;}
.kb-bail-calc-item{
  background:var(--white);border:1.5px solid var(--line);border-radius:var(--radius-md);overflow:hidden;
}
.kb-bail-calc-toggle{
  display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:var(--paper-dim);border:none;padding:14px 16px;cursor:pointer;text-align:left;
}
.kb-bail-calc-toggle.kb-bail-row--current-green{background:var(--green-bg);}
.kb-bail-calc-toggle.kb-bail-row--current-orange{background:var(--orange-bg);}
.kb-bail-calc-toggle.kb-bail-row--current-red{background:var(--red-bg);}
.kb-bail-calc-header-text{display:flex;flex-direction:column;gap:2px;min-width:0;}
.kb-bail-calc-reference{font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--navy-900);}
.kb-bail-calc-reference-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.kb-bail-calc-summary{font-size:13px;color:var(--muted);}
.kb-bail-calc-toggle.kb-bail-row--current-green .kb-bail-calc-summary{color:var(--green);}
.kb-bail-calc-toggle.kb-bail-row--current-orange .kb-bail-calc-summary{color:var(--orange);}
.kb-bail-calc-toggle.kb-bail-row--current-red .kb-bail-calc-summary{color:var(--red);}
.kb-bail-calc-expired-badge{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 9px 2px 7px;border-radius:999px;
  background:linear-gradient(155deg,var(--red),#a8281f);color:var(--white);
  font-family:var(--font-display);font-size:10px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;
  box-shadow:0 1px 3px rgba(0,0,0,.2);flex:none;
}
.kb-bail-calc-expired-badge .dashicons{font-size:11px;width:11px;height:11px;line-height:1;}
.kb-bail-calc-expired-badge[hidden]{display:none;}
.kb-bail-calc-chevron{font-size:16px;color:var(--muted);flex:none;transition:transform .2s ease;}
.kb-bail-calc-toggle[aria-expanded="true"] .kb-bail-calc-chevron{transform:rotate(180deg);}
.kb-bail-calc-body-inner{padding:16px;}
.kb-bail-notify-toggle{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;
  width:100%;margin-bottom:16px;
  cursor:pointer;
}
.kb-bail-notify-checkbox{position:absolute;opacity:0;width:1px;height:1px;}
.kb-bail-notify-switch{
  position:relative;flex:none;width:40px;height:23px;border-radius:999px;
  background:var(--line);transition:background .15s ease;
}
.kb-bail-notify-switch::after{
  content:"";position:absolute;top:2px;left:2px;width:19px;height:19px;border-radius:50%;
  background:var(--white);box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s ease;
}
.kb-bail-notify-checkbox:checked + .kb-bail-notify-switch{background:var(--brand-blue);}
.kb-bail-notify-checkbox:checked + .kb-bail-notify-switch::after{transform:translateX(17px);}
.kb-bail-notify-checkbox:focus-visible + .kb-bail-notify-switch{box-shadow:0 0 0 2px var(--brand-blue);}
.kb-bail-notify-label{font-size:13px;font-weight:600;color:var(--navy-700);}
.kb-bail-save-status{font-size:12.5px;color:var(--muted);margin:10px 0 0;min-height:1em;}
#kb-bail-add-extension{margin-top:14px;}
.kb-bail-calc-body .kb-bail-add-extension{margin-top:16px;margin-bottom:22px;}
.kb-bail-pause-field{margin-top:0;}
.kb-bail-pause-hint{font-size:13.5px;color:var(--muted);margin-bottom:10px;}
.kb-bail-pause-row{
  display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;
  padding:12px;background:var(--paper-dim);border-radius:var(--radius-sm);margin-bottom:10px;
}
.kb-bail-pause-row .kb-tool-field{flex:1 1 160px;margin-bottom:0;}
.kb-bail-pause-remove{
  flex:1 1 100%;background:none;border:1.5px solid var(--red);color:var(--red);
  border-radius:999px;padding:6px 14px;font-size:13px;cursor:pointer;
}

/* LOP Calculator — pairs a number input with its unit dropdown on one row. */
.kb-lop-period-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.kb-lop-period-row input[type="number"]{flex:0 0 auto;width:100px;}
.kb-lop-period-row select{flex:1 1 160px;}

/* Lock Box — release code display (shown once), and the officer's private notes list. */
.kb-lockbox-code-box{
  display:grid;grid-template-columns:auto 1fr;gap:6px 14px;align-items:baseline;
  background:var(--paper-dim);border-radius:var(--radius-sm);padding:16px;margin:16px 0;
}
.kb-lockbox-code-label{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;}
.kb-lockbox-code-value{font-family:monospace;font-size:16px;font-weight:700;color:var(--navy-900);word-break:break-all;}
.kb-lockbox-copy-btn{display:flex;width:100%;box-sizing:border-box;margin-top:4px;}
.kb-lockbox-note-card{background:var(--blue-bg);}
.kb-lockbox-note-card h3{margin:0 0 8px;font-size:16px;}
.kb-lockbox-note-meta{color:var(--muted);font-size:12px;margin:0 0 10px;}
.kb-lockbox-note-content{white-space:pre-line;word-break:break-word;color:var(--ink);font-family:var(--font-body);margin:0 0 14px;}
.kb-lockbox-note-content img{max-width:100%;height:auto;border-radius:var(--radius-sm);display:block;margin:8px 0;}
.kb-lockbox-notes-empty{margin-top:24px;text-align:center;}
#kb-lockbox-notes-list{margin-top:20px;}
/* Lock Box — Edit/Delete on each note, styled to match the overtime pages'
   small outlined pill buttons (.kb-ot-row-btn / .kb-cctv-log-delete) rather
   than the bigger top-level action buttons above. */
.kb-lockbox-note-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;justify-content:flex-end;}

/* Lock Box — admin-editable "Support" box shown above "Add a note" (see the
   Bobby KB settings page for its content). */
.kb-lockbox-support-box-title{margin:0 0 10px;font-size:16px;}
.kb-lockbox-support-box p:last-child{margin-bottom:0;}

/* Public Info Pages — officer Tool Kit listing and its QR code modal. */
.kb-public-info-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;}
.kb-public-info-row-head h3{margin:0 0 4px;}
.kb-public-info-row-head p{margin:0;color:var(--muted);}
.kb-public-info-row-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.kb-public-info-qr{display:flex;justify-content:center;align-items:center;min-height:220px;padding:12px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--muted);text-align:center;}
.kb-public-info-contacts-heading{margin:24px 0 12px;}
/* Deliberately NOT .kb-article-list here — that class carries its own
   max-width/padding meant for a top-level page wrapper, and nesting it
   inside .kb-single-article-wrap (which already constrains the width)
   was shrinking the contact cards narrower than the content above them. */
.kb-public-info-contacts-list{display:flex;flex-direction:column;gap:12px;}
.kb-public-info-empty{margin-top:24px;text-align:center;}
/* No status dot on this content (Public Info Pages have no green/amber/red
   status), so its body text has no reason to sit indented under one —
   match the right-hand padding instead of inheriting the 38px left offset
   .kb-article-body-inner otherwise reserves for that dot's column. */
.kb-public-info-article .kb-article-body-inner{padding-left:18px;}
.kb-public-info-preview-banner{
  background:var(--orange-bg);color:var(--navy-900);
  border-radius:var(--radius-sm);padding:10px 14px;
  font-size:13px;font-weight:600;text-align:center;
  margin:0 0 16px;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 16px;
}
.kb-public-info-preview-back{color:var(--navy-900);text-decoration:underline;white-space:nowrap;}
/* This page has no .kb-appbar (see page-public-info-view.php for why), so it
   also has none of that bar's own compensation for two things that would
   otherwise sit on top of this page's content: the fixed, position:0
   "Viewing as <force>" admin bar (.kb-view-as-bar), and — on a phone with a
   notch/camera cutout/Dynamic Island — the device's own safe area, which is
   what was cutting off the top of the yellow preview banner in Preview mode
   on mobile, since nothing here was reserving that space the way every
   .kb-appbar page already does via env(safe-area-inset-top). */
.kb-public-info-view-wrap{padding-top:calc(18px + env(safe-area-inset-top, 0px) + var(--kb-view-as-offset, 0px));}

/* "Save this page" — a member of the public reading this was never asked to
   sign in, so there's no account to save anything to; printing (which every
   browser also offers as "Save as PDF") and a copy of the page's own link
   are the two things that work without one. */
.kb-public-info-save{margin-top:24px;padding-top:18px;border-top:1px solid var(--line);text-align:center;}
.kb-public-info-save-heading{margin:0 0 6px;}
.kb-public-info-save p{margin:0 0 14px;color:var(--muted);}
.kb-public-info-save-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;}
@media print{
  /* Only the guidance and contacts themselves are worth keeping on a printed
     or saved-as-PDF copy — the preview banner and the save controls (along
     with the rest of the site chrome this page normally has none of) mean
     nothing on paper. */
  .kb-no-print{display:none !important;}
}

/* Lock Box — release-code QR code (in the "View my release code" modal). */
.kb-lockbox-qr-section{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);}
.kb-lockbox-qr-wrap{display:flex;justify-content:center;margin:12px 0;padding:12px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm);}
.kb-lockbox-qr-actions{display:flex;flex-direction:column;align-items:center;gap:10px;}
.kb-lockbox-qr-actions .kb-inline-submit{width:100%;max-width:280px;text-align:center;margin-left:0;}
@media(min-width:600px){
  .kb-lockbox-qr-actions{flex-direction:row;flex-wrap:wrap;justify-content:center;}
  .kb-lockbox-qr-actions .kb-inline-submit{width:auto;}
}
#kb-lockbox-qr-email-form{margin-top:14px;}
/* The wysiwyg editor's own hidden mirror textarea — always hidden regardless
   of which container it sits in. Needed because .kb-tool-field textarea's
   display:block is otherwise more specific than the plain [hidden] rule. */
.kb-wysiwyg-raw{display:none !important;}

/* Lock Box — action buttons (View release code / Generate new code / Change
   passcode). Stacked, full-width and centred on mobile; a spaced-out row on
   larger screens, matching how these pill buttons already behave elsewhere. */
.kb-lockbox-actions{
  display:flex;flex-direction:column;align-items:stretch;gap:10px;margin-top:14px;
}
.kb-lockbox-actions .kb-inline-submit,
.kb-lockbox-actions .kb-inline-reset,
.kb-lockbox-actions .kb-inline-delete{
  width:100%;text-align:center;margin-left:0;
}
@media(min-width:960px){
  .kb-lockbox-actions{flex-direction:row;flex-wrap:wrap;align-items:center;}
  .kb-lockbox-actions .kb-inline-submit,
  .kb-lockbox-actions .kb-inline-reset,
  .kb-lockbox-actions .kb-inline-delete{width:auto;}
}

/* Common Offences — shortcut into the LOP Calculator for summary-only offences. */
.kb-offence-lop-btn{
  display:flex;align-items:center;justify-content:center;gap:8px;
  background:var(--navy-900);color:var(--white);text-decoration:none;
  padding:10px 16px;border-radius:999px;font-size:13px;font-weight:600;
  margin-top:14px;text-align:center;
}
.kb-offence-lop-btn svg{width:16px;height:16px;flex:none;fill:currentColor;}
.kb-bail-pause-remove:active{background:var(--red);color:var(--white);}
@media(min-width:960px){
  .kb-bail-pause-remove{flex:none;}
}
.kb-tool-divider{border:none;border-top:1px solid var(--line);margin:22px 0 18px;}
.kb-tool-log-btn{
  width:100%;
  background:none;color:var(--brand-blue);border:1.5px solid var(--brand-blue);
  padding:12px;border-radius:999px;
  font-family:var(--font-display);font-size:14px;font-weight:600;
  cursor:pointer;margin-top:10px;
}
.kb-tool-log-btn:active{background:var(--brand-blue);color:var(--white);}
.kb-tool-warning{
  background:var(--orange-bg);color:var(--orange);
  padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;line-height:1.4;margin:0 0 16px;
}

/* -------------------------------------------------------
   CCTV TIME LOGS
------------------------------------------------------- */
.kb-cctv-log-list{display:flex;flex-direction:column;gap:12px;}
.kb-cctv-log-row{
  background:var(--white);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-tap);
  padding:16px;
}
.kb-cctv-log-text{font-size:14.5px;color:var(--ink);line-height:1.5;margin:0 0 8px;}
.kb-cctv-log-ref{font-size:13px;color:var(--navy-700);font-weight:600;margin:0 0 6px;}
.kb-cctv-log-meta{font-size:12px;color:var(--muted);margin:0 0 12px;}
.kb-cctv-log-actions{display:flex;gap:8px;}
.kb-cctv-log-delete{
  flex:none;
  border:1.5px solid var(--red);
  color:var(--red);
  background:var(--white);
  padding:6px 14px;
  border-radius:999px;
  font-size:12.5px;font-weight:600;
  cursor:pointer;
}
.kb-cctv-log-delete:active{background:var(--red);color:var(--white);}
.kb-cctv-log-filters{
  background:var(--white);border-radius:var(--radius-md);box-shadow:var(--shadow-tap);
  padding:16px;margin-bottom:16px;
}
.kb-cctv-log-filters .kb-tool-field{margin-bottom:12px;}
.kb-cctv-log-filters input[type="text"],
.kb-cctv-log-filters input[type="date"]{
  display:block;
  width:100%;max-width:100%;min-width:0;
  height:46px;line-height:42px;
  -webkit-appearance:none;appearance:none;
  padding:0 13px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:16px;font-family:inherit;box-sizing:border-box;
}
.kb-cctv-log-filter-actions{display:flex;flex-direction:column;}
.kb-cctv-log-filter-actions-spacer{
  visibility:hidden;display:block;font-size:13px;font-weight:600;margin-bottom:6px;
}
.kb-cctv-log-filter-actions-buttons{display:flex;gap:8px;flex-wrap:wrap;}
.kb-cctv-log-filter-actions .kb-tool-now-btn{
  text-decoration:none;display:inline-flex;align-items:center;justify-content:center;
}
@media(max-width:559px){
  .kb-cctv-log-filter-actions-spacer{display:none;}
  .kb-cctv-log-filter-actions .kb-tool-now-btn{width:100%;}
}
@media(min-width:560px){
  .kb-cctv-log-filters{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;}
  .kb-cctv-log-filters .kb-tool-field{flex:1;min-width:180px;margin-bottom:0;}
  .kb-cctv-log-filter-actions{margin-bottom:0;}
  .kb-cctv-log-filter-actions .kb-tool-now-btn{height:46px;box-sizing:border-box;}
  .kb-ot-filter-search{order:1;}
  .kb-ot-filter-search label, .kb-ot-filter-perpage label{min-height:39px;}
  .kb-ot-filter-perpage{order:2;}
  .kb-ot-filter-payment{order:3;}
  .kb-ot-filter-status{order:4;}
  .kb-ot-filter-reason{order:5;}
  .kb-cctv-log-filter-actions{order:6;}
}
.kb-pagination{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:18px;padding-top:16px;border-top:1px solid var(--line);
}
.kb-pagination-link{
  color:var(--brand-blue);text-decoration:none;font-size:13.5px;font-weight:600;
  padding:8px 12px;border-radius:var(--radius-sm);
}
.kb-pagination-link:active{background:var(--paper-dim);}
.kb-pagination-link--disabled{color:var(--line);pointer-events:none;}
.kb-pagination-status{color:var(--muted);font-size:13px;}
.kb-pagination-numbers{display:flex;align-items:center;gap:2px;flex-wrap:wrap;justify-content:center;}
.kb-pagination-number{
  color:var(--brand-blue);text-decoration:none;font-size:13.5px;font-weight:600;
  padding:6px 10px;border-radius:var(--radius-sm);min-width:16px;text-align:center;
}
.kb-pagination-number:active{background:var(--paper-dim);}
.kb-pagination-number--current{background:var(--navy-900);color:var(--white);pointer-events:none;}
.kb-pagination-ellipsis{color:var(--muted);padding:0 4px;font-size:13.5px;}
.kb-tool-calculate-btn--secondary{
  background:none;color:var(--navy-900);border:1.5px solid var(--line);
}
.kb-tool-calculate-btn--secondary:active{background:var(--paper-dim);}
.kb-repeat-add{
  background:none;border:1.5px dashed var(--line);color:var(--navy-700);
  padding:8px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;
  cursor:pointer;width:100%;margin-bottom:14px;
}
.kb-repeat-add:active{background:var(--paper-dim);}
.kb-repeat-remove{
  background:none;border:none;color:var(--red);font-size:12.5px;font-weight:600;
  cursor:pointer;padding:2px 0;text-decoration:underline;
}

/* -------------------------------------------------------
   REPORT A PROBLEM
------------------------------------------------------- */
.kb-report-row{margin-top:16px;padding-top:14px;border-top:1px dashed rgba(13,27,42,.15);}

/* -------------------------------------------------------
   INLINE ADD / EDIT FORMS (Force Editor content tools)
------------------------------------------------------- */
.kb-add-form{
  max-width:720px;margin:0 auto 4px;
  background:var(--white);
  border:1.5px dashed var(--brand-blue);
  border-radius:var(--radius-md);
  padding:4px 16px;
}
.kb-add-form summary{
  cursor:pointer;
  padding:10px 0;
  font-family:var(--font-display);
  font-weight:600;font-size:14px;
  color:var(--brand-blue);
  list-style:none;
}
.kb-add-form summary::-webkit-details-marker{display:none;}
.kb-add-form form{padding:4px 0 16px;}
.kb-add-form label{display:block;font-size:13px;font-weight:600;color:var(--navy-900);margin-bottom:6px;}
.kb-add-form input[type=text],
.kb-add-form textarea{
  width:100%;
  padding:11px 13px;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px;
  font-family:inherit;
  background:var(--paper);
  margin-bottom:12px;
}
.kb-inline-submit{
  background:var(--brand-blue);color:var(--white);border:none;
  padding:10px 20px;border-radius:999px;font-family:var(--font-display);
  font-size:14px;font-weight:600;cursor:pointer;
}
.kb-inline-submit:active{background:var(--brand-blue-dark);}
.kb-inline-delete{
  background:none;border:1.5px solid var(--red);color:var(--red);
  padding:10px 20px;border-radius:999px;font-family:var(--font-display);
  font-size:14px;font-weight:600;cursor:pointer;margin-left:8px;
}
.kb-inline-delete:active{background:var(--red);color:var(--white);}
.kb-edit-block{
  margin-top:16px;border-color:var(--muted);
}
.kb-edit-block summary{color:var(--muted);}
.kb-updated{
  display:flex;align-items:center;gap:6px;
  color:var(--muted);font-size:12px;margin:14px 0 0;
}
.kb-updated .dashicons{font-size:15px;width:15px;height:15px;}
.kb-page-title{
  font-family:var(--font-display);font-weight:700;font-size:26px;color:var(--navy-900);
  margin:0 0 4px;
}
.kb-page-title + .kb-updated{margin:0 0 20px;}
.kb-article-content + .kb-tool-card{margin-top:24px;}
.kb-contact-dept-list{list-style:none;margin:0;padding:0;}
.kb-contact-dept-list li{font-size:14px;padding:8px 0;border-bottom:1px solid var(--line);}
.kb-contact-dept-list li:last-child{border-bottom:none;}
.kb-contact-dept-list a{color:var(--navy-700);}
.kb-report-btn{
  background:none;border:none;color:var(--muted);font-size:13px;
  display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:0;
}
.kb-report-btn .dashicons{font-size:16px;width:16px;height:16px;}
.kb-report-btn:active{color:var(--red);}

.kb-modal-overlay{
  position:fixed;inset:0;background:rgba(5,15,31,.55);
  display:flex;align-items:center;justify-content:center;
  padding:20px;
  padding-top:max(20px, env(safe-area-inset-top, 0px));
  padding-bottom:max(20px, env(safe-area-inset-bottom, 0px));
  padding-left:max(20px, env(safe-area-inset-left, 0px));
  padding-right:max(20px, env(safe-area-inset-right, 0px));
  z-index:100;
}
.kb-modal-overlay[hidden]{
  display:none;
}
.kb-modal{
  background:var(--white);
  width:100%;max-width:min(420px, calc(100vw - 40px));
  max-height:calc(100dvh - max(20px, env(safe-area-inset-top, 0px)) - max(20px, env(safe-area-inset-bottom, 0px)));
  overflow-y:auto;
  border-radius:var(--radius-lg);
  padding:26px 24px 24px;
  position:relative;
  box-sizing:border-box;
}
.kb-modal-wide{max-width:min(560px, calc(100vw - 40px));}
.kb-modal-terms .kb-terms-content{
  max-height:min(60vh, 500px);overflow-y:auto;
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:14px 16px;margin-top:4px;background:var(--white);
  font-size:13.5px;line-height:1.6;color:var(--navy-900);
}
.kb-modal-terms .kb-terms-content > *:first-child{margin-top:0;}
.kb-modal-terms .kb-terms-content > *:last-child{margin-bottom:0;}
.kb-modal-terms .kb-modal-sub{margin-top:10px;margin-bottom:0;font-size:12px;}

/* Guide builder (front-end modals + wp-admin meta box) */
.kb-guide-builder{margin-top:10px;}
.kb-guide-tree, .kb-guide-unlinked{margin-top:14px;}
.kb-guide-unlinked h4{font-size:13px;color:var(--red);}
.kb-guide-unlinked .description{font-weight:400;color:var(--muted);font-size:12px;}
.kb-guide-step{
  border:1.5px solid var(--line);border-left:4px solid var(--brand-blue);border-radius:var(--radius-md);
  padding:14px;margin-bottom:14px;background:var(--paper-dim);
}
/* Each nesting level sits visually indented and slightly recessed, so the tree's shape
   (which branches converge, how deep a path goes) is visible without reading numbers. */
.kb-guide-answer-target .kb-guide-step{margin-left:18px;background:var(--white);}
.kb-guide-answer-target .kb-guide-answer-target .kb-guide-step{border-left-color:var(--orange);}
.kb-guide-answer-target .kb-guide-answer-target .kb-guide-answer-target .kb-guide-step{border-left-color:var(--red);}
.kb-guide-step h4{margin:0 0 10px;font-size:14px;}
.kb-guide-answers{margin-top:10px;}
.kb-guide-answer-row{
  border:1.5px dashed var(--line);border-radius:var(--radius-sm);
  padding:10px;margin-bottom:10px;
}
.kb-guide-answer-row-main{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.kb-guide-answer-row-main .kb-guide-answer-label{flex:1;min-width:120px;padding:8px;border:1.5px solid var(--line);border-radius:var(--radius-sm);}
.kb-guide-answer-target{margin-left:4px;}
.kb-guide-choose-add, .kb-guide-choose-link, .kb-guide-link-confirm, .kb-guide-link-cancel, .kb-guide-link-jump, .kb-guide-link-change{
  background:none;border:1.5px dashed var(--line);color:var(--navy-700);
  padding:6px 10px;border-radius:var(--radius-sm);font-size:12.5px;font-weight:600;
  cursor:pointer;margin-right:6px;margin-bottom:4px;
}
.kb-guide-choose-add{border-color:var(--brand-blue);color:var(--brand-blue);}
.kb-guide-choose-end{font-size:12px;color:var(--muted);}
.kb-guide-link-picker{padding:6px;border:1.5px solid var(--line);border-radius:var(--radius-sm);margin-right:6px;margin-bottom:4px;max-width:260px;}
.kb-guide-link-ref{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  background:var(--white);border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:8px 10px;font-size:12.5px;
}
.kb-guide-ending-link{margin-top:10px;}
.kb-guide-ending-link input{width:100%;margin-bottom:6px;box-sizing:border-box;}
.kb-guide-remove-step{margin-top:10px;}
.kb-guide-error{color:var(--red);font-weight:600;}

/* Live visual flow overview — node cards showing each step and its outgoing answers,
   updating as the admin types, so the branching structure is visible at a glance. */
.kb-guide-overview{
  display:flex;flex-wrap:wrap;gap:10px;
  margin:14px 0;padding:14px;
  background:var(--white);border:1.5px solid var(--line);border-radius:var(--radius-md);
}
.kb-guide-node{
  display:flex;flex-direction:column;gap:4px;text-align:left;
  min-width:160px;max-width:220px;flex:1 1 160px;
  background:var(--paper-dim);border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:10px 12px;cursor:pointer;font-family:inherit;
}
.kb-guide-node:active{background:var(--line);}
.kb-guide-node--orphan{border-color:var(--red);background:var(--red-bg);}
.kb-guide-node-num{font-size:11.5px;font-weight:700;color:var(--navy-700);text-transform:uppercase;letter-spacing:.03em;}
.kb-guide-node-text{font-size:13px;color:var(--ink);line-height:1.4;}
.kb-guide-node-text em{color:var(--muted);font-style:italic;}
.kb-guide-node-links{display:flex;flex-direction:column;gap:3px;margin-top:2px;}
.kb-guide-node-link{font-size:11.5px;color:var(--navy-700);background:var(--white);border-radius:4px;padding:2px 6px;}
.kb-guide-node-link--end{color:var(--muted);}
.kb-guide-node-orphan-tag{font-size:11px;font-weight:700;color:var(--red);margin-top:2px;}
.kb-guide-step-warning{
  display:inline-block;margin-left:8px;font-size:11.5px;font-weight:700;
  color:var(--red);vertical-align:middle;
}
.kb-guide-step-warning[hidden]{display:none;}
.kb-guide-step--flash{box-shadow:0 0 0 3px var(--brand-blue);}

/* Guide listing card — distinct from an article card so guides are easy to spot */
.kb-guide-section-heading h3{display:flex;align-items:center;gap:8px;}
.kb-guide-card{
  display:block;text-decoration:none;color:inherit;
}
.kb-guide-card-icon{color:var(--brand-blue);font-size:22px;width:22px;height:22px;flex:none;}
.kb-guide-card-arrow{color:var(--muted);}

/* Interactive guide viewer (single-kb_guide.php) — shares the .kb-article class for
   its status-colour background (green/amber/red), so its own background is left
   unset here, letting that shared rule apply; everything else here is purely
   structural and layers on top without conflict. */
.kb-guide-viewer{
  border-radius:var(--radius-md);box-shadow:var(--shadow-tap);overflow:visible;
  padding:20px;margin-bottom:16px;
}
@media(max-width:959px){
  .kb-guide-viewer{margin-top:18px;}
}
.kb-guide-viewer-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;}
.kb-guide-viewer-head .dashicons{color:var(--brand-blue);font-size:28px;width:28px;height:28px;flex:none;}
.kb-guide-viewer-head h2{margin:0 0 4px;}
.kb-guide-viewer-head p{margin:0;color:var(--muted);}
.kb-guide-viewer-step-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.kb-guide-viewer-progress{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px;flex:1;}
.kb-guide-info-btn{
  flex:none;width:26px;height:26px;border-radius:50%;margin-bottom:8px;
  background:var(--paper-dim);border:1.5px solid var(--line);color:var(--navy-700);
  font-size:15px;cursor:pointer;line-height:1;padding:0;
  display:flex;align-items:center;justify-content:center;
}
.kb-guide-info-btn[hidden]{display:none;}
.kb-guide-info-btn:active{background:var(--line);}
.kb-guide-viewer-text{font-size:15px;line-height:1.6;margin-bottom:16px;}
.kb-guide-viewer-answers{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;}
.kb-guide-answer-btn{
  display:block;width:100%;text-align:center;box-sizing:border-box;
  background:var(--blue-bg);border:1.5px solid var(--brand-blue-light);border-radius:var(--radius-sm);
  padding:12px 16px;font-size:14.5px;font-weight:600;color:var(--navy-900);
  cursor:pointer;text-decoration:none;
}
.kb-guide-answer-btn:active{background:var(--brand-blue-light);}
.kb-guide-end-link{background:var(--brand-blue);border-color:var(--brand-blue);color:var(--white);}
.kb-guide-viewer-nav{display:flex;gap:10px;}

/* Guidance library accordion (articles + guides) — each item toggles independently */
.kb-guidance-accordion{margin-top:16px;margin-bottom:20px;}
.kb-guidance-item{
  border:1.5px solid var(--line);border-radius:var(--radius-md);
  margin-bottom:10px;overflow:hidden;
}
.kb-guidance-item-toggle{
  display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:var(--paper-dim);border:none;padding:12px 14px;
  font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--navy-900);
  text-align:left;cursor:pointer;
}
.kb-guidance-item-header-text{display:flex;flex-direction:column;gap:2px;min-width:0;}
.kb-guidance-item-description{font-family:var(--font-body);font-weight:400;font-size:12.5px;color:var(--muted);}
.kb-guidance-item-chevron{font-size:16px;color:var(--muted);flex:none;transition:transform .2s ease;}
.kb-guidance-item-toggle[aria-expanded="true"] .kb-guidance-item-chevron{transform:rotate(180deg);}
.kb-guidance-item-body{max-height:0;overflow:hidden;transition:max-height .28s ease;background:var(--white);}
.kb-guidance-item-body-inner{padding:14px;font-size:14px;line-height:1.6;}
.kb-guidance-field{margin-bottom:12px;}
.kb-guidance-field-label{font-weight:600;color:var(--navy-900);}
.kb-guidance-case-file-layout{display:flex;flex-direction:column;gap:4px;}
.kb-guidance-body-text{flex:1 1 auto;min-width:0;}
.kb-guidance-example-file{
  flex:none;align-self:flex-end;display:flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:var(--radius-sm);
  background:var(--blue-bg);color:var(--brand-blue);text-decoration:none;
}
.kb-guidance-example-file .dashicons{font-size:20px;width:20px;height:20px;}
.kb-guidance-example-file:active{background:var(--brand-blue-light);}
@media(min-width:960px){
  .kb-guidance-case-file-layout{flex-direction:row;align-items:flex-start;gap:14px;}
  .kb-guidance-example-file{align-self:flex-start;}
}

/* Inline accordion — inserted directly into article/guide-step content via the
   WYSIWYG "Insert accordion" toolbar button (see inc/inline-accordion.php) */
.kb-inline-accordion{
  border:1.5px solid var(--line);border-radius:var(--radius-md);
  margin:16px 0;overflow:hidden;
}
.kb-inline-accordion-toggle{
  display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  background:var(--paper-dim);border:none;margin:0;box-sizing:border-box;
  padding:12px 14px;line-height:1.3;
  font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--navy-900);
  text-align:left;cursor:pointer;
}
.kb-inline-accordion-chevron{font-size:16px;color:var(--muted);flex:none;transition:transform .2s ease;}
.kb-inline-accordion-toggle[aria-expanded="true"] .kb-inline-accordion-chevron{transform:rotate(180deg);}
.kb-inline-accordion-body{max-height:0;overflow:hidden;transition:max-height .28s ease;background:var(--white);}
.kb-inline-accordion-body-inner{padding:14px;font-size:14px;line-height:1.6;}
.kb-inline-accordion-body-inner > *:first-child{margin-top:0;}
.kb-inline-accordion-body-inner > *:last-child{margin-bottom:0;}
/* Some browsers, when inserting the accordion via the WYSIWYG toolbar, leave a
   stray empty paragraph inside the wrapper (between the header and the body)
   rather than after it as intended — hide it wherever it ends up. */
.kb-inline-accordion > p:empty,
.kb-inline-accordion > p:has(> br:only-child){display:none;}
/* Inside the editor itself, always show the body so its content stays reachable
   and editable — collapsing only applies once the content is actually published */
.kb-wysiwyg-editable .kb-inline-accordion-body{max-height:none;}

/* Definitions — inline term inserted via [kb_def], and its insert-picker modal */
.kb-def-term{
  background:none;border:none;padding:0;margin:0;font:inherit;cursor:pointer;
  color:var(--brand-blue);text-decoration:underline;text-decoration-style:dotted;
  text-underline-offset:2px;
}
.kb-def-display-choice{display:flex;gap:16px;margin-bottom:12px;font-size:14px;}
.kb-def-display-choice[hidden]{display:none !important;}
.kb-def-display-choice label{display:flex;align-items:center;gap:6px;cursor:pointer;}
.kb-def-display-choice .description{color:var(--muted);font-size:12.5px;}
.kb-def-picker-search{
  width:100%;padding:11px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:16px;background:var(--paper);margin-bottom:12px;
}
.kb-def-picker-list{max-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:2px;}
.kb-def-picker-item{
  text-align:left;background:none;border:none;border-radius:var(--radius-sm);
  padding:10px 12px;font-size:14.5px;color:var(--ink);cursor:pointer;
}
.kb-def-picker-item:hover,.kb-def-picker-item:active{background:var(--paper-dim);}
.kb-modal-close{
  position:absolute;top:14px;right:14px;
  background:none;border:none;font-size:22px;color:var(--muted);cursor:pointer;line-height:1;
}
.kb-modal h3{margin-bottom:16px;}
.kb-modal-sub{color:var(--muted);font-size:13.5px;margin:0 0 14px;}
.kb-modal textarea{
  width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:12px 14px;font-family:inherit;font-size:16px;resize:vertical;
}
.kb-modal-status{font-size:13px;color:var(--green);min-height:0;margin:0;}
.kb-modal-status:not(:empty){min-height:18px;margin:8px 0 0;}
#kb-fin-status{color:var(--red);}
.kb-image-file{
  width:100%;
  padding:12px;
  border:1.5px dashed var(--line);
  border-radius:var(--radius-sm);
  font-size:14px;
  background:var(--paper);
}

.kb-image-tabs{
  display:flex;gap:6px;margin-bottom:16px;
  background:var(--paper-dim);border-radius:999px;padding:4px;
}
.kb-image-tab{
  flex:1;border:none;background:none;
  padding:9px 0;border-radius:999px;
  font-family:var(--font-display);font-size:13.5px;font-weight:600;
  color:var(--muted);cursor:pointer;
}
.kb-image-tab.is-active{background:var(--white);color:var(--navy-900);box-shadow:var(--shadow-tap);}

.kb-image-search{
  width:100%;
  padding:11px 14px;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px;
  background:var(--paper);
  margin-bottom:12px;
}
.kb-image-grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  max-height:280px;
  overflow-y:auto;
}
.kb-image-thumb{
  aspect-ratio:1;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  overflow:hidden;
  padding:0;background:var(--paper);cursor:pointer;
}
.kb-image-thumb:active{border-color:var(--brand-blue);}
.kb-image-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
#kb-image-load-more.kb-image-load-more{width:100%;margin:12px 0 0;}
.kb-modal-status.is-error{color:var(--red);}
.kb-modal-submit{
  margin-top:10px;width:100%;
  background:var(--brand-blue);color:var(--white);border:none;
  padding:13px;border-radius:999px;font-family:var(--font-display);font-size:15px;font-weight:600;cursor:pointer;
}
.kb-modal-submit:active{background:var(--brand-blue-dark);}
.kb-modal-submit[disabled]{opacity:.6;}

/* -------------------------------------------------------
   FORMS INSIDE MODALS (Add/Edit Category, Article, Contact)
------------------------------------------------------- */
.kb-modal form p{margin:0 0 14px;}
#kb-ot-salary-modal .kb-mp-two-col label{min-height:39px;}
.kb-modal form label,
.kb-field-group > label{
  display:block;font-size:13px;font-weight:600;color:var(--navy-900);margin-bottom:6px;
}
.kb-modal form input[type=text],
.kb-modal form input[type=email],
.kb-modal form input[type=url],
.kb-modal form input[type=password],
.kb-modal form input[type=number],
.kb-modal form select,
.kb-modal form textarea{
  width:100%;
  padding:11px 13px;
  border:1.5px solid var(--line);
  border-radius:var(--radius-sm);
  font-size:16px;
  font-family:inherit;
  background:var(--paper);
}
.kb-field-group{margin-bottom:16px;}
.kb-modal form .kb-btn-type-choice label{
  display:flex;align-items:center;gap:8px;font-weight:400;font-size:14.5px;
  color:var(--ink);margin-bottom:8px;text-transform:none;
}
.kb-btn-type-choice label:last-child{margin-bottom:0;}
/* A reader-facing content button (inserted via the WYSIWYG's "Insert
   button" tool) — styled after .kb-cta-button, the site's real large
   rounded call-to-action pill, not the smaller edit-form action buttons.
   !important on colour/underline: wherever this button lands, it needs to
   win over that content type's own link styling (e.g. .kb-article-content
   a's navy underlined text), or it renders as unreadable dark-on-dark. */
.kb-inline-btn,
.kb-inline-btn:link,
.kb-inline-btn:visited{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--navy-900);color:var(--white) !important;
  padding:13px 26px;border-radius:999px;font-family:var(--font-display);
  font-size:14.5px;font-weight:600;text-decoration:none !important;line-height:1.3;
  box-shadow:var(--shadow-tap);
}
.kb-inline-btn:active{background:var(--navy-700);color:var(--white) !important;}
.kb-cta-row{
  max-width:720px;margin:16px auto 4px;padding:0 18px 30px;
  display:flex;flex-wrap:wrap;justify-content:center;gap:10px;
}
.kb-cta-button{
  background:var(--navy-900);color:var(--white);border:none;
  padding:13px 26px;border-radius:999px;
  font-family:var(--font-display);font-size:14.5px;font-weight:600;
  cursor:pointer;
  display:inline-flex;align-items:center;gap:8px;
  text-decoration:none;
}
.kb-cta-button .dashicons{font-size:16px;width:16px;height:16px;}
.kb-cta-button--secondary{
  background:none;color:var(--navy-900);border:1.5px solid var(--line);
}
.kb-cta-button--secondary:active{background:var(--paper-dim);}

.kb-manage-list{display:flex;flex-direction:column;gap:12px;}
.kb-manage-row{
  display:flex;gap:14px;
  background:var(--white);
  border-radius:var(--radius-md);
  box-shadow:var(--shadow-tap);
  padding:16px;
}
.kb-manage-row-icon{
  width:40px;height:40px;flex:none;border-radius:50%;
  background:var(--navy-900);color:var(--white);
  display:flex;align-items:center;justify-content:center;
}
.kb-manage-row-icon svg{width:18px;height:18px;}
.kb-manage-row-icon .dashicons{font-size:18px;width:18px;height:18px;}
.kb-manage-row-body{flex:1;min-width:0;}
.kb-manage-row-body h4{margin:0 0 2px;font-size:15px;}
.kb-manage-row-body p{margin:0 0 8px;font-size:12.5px;color:var(--muted);}

.kb-manage-group{display:flex;flex-direction:column;gap:10px;}
.kb-manage-row--master{border-left:4px solid var(--brand-blue);}
.kb-manage-children{
  display:flex;flex-direction:column;gap:10px;
  margin-left:24px;padding-left:14px;
  border-left:2px dashed var(--line);
}
.kb-manage-row--child{border-left:4px solid var(--line);}
.kb-manage-readonly{font-style:italic;color:var(--muted);font-size:12.5px;margin:0;}
.kb-cta-button:active{background:var(--navy-700);}
.kb-edit-link{
  display:inline-block;margin-top:14px;
  background:none;border:none;color:var(--muted);
  font-size:13px;font-weight:600;text-decoration:underline;cursor:pointer;padding:0;
}

.kb-status-guidance{margin:8px 0 16px;}
.kb-status-guidance p{font-size:12.5px;color:var(--muted);line-height:1.5;margin:0 0 4px;}
.kb-status-guidance strong{color:var(--ink);}

.kb-wysiwyg{border:1.5px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--white);}
.kb-wysiwyg-toolbar{
  display:flex;flex-wrap:wrap;gap:4px;padding:8px;background:var(--paper-dim);border-bottom:1px solid var(--line);
}
.kb-wysiwyg-toolbar button{
  background:var(--white);border:1px solid var(--line);border-radius:6px;
  width:32px;height:32px;font-size:13px;cursor:pointer;color:var(--navy-900);
  display:inline-flex;align-items:center;justify-content:center;padding:0;
}
.kb-wysiwyg-toolbar button .dashicons{font-size:16px;width:16px;height:16px;}
.kb-wysiwyg-toolbar button:active{background:var(--paper-dim);}
.kb-wysiwyg-editable{
  min-height:160px;max-height:320px;overflow-y:auto;
  padding:12px 14px;font-size:16px;line-height:1.5;font-family:var(--font-body);
}
.kb-wysiwyg-editable:focus{outline:none;}
.kb-wysiwyg-editable img{max-width:100%;}

.kb-wysiwyg-editable .kb-inline-table,
.kb-article-content .kb-inline-table,
.kb-guide-viewer-text .kb-inline-table{
  width:100%;max-width:100%;border-collapse:collapse;margin:0 0 1em;font-size:inherit;
}
.kb-wysiwyg-editable .kb-inline-table th,
.kb-wysiwyg-editable .kb-inline-table td,
.kb-article-content .kb-inline-table th,
.kb-article-content .kb-inline-table td,
.kb-guide-viewer-text .kb-inline-table th,
.kb-guide-viewer-text .kb-inline-table td{
  border:1.5px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top;
  background:var(--white);
}
.kb-wysiwyg-editable .kb-inline-table th,
.kb-article-content .kb-inline-table th,
.kb-guide-viewer-text .kb-inline-table th{
  background:var(--paper-dim);font-weight:600;color:var(--navy-900);
}

.kb-icon-picker{display:flex;align-items:center;gap:12px;}
.kb-icon-preview{
  width:42px;height:42px;flex:none;border-radius:50%;
  background:var(--navy-900);color:var(--white);
  display:flex;align-items:center;justify-content:center;
}
.kb-icon-preview-glyph{display:inline-flex;align-items:center;justify-content:center;}
.kb-icon-preview-glyph[hidden]{display:none;}
.kb-icon-preview .dashicons{font-size:20px;width:20px;height:20px;}
.kb-icon-preview-glyph svg{width:20px;height:20px;}
.kb-icon-picker select{flex:1;}
.kb-cat-icon svg{width:24px;height:24px;}

.kb-inline-reset{
  background:none;border:1.5px solid var(--line);color:var(--muted);
  padding:10px 20px;border-radius:999px;font-family:var(--font-display);
  font-size:14px;font-weight:600;cursor:pointer;margin-left:8px;
}
.kb-inline-reset:active{background:var(--paper-dim);}

/* Overtime Tracker */
.kb-ot-list{display:flex;flex-direction:column;gap:10px;margin-top:18px;}
.kb-ot-row{
  border-radius:var(--radius-md);box-shadow:var(--shadow-tap);
  padding:14px 16px;
  display:grid;grid-template-columns:1fr auto;
  grid-template-areas:"main select" "actions actions";
  column-gap:12px;row-gap:10px;
  align-items:start;
}
.kb-ot-row--selected{filter:brightness(0.93);}
.kb-ot-row-select{grid-area:select;padding-top:2px;}
.kb-ot-row-select input{cursor:pointer;}
.kb-ot-row-main{grid-area:main;min-width:0;}
.kb-ot-row-label{font-size:14.5px;font-weight:600;color:var(--ink);margin:0 0 4px;}
.kb-ot-payment-badge{
  display:inline-block;font-size:10px;font-weight:700;letter-spacing:.3px;
  padding:2px 8px;border-radius:999px;margin-left:6px;vertical-align:middle;
  text-transform:uppercase;
}
.kb-ot-payment-badge--payment{background:var(--navy-900);color:var(--white);}
.kb-ot-payment-badge--toil{background:var(--brand-blue);color:var(--white);}
.kb-ot-row-meta{font-size:12.5px;color:var(--muted);margin:0;}
.kb-ot-row-comments{font-size:12.5px;color:var(--ink);font-style:italic;margin:4px 0 0;}
.kb-ot-row-estimate{font-size:12.5px;font-weight:600;color:var(--navy-900);margin:4px 0 0;}
.kb-ot-row-autoupdated{font-size:12px;font-weight:600;color:var(--orange);margin:2px 0 0;}
.kb-ot-row-autodelete{font-size:12px;color:var(--muted);margin:4px 0 0;}
.kb-ot-row-actions{grid-area:actions;display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:space-between;}
.kb-ot-row-buttons{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}

/* -------------------------------------------------------
   RECORD EXPENSES — reuses most of the Overtime Tracker's
   .kb-ot-* row/tile/list/bulk-bar structure; these are the
   parts specific to expense claims.
------------------------------------------------------- */
/* Its own status colour classes (rather than reusing .kb-ot-row--/.kb-ot-tile-- with the
   Overtime Tracker's status keys) so the two tools' colour schemes can be set independently
   — the Overtime Tracker keeps its own booked/worked/submitted/paid mapping untouched. */
.kb-exp-status-logged{background:var(--blue-bg);}
.kb-exp-status-submitted{background:var(--red-bg);}
.kb-exp-status-approved{background:var(--yellow-bg);}
.kb-exp-status-paid{background:var(--green-bg);}
.kb-ot-tiles--4{grid-template-columns:repeat(4, 1fr);}
@media(max-width:699px){
  .kb-ot-tiles--4{grid-template-columns:repeat(2, 1fr);}
}
.kb-exp-type-badge{
  display:inline-block;font-size:10px;font-weight:700;letter-spacing:.3px;
  padding:2px 8px;border-radius:999px;margin-left:6px;vertical-align:middle;
  text-transform:uppercase;background:var(--navy-900);color:var(--white);
}
.kb-exp-mileage-rate{font-size:12px;font-weight:400;color:var(--muted);text-transform:none;letter-spacing:normal;}
.kb-exp-receipt-link{margin:8px 0 0;display:flex;flex-wrap:wrap;gap:8px;}
.kb-exp-receipt-thumb-link{display:inline-block;}
.kb-exp-receipt-thumb{
  display:block;width:72px;height:72px;object-fit:cover;
  border-radius:var(--radius-sm);border:1.5px solid var(--line);
}
.kb-exp-receipt-docs{margin:8px 0 0;display:flex;flex-direction:column;gap:6px;}
.kb-exp-receipt-file-link{
  display:flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;
  color:var(--brand-blue);text-decoration:none;
}
.kb-exp-receipt-file-link .dashicons{font-size:16px;width:16px;height:16px;flex:none;}

/* Edit-modal receipt list — each uploaded receipt with its own delete control, replacing
   the earlier single "remove the current receipt" checkbox now that a claim can carry
   several receipts. */
.kb-exp-edit-receipts-list{
  list-style:none;margin:0 0 4px;padding:0;
  display:flex;flex-direction:column;gap:8px;
}
.kb-exp-edit-receipt-item{
  display:flex;align-items:center;gap:10px;
  background:var(--paper-dim);border-radius:var(--radius-sm);
  padding:8px 10px;
}
.kb-exp-edit-receipt-link{
  flex:1;min-width:0;display:flex;align-items:center;gap:8px;
  color:var(--ink);text-decoration:none;
}
.kb-exp-edit-receipt-link .dashicons{font-size:20px;width:20px;height:20px;flex:none;color:var(--muted);}
.kb-exp-edit-receipt-thumb{
  width:40px;height:40px;object-fit:cover;flex:none;
  border-radius:var(--radius-sm);border:1.5px solid var(--line);
}
.kb-exp-edit-receipt-name{
  font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.kb-exp-edit-receipt-remove{
  flex:none;width:26px;height:26px;border-radius:999px;
  border:1.5px solid var(--line);background:var(--white);color:var(--red);
  font-size:16px;line-height:1;cursor:pointer;
}
.kb-exp-edit-receipt-remove:active{background:var(--red-bg);}
.kb-exp-receipt-modal-body{margin:0 0 14px;text-align:center;}
.kb-exp-receipt-modal-img{max-width:100%;max-height:70vh;border-radius:var(--radius-sm);display:inline-block;}
.kb-exp-receipt-modal-frame{width:100%;height:70vh;border:0;border-radius:var(--radius-sm);background:var(--paper-dim);}
.kb-exp-receipt-modal-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;}
.kb-exp-receipt-modal-download,
#kb-exp-receipt-modal-email-toggle{display:inline-block;margin:0;text-decoration:none;}
@media(max-width:699px){
  /* Downloading straight to a phone's file system is little use there, and it's the one
     escape hatch that can still leave someone looking at a bare file with no way back into
     the app — so it's hidden on narrow (mobile) views. Email remains available instead. */
  .kb-exp-receipt-modal-download{display:none;}
}
.kb-exp-receipt-modal-email{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);text-align:left;}
/* Shared by both the single-receipt and bulk "email this" panels, matching the same input
   style used for forms inside other modals sitewide (see FORMS INSIDE MODALS, above) even
   though these two panels aren't wrapped in an actual <form>. */
.kb-exp-email-label{display:block;font-size:13px;font-weight:600;color:var(--navy-900);margin-bottom:6px;}
.kb-exp-email-input{
  width:100%;padding:11px 13px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:16px;font-family:inherit;background:var(--paper);box-sizing:border-box;
  margin-bottom:14px;
}
.kb-ot-row-btn{
  flex:none;
  border:1.5px solid var(--line);
  color:var(--navy-700);
  background:var(--white);
  padding:6px 14px;
  border-radius:999px;
  font-size:12.5px;font-weight:600;
  cursor:pointer;
}
.kb-ot-row-btn:active{background:var(--paper-dim);}
.kb-ot-status-select,
.kb-exp-status-select{
  padding:8px 10px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:13px;font-family:inherit;background:var(--white);
}
.kb-ot-bulk-row{
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;
  margin-top:18px;margin-bottom:14px;
}
.kb-ot-bulk-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.kb-ot-select-all-label{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--navy-700);cursor:pointer;}
.kb-ot-bulk-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.kb-ot-bulk-count{font-size:13px;color:var(--muted);}
.kb-ot-bulk-actions select{
  padding:8px 10px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:13px;font-family:inherit;background:var(--white);
}
.kb-exp-bulk-email{display:flex;flex-direction:column;gap:6px;}
.kb-exp-bulk-email .kb-field-hint{margin:0;max-width:220px;}
@media(max-width:559px){
  .kb-ot-bulk-row{flex-direction:column;align-items:stretch;}
  #kb-ot-bulk-delete-btn{width:100%;}
}
.kb-ot-details{margin-top:6px;}
.kb-ot-details summary{font-size:12px;color:var(--navy-700);font-weight:600;cursor:pointer;}
.kb-ot-details p{font-size:12px;color:var(--muted);margin:6px 0 0;}
.kb-ot-add-toggle{font-size:17px;}
.kb-ot-sort-toggle{
  flex:none;width:30px;height:30px;border-radius:50%;
  background:var(--paper-dim);border:1.5px solid var(--line);color:var(--navy-700);
  font-size:15px;line-height:1;text-decoration:none;
  display:flex;align-items:center;justify-content:center;
}
.kb-ot-sort-toggle span{transform:translateY(-1px);}
.kb-ot-sort-toggle:active{background:var(--line);}

/* ===== My Dashboard ===== */
.kb-dash{--dash-a:#2a78d6;--dash-b:#eb6834;--dash-done:#b4bdc8;}
.kb-dash .kb-tool-intro{margin-bottom:16px;}
.kb-dash-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 20px;}
.kb-dash-tiles--small{margin-bottom:8px;}
.kb-dash-tile{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-md);padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0;}
.kb-dash-tiles--small .kb-dash-tile{background:var(--paper);}
.kb-dash-tile-label{font-size:12px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.04em;}
.kb-dash-tile-num{font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--ink);line-height:1.15;overflow-wrap:anywhere;}
.kb-dash-tile-sub{font-size:12.5px;color:var(--muted);line-height:1.35;}
.kb-dash-tile--open{border-left:4px solid var(--dash-a);}
.kb-dash-tile--green{border-left:4px solid var(--green);}
.kb-dash-tile--orange{border-left:4px solid var(--orange);}
.kb-dash-tile--red{border-left:4px solid var(--red);}
.kb-dash-card{margin-bottom:20px;}
.kb-dash-card + .kb-dash-card,.kb-dash-tiles + .kb-dash-card{margin-top:0;}
.kb-dash-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.kb-dash-card-head h2{margin:0;font-family:var(--font-display);font-size:20px;color:var(--ink);}
.kb-dash-card-head a{font-size:13px;font-weight:600;color:var(--brand-blue-dark);text-decoration:none;}
.kb-dash-card-head a:hover{text-decoration:underline;}
.kb-dash-sub{margin:22px 0 10px;font-size:14px;font-weight:700;color:var(--ink);}
.kb-dash-sub-note{font-weight:400;color:var(--muted);font-size:12.5px;}
.kb-dash-empty{color:var(--muted);font-size:14px;margin:0;}
.kb-dash-key{font-size:12.5px;color:var(--muted);margin:8px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;}
.kb-dash-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:-8px;}
.kb-dash-fill--open,.kb-dash-fill--a{background:var(--dash-a);}
.kb-dash-fill--done{background:var(--dash-done);}
.kb-dash-fill--b{background:var(--dash-b);}
/* horizontal bars */
.kb-dash-hbars{display:flex;flex-direction:column;gap:10px;}
.kb-dash-hbar{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:10px;font-size:13.5px;border-radius:6px;}
.kb-dash-hbar:focus-visible,.kb-dash-col:focus-visible,.kb-dash-pt:focus-visible{outline:2px solid var(--brand-blue);outline-offset:2px;}
.kb-dash-hbar-label{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kb-dash-hbar-track{display:block;height:12px;background:var(--paper);border-radius:0 4px 4px 0;overflow:hidden;}
.kb-dash-hbar-fill{display:block;height:100%;border-radius:0 4px 4px 0;}
.kb-dash-hbar-val{font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600;min-width:64px;text-align:right;}
/* svg charts */
.kb-dash-svg{display:block;width:100%;height:auto;max-height:230px;}
.kb-dash-grid{stroke:var(--line);stroke-width:1;}
.kb-dash-grid--zero{stroke:var(--brand-grey);}
.kb-dash-axis{fill:var(--muted);font-size:11px;font-family:var(--font-body);}
.kb-dash-hit{fill:transparent;stroke:none;}
.kb-dash-bar{fill:var(--dash-a);}
.kb-dash-bar--b{fill:var(--dash-b);}
.kb-dash-col:hover .kb-dash-hit,.kb-dash-col:focus .kb-dash-hit{fill:rgba(10,28,51,.05);}
.kb-dash-col:hover .kb-dash-bar,.kb-dash-col:focus .kb-dash-bar{filter:brightness(.88);}
.kb-dash-line{fill:none;stroke:var(--dash-a);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;}
.kb-dash-dot{fill:var(--dash-a);stroke:var(--white);stroke-width:2;}
.kb-dash-pt:hover .kb-dash-dot,.kb-dash-pt:focus .kb-dash-dot{r:5.5;}
.kb-dash-pt{outline:none;}
/* tooltip */
.kb-dash-tip{position:absolute;z-index:200;pointer-events:none;background:var(--navy-900);color:#fff;font-size:12.5px;line-height:1.35;padding:6px 10px;border-radius:8px;box-shadow:var(--shadow-soft);max-width:280px;}
/* table alternative */
.kb-dash-table{margin-top:10px;font-size:13px;}
.kb-dash-table summary{cursor:pointer;color:var(--brand-blue-dark);font-weight:600;font-size:12.5px;}
.kb-dash-table-scroll{overflow-x:auto;margin-top:8px;}
.kb-dash-table table{border-collapse:collapse;width:100%;}
.kb-dash-table th,.kb-dash-table td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums;}
.kb-dash-table th:first-child,.kb-dash-table td:first-child{text-align:left;}
.kb-dash-table thead th{color:var(--muted);font-weight:600;font-size:12px;}
.kb-dash-table tbody th{font-weight:600;color:var(--ink);}
/* bail list */
.kb-dash-bail-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.kb-dash-bail{display:grid;grid-template-columns:30px 1fr auto;gap:12px;align-items:center;background:var(--paper);border-radius:var(--radius-sm);padding:10px 12px;border-left:4px solid var(--line);}
.kb-dash-bail--green{border-left-color:var(--green);}
.kb-dash-bail--orange{border-left-color:var(--orange);}
.kb-dash-bail--red{border-left-color:var(--red);}
.kb-dash-bail-badge{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff;}
.kb-dash-bail--green .kb-dash-bail-badge{background:var(--green);}
.kb-dash-bail--orange .kb-dash-bail-badge{background:var(--orange);}
.kb-dash-bail--red .kb-dash-bail-badge{background:var(--red);}
.kb-dash-bail-main,.kb-dash-bail-state{display:flex;flex-direction:column;gap:1px;min-width:0;font-size:13.5px;}
.kb-dash-bail-step,.kb-dash-bail-state span{font-size:12.5px;color:var(--muted);}
.kb-dash-bail-state{text-align:right;}
.kb-dash-bail--green .kb-dash-bail-state strong{color:var(--green);}
.kb-dash-bail--orange .kb-dash-bail-state strong{color:var(--orange);}
.kb-dash-bail--red .kb-dash-bail-state strong{color:var(--red);}
@media (max-width:560px){
  .kb-dash-hbar{grid-template-columns:84px 1fr auto;gap:8px;}
  .kb-dash-bail{grid-template-columns:30px 1fr;}
  .kb-dash-bail-state{grid-column:2;text-align:left;}
  .kb-dash-tile-num{font-size:22px;}
  .kb-dash-axis{font-size:17px;}
}

.kb-dash .kb-dash-range{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;}
.kb-dash .kb-dash-range a.kb-dash-range-btn{padding:7px 14px;border-radius:999px;border:2px solid var(--line);background:var(--white);color:var(--ink);font-size:13px;font-weight:600;text-decoration:none;}
.kb-dash .kb-dash-range a.kb-dash-range-btn:hover{border-color:var(--brand-blue);}
.kb-dash .kb-dash-range a.kb-dash-range-btn.is-active,
.kb-dash .kb-dash-range a.kb-dash-range-btn.is-active:visited,
.kb-dash .kb-dash-range a.kb-dash-range-btn.is-active:hover,
.kb-dash .kb-dash-range a.kb-dash-range-btn.is-active:focus{background:var(--brand-blue);border-color:var(--brand-blue-dark);color:#fff;box-shadow:0 2px 6px rgba(0,103,223,.35);}
.kb-dash .kb-dash-range a.kb-dash-range-btn.is-active::before{content:"\2713\00a0";}

/* Dashboard spacing — more room inside the boxes */
.kb-dash-tiles{gap:16px;margin-bottom:24px;}
.kb-dash-tiles--small{margin-bottom:12px;}
.kb-dash-tile{padding:20px 22px;gap:8px;}
.kb-dash-tile-num{line-height:1.2;margin:2px 0;}
.kb-dash-tile-sub{line-height:1.5;}
.kb-dash-card.kb-tool-card{padding:30px 28px;margin-bottom:24px;}
.kb-dash-card-head{margin-bottom:24px;gap:8px 16px;}
.kb-dash-sub{margin:34px 0 16px;}
.kb-dash-tiles--small + .kb-dash-sub{margin-top:30px;}
.kb-dash-key{margin-top:16px;gap:8px 18px;line-height:1.5;}
.kb-dash-table{margin-top:16px;}
.kb-dash-table-scroll{margin-top:12px;}
.kb-dash-table th,.kb-dash-table td{padding:9px 12px;}
.kb-dash-empty{padding:4px 0 6px;}
.kb-dash-range{margin-bottom:24px;}
@media (max-width:560px){
  .kb-dash-card.kb-tool-card{padding:24px 18px;}
  .kb-dash-tile{padding:18px;}
  .kb-dash-sub{margin-top:28px;}
}

/* Force Editor dashboard */
.kb-dash-fill--green{background:var(--green);}
.kb-dash-fill--orange{background:var(--orange);}
.kb-dash-fill--red{background:var(--red);}
.kb-dash-sub--first{margin-top:0;}
.kb-dash-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
ol.kb-dash-list{counter-reset:kbdash;}
.kb-dash-list li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--line);}
.kb-dash-list li:last-child{border-bottom:0;}
ol.kb-dash-list li::before{counter-increment:kbdash;content:counter(kbdash);flex:0 0 22px;color:var(--muted);font-weight:700;font-size:13px;}
.kb-dash-list-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;}
.kb-dash-list-main a{color:var(--ink);font-weight:600;text-decoration:none;overflow-wrap:anywhere;}
.kb-dash-list-main a:hover{color:var(--brand-blue-dark);text-decoration:underline;}
.kb-dash-list-meta{font-size:12.5px;color:var(--muted);line-height:1.4;}
.kb-dash-list-val{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:13.5px;text-align:right;white-space:nowrap;}
@media (max-width:560px){
  .kb-dash-list li{flex-wrap:wrap;gap:6px 12px;}
  .kb-dash-list-val{align-items:flex-start;text-align:left;white-space:normal;}
}
.kb-dash .kb-dash-range-note{margin:-10px 0 24px;}
.kb-dash-table th,.kb-dash-table td{font-size:13px;}
@media (min-width:600px){.kb-dash .kb-dash-tiles--two{grid-template-columns:repeat(2,minmax(0,1fr));}}

/* Salary prompt */
.kb-dash-btn{align-self:flex-start;margin-top:6px;padding:8px 16px;border-radius:999px;border:0;background:var(--brand-blue);color:#fff;font:600 13px/1.2 var(--font-body);cursor:pointer;}
.kb-dash-btn:hover{background:var(--brand-blue-dark);}
.kb-dash-notice{display:flex;flex-direction:column;align-items:flex-start;gap:12px;background:var(--orange-bg);border-left:4px solid var(--orange);border-radius:var(--radius-sm);padding:16px 18px;margin:24px 0 8px;}
.kb-dash-notice p{margin:0;font-size:13.5px;line-height:1.5;color:var(--ink);}
.kb-dash-notice--info{background:var(--blue-bg);border-left-color:var(--brand-blue);}
.kb-dash-notice .kb-dash-btn{margin-top:0;}

/* Dashboard salary pop-up: keep the two day pickers level even if a label wraps */
#kb-dash-salary-modal .kb-mp-two-col{align-items:end;}
#kb-dash-salary-modal .kb-mp-two-col > div{display:flex;flex-direction:column;justify-content:flex-end;gap:6px;}
#kb-dash-salary-modal .kb-mp-two-col label{margin:0;}
#kb-dash-salary-modal .kb-mp-two-col select{width:100%;margin:0;}

/* Points to prove: tight bullet list, no blank lines between items */
.kb-offence-bullets{list-style:disc;margin:4px 0 0;padding:0 0 0 20px;}
.kb-offence-bullets li{margin:0;padding:0;line-height:1.5;}

/* Search results: highlighted search terms */
mark.kb-search-hit{background:#ffe58a;color:inherit;padding:0 2px;border-radius:3px;box-shadow:0 0 0 1px rgba(224,168,0,.35);}

/* Common Offences: filter box (text + Filter/Clear buttons + assisted search) */
.kb-offence-filterwrap{position:relative;margin:16px 18px 0;}
.kb-offence-filterrow{display:flex;align-items:stretch;gap:8px;}
.kb-offence-filterbox{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:0 12px;background:#fff;border:1px solid var(--paper-dim,#d8dee6);border-radius:10px;}
.kb-offence-filterbox .dashicons{color:var(--navy-700,#1f3a5f);flex:none;}
.kb-offence-filterbox input[type=text]{flex:1;min-width:0;border:0;outline:0;background:transparent;padding:12px 0;font-size:16px;box-shadow:none;}
.kb-offence-filter-btn{flex:none;border-radius:10px;padding:0 16px;font-size:15px;font-weight:600;cursor:pointer;border:1px solid var(--navy-700,#1f3a5f);}
.kb-offence-filter-btn--go{background:var(--navy-700,#1f3a5f);color:#fff;}
.kb-offence-filter-btn--clear{background:#fff;color:var(--navy-700,#1f3a5f);}
.kb-offence-filter-status{font-size:12px;color:#6b7785;min-height:0;margin-top:6px;}
.kb-offence-filter-status:empty{display:none;}
.kb-offence-suggest{position:absolute;left:0;right:0;top:100%;margin:4px 0 0;padding:4px;list-style:none;background:#fff;border:1px solid var(--paper-dim,#d8dee6);border-radius:10px;box-shadow:0 8px 24px rgba(15,30,55,.14);z-index:30;max-height:320px;overflow:auto;}
.kb-offence-suggest li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border-radius:8px;cursor:pointer;}
.kb-offence-suggest li.is-active,.kb-offence-suggest li:hover{background:var(--paper-dim,#eef2f7);}
.kb-offence-suggest-title{font-weight:600;}
.kb-offence-suggest-cat{font-size:12px;color:#6b7785;text-align:right;flex:none;}
.kb-offence-filterwrap ~ .kb-az-nav{margin-top:12px;}
.kb-offence-results{margin:0;}

/* Hidden filter result containers must take no space (their own display rules were overriding [hidden]) */
.kb-offence-results[hidden],.kb-empty[hidden],.kb-offence-filter-empty[hidden]{display:none !important;}
.kb-offence-filterwrap ~ .kb-cat-grid{padding-top:12px;}

/* Common Offences landing: the two wide info/request tiles (colours not used by any category tile) */
.kb-cat-tile--wide{grid-column:span 2;min-height:0;}
.kb-cat-tile[data-tile-color="teal"]{background:#0f6b73;}
.kb-cat-tile[data-tile-color="purple"]{background:#5b3a8c;}
.kb-cat-tile--wide .kb-cat-desc{margin-top:-6px;font-size:13px;}
.kb-offence-request{display:flex;gap:8px;width:100%;margin-top:-4px;}
.kb-offence-request input[type=text]{flex:1;min-width:0;border:0;border-radius:10px;padding:11px 12px;font-size:16px;}
.kb-offence-request button{flex:none;border:0;border-radius:10px;padding:0 16px;font-weight:700;font-size:15px;background:#fff;color:#5b3a8c;cursor:pointer;}
.kb-offence-request button[disabled]{opacity:.6;cursor:default;}
.kb-offence-request-msg{font-size:13px;font-weight:600;color:rgba(255,255,255,.9);min-height:0;margin-top:-6px;}
.kb-offence-request-msg:empty{display:none;}

.kb-pnld-link{display:inline-flex;align-items:center;gap:6px;margin-top:2px;padding:9px 16px;border-radius:999px;background:#fff;color:#0f6b73;font-weight:700;font-size:15px;letter-spacing:.2px;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.kb-pnld-link .dashicons{font-size:16px;width:16px;height:16px;}
a.kb-cat-tile--wide:hover .kb-pnld-link{text-decoration:underline;}

@media (max-width:480px){
  .kb-offence-filterwrap{margin-left:12px;margin-right:12px;}
  .kb-offence-filterrow{gap:6px;}
  .kb-offence-filterbox{padding:0 8px;gap:6px;}
  .kb-offence-filterbox input[type=text]{font-size:16px;text-overflow:ellipsis;} /* 16px minimum — iOS zooms into any smaller input on focus */
  .kb-offence-filter-btn{padding:0 11px;font-size:14px;}
}
[data-kb-paged] > [hidden]{display:none !important;}

/* Search results pagination: tighter to the list, rule moved below, slide between pages */
[data-kb-paged]{margin-bottom:0 !important;overflow-x:clip;}
[data-kb-paged] + .kb-pagination{margin-top:6px;padding-top:0;border-top:0;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:22px;}
@keyframes kbSlideNext{from{transform:translateX(48px);opacity:0;}to{transform:none;opacity:1;}}
@keyframes kbSlidePrev{from{transform:translateX(-48px);opacity:0;}to{transform:none;opacity:1;}}
[data-kb-paged].kb-slide-next{animation:kbSlideNext .6s ease-out;}
[data-kb-paged].kb-slide-prev{animation:kbSlidePrev .6s ease-out;}
@media (prefers-reduced-motion:reduce){[data-kb-paged].kb-slide-next,[data-kb-paged].kb-slide-prev{animation:none;}}
[data-kb-paged]{padding-bottom:0 !important;}
[data-kb-paged] + .kb-pagination{margin-top:4px;}
[data-kb-paged] + .kb-pagination{margin-top:14px;}

/* Search pager sits directly under the section title */
.kb-pagination.kb-search-pager{margin:4px 0 0;padding:0 0 10px;border-top:0;border-bottom:0;}
.kb-search-pager + [data-kb-paged]{padding-top:4px;}

/* Smoother, slower page slide */
@keyframes kbSlideNext{0%{transform:translate3d(64px,0,0);opacity:0;}100%{transform:translate3d(0,0,0);opacity:1;}}
@keyframes kbSlidePrev{0%{transform:translate3d(-64px,0,0);opacity:0;}100%{transform:translate3d(0,0,0);opacity:1;}}
[data-kb-paged].kb-slide-next{animation:kbSlideNext .95s cubic-bezier(.22,.61,.36,1) both;will-change:transform,opacity;}
[data-kb-paged].kb-slide-prev{animation:kbSlidePrev .95s cubic-bezier(.22,.61,.36,1) both;will-change:transform,opacity;}

/* page slide is now driven by the Web Animations API in search.php */
[data-kb-paged].kb-slide-next,[data-kb-paged].kb-slide-prev{animation:none;}
.kb-page-main{overflow-x:clip;}
[data-kb-paged]{touch-action:pan-y;}
[data-kb-paged]{overscroll-behavior:contain;}
a.kb-article-toggle{text-decoration:none;color:inherit;}
.kb-fin-result .kb-chev-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;}
.kb-results-end{max-width:720px;margin:2px auto 22px;padding:0 18px;box-sizing:border-box;width:100%;}
.kb-results-end::before{content:'';display:block;height:1px;background:var(--line);}
.kb-results-end{margin:18px auto 0;}

@media (max-width:480px){
  .kb-pagination.kb-search-pager{gap:4px;flex-wrap:nowrap;}
  .kb-search-pager .kb-pagination-link{padding:8px 6px;font-size:13px;flex:none;white-space:nowrap;}
  .kb-search-pager .kb-pagination-numbers{flex-wrap:nowrap;gap:0;min-width:0;}
  .kb-search-pager .kb-pagination-number{padding:6px 7px;min-width:14px;font-size:13px;}
  .kb-search-pager .kb-pagination-ellipsis{padding:0 2px;}
}

/* Align the pager's edges with the result cards (cards sit in a 720px column with 18px side padding) */
.kb-pagination.kb-search-pager{max-width:720px;margin-left:auto;margin-right:auto;width:100%;box-sizing:border-box;padding-left:6px;padding-right:6px;}
@media (max-width:480px){.kb-pagination.kb-search-pager{padding-left:12px;padding-right:12px;}}

.kb-mp-polygon-label.leaflet-tooltip{background:rgba(255,255,255,.9);border:1px solid rgba(0,0,0,.25);border-radius:4px;color:#0a1c33;font-weight:700;font-size:12px;padding:2px 6px;box-shadow:none;white-space:nowrap;}
.kb-mp-polygon-label.leaflet-tooltip::before{display:none;}
@media print{.kb-mp-polygon-label.leaflet-tooltip{-webkit-print-color-adjust:exact;print-color-adjust:exact;}}

.kb-mp-drawbar{margin:6px 0 10px;padding:10px 12px;border:1.5px solid var(--brand-blue);border-radius:var(--radius-sm);background:var(--paper);}
.kb-mp-drawbar[hidden]{display:none !important;}
.kb-mp-drawbar-text{margin:0 0 8px;font-size:13.5px;color:var(--ink);}
.kb-mp-drawbar-text:empty{display:none;}
.kb-mp-drawbar-btns{display:flex;flex-wrap:wrap;gap:8px;}
.kb-mp-drawbar-btns button[hidden]{display:none !important;}
.kb-mp-drawbar-btns button{margin:0;flex:1 1 auto;}

/* ---------- Shared Maps ---------- */
.kb-sm-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:8px;}
.kb-sm-title{margin:0 0 2px;font-size:20px;color:var(--ink);overflow-wrap:anywhere;}
.kb-sm-meta{margin:0;font-size:13px;color:var(--muted);}
.kb-sm-live{display:inline-flex;align-items:center;gap:6px;flex:none;font-size:12.5px;font-weight:700;color:#2e7d32;background:rgba(46,125,50,.1);padding:4px 10px;border-radius:999px;}
.kb-sm-live-dot{width:8px;height:8px;border-radius:50%;background:currentColor;animation:kbSmPulse 1.8s ease-in-out infinite;}
.kb-sm-live.is-archived{color:var(--muted);background:var(--paper-dim);}
.kb-sm-live.is-archived .kb-sm-live-dot{animation:none;}
.kb-sm-live.is-offline{color:#b3261e;background:rgba(179,38,30,.1);}
@keyframes kbSmPulse{0%,100%{opacity:1;}50%{opacity:.3;}}
@media (prefers-reduced-motion:reduce){.kb-sm-live-dot{animation:none;}}
.kb-sm-banner{margin:0 0 12px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--paper-dim);border:1px solid var(--line);font-size:13.5px;color:var(--ink);}
.kb-sm-banner[hidden],.kb-sm-tools[hidden],.kb-sm-style[hidden]{display:none !important;}
.kb-sm-owner{margin:0 0 14px;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);}
.kb-sm-owner-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.kb-sm-owner-btns button{margin:0;}
.kb-sm-owner-btns button[hidden]{display:none !important;}
.kb-sm-check{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink);margin:6px 0;cursor:pointer;}
.kb-sm-check input{margin:0;}
.kb-sm-map{height:420px;border-radius:var(--radius-sm);overflow:hidden;border:1.5px solid var(--line);margin:10px 0 8px;position:relative;z-index:1;}
.kb-sm-tools{margin:10px 0 18px;}
.kb-sm-toolbtns{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;}
.kb-sm-toolbtns button{margin:0;}
.kb-sm-toolbtns button.is-active{background:var(--navy-900);color:var(--white);}
.kb-sm-style{display:flex;flex-wrap:wrap;gap:16px;margin-top:8px;}
.kb-sm-row{align-items:center;}
.kb-sm-row-main{flex:1;min-width:0;text-decoration:none;color:inherit;}
@media print{.kb-sm-owner,.kb-sm-tools,#kb-sm-drawbar,.kb-sm-live{display:none !important;}}

/* Buttons with the hidden attribute must stay hidden even though the button classes set display */
.kb-tool-now-btn[hidden],.kb-tool-calculate-btn[hidden],.kb-tool-reset-btn[hidden],.kb-tool-stop-btn[hidden],#kb-mp-use-selected-btn[hidden]{display:none !important;}
.kb-mp-optional{font-weight:400;color:var(--muted);font-size:.9em;}
#kb-mp-tools{margin-bottom:8px;}
.kb-sm-onmap{margin-top:0;}
#kb-sm-onmap-panel{padding-top:10px;}
.kb-sm-row-title{font-weight:700;color:var(--ink);}

.kb-mp-selected-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:4px 0;}
.kb-mp-selected-row .kb-location-grid{margin:0;}
.kb-mp-selected-row .kb-tool-reset-btn{margin:0;padding:6px 12px;font-size:13px;}

/* Selected-point buttons: matching pills, taller, side by side */
.kb-mp-selected-grid{margin:4px 0 6px;}
.kb-mp-selected-btns{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 6px;}
.kb-mp-selected-btns .kb-mp-sel-btn{flex:1 1 180px;width:auto;margin:0;min-height:50px;padding:12px 16px;font-size:14px;line-height:1.2;}
.kb-mp-selected-btns .kb-mp-sel-btn[hidden]{display:none !important;}
.kb-mp-selected-btns:not(:has(.kb-mp-sel-btn:not([hidden]))){display:none;}
#kb-mp-use-selected-btn{display:block;text-align:center;}
/* Tap points / Draw freehand */
.kb-mp-btn-row{display:flex;gap:8px;margin:8px 0 0;}
.kb-mp-btn-row button{flex:1 1 0;width:auto;margin:0;min-height:50px;padding:12px 10px;}
.kb-mp-btn-row button[hidden]{display:none !important;}
@media print{.leaflet-control-layers{display:none !important;}}

.kb-sm-tracking{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:#d32f2f;color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.04em;vertical-align:middle;}

/* Map Plotter: private / shared choice and sharing box */
.kb-sm-choice{display:grid;gap:8px;margin:6px 0 10px;}
.kb-sm-choice-opt{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;}
.kb-sm-choice-opt:has(input:checked){border-color:var(--brand-blue);background:var(--paper-dim);}
.kb-sm-choice-opt input{margin-top:3px;}
.kb-sm-choice-opt small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px;}
.kb-sm-choice-opt:has(input:disabled){opacity:.55;cursor:not-allowed;}
#kb-sm-new-edit-wrap[hidden],#kb-sm-new-warn[hidden]{display:none !important;}
.kb-sm-share-box{padding:12px 14px;border:1.5px solid var(--line);border-radius:var(--radius-sm);margin-bottom:10px;}
.kb-sm-share-box .kb-tool-intro{margin-top:0;}
.kb-sm-tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--paper-dim);color:var(--muted);font-size:10.5px;font-weight:700;letter-spacing:.03em;vertical-align:middle;}

/* Map Plotter full screen */
.kb-mp-fs-bar{display:none;}
.leaflet-bar.kb-mp-fs-ctl a.kb-mp-fs-btn{display:flex !important;align-items:center;justify-content:center;box-sizing:border-box;width:30px !important;height:30px !important;padding:0 !important;margin:0 !important;line-height:0 !important;text-indent:0;color:#333;}
.kb-mp-fs-ctl a.kb-mp-fs-btn svg{display:block;width:18px;height:18px;margin:0;flex:none;}
html.kb-mp-fs-lock,html.kb-mp-fs-lock body{overflow:hidden !important;}
.kb-mp-stage.is-fs{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483000;background:var(--paper);display:flex;flex-direction:column;height:100vh;height:100dvh;margin:0;padding:0;}
.kb-mp-stage.is-fs .kb-mp-fs-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex:none;padding:8px 12px;padding-top:max(8px,env(safe-area-inset-top));border-bottom:1px solid var(--line);background:var(--white);}
.kb-mp-fs-title{font-weight:700;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kb-mp-fs-bar-btns{display:flex;gap:8px;flex:none;}
.kb-mp-fs-bar-btns button{width:auto;margin:0;padding:8px 14px;font-size:13px;white-space:nowrap;}
.kb-mp-stage.is-fs #kb-map-plotter-map{flex:1 1 auto;height:auto !important;min-height:160px;margin:0 !important;border-radius:0 !important;border-left:0 !important;border-right:0 !important;}
.kb-mp-stage.is-fs .kb-mp-controls{flex:0 1 auto;max-height:45vh;max-height:45dvh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:10px 12px;padding-bottom:max(10px,env(safe-area-inset-bottom));border-top:1.5px solid var(--line);background:var(--paper);}
.kb-mp-stage.is-fs.kb-mp-controls-collapsed .kb-mp-controls > *:not(#kb-mp-drawbar):not(#kb-sm-editbar){display:none !important;}
.kb-mp-stage.is-fs.kb-mp-controls-collapsed .kb-mp-controls:not(:has(#kb-mp-drawbar:not([hidden]))):not(:has(#kb-sm-editbar:not([hidden]))){display:none;}
@media (max-width:480px){.kb-mp-fs-bar-btns button{padding:8px 10px;font-size:12.5px;}.kb-mp-fs-title{display:none;}.kb-mp-stage.is-fs .kb-mp-fs-bar{justify-content:flex-end;}}

/* Full screen — sticky drawing buttons, and a side panel on wide screens */
.kb-mp-stage.is-fs .kb-mp-drawbar{position:sticky;top:-10px;z-index:3;}
@media (min-width:900px){
	.kb-mp-stage.is-fs{display:grid;grid-template-columns:minmax(0,1fr) clamp(360px,30vw,440px);grid-template-rows:auto minmax(0,1fr);}
	.kb-mp-stage.is-fs .kb-mp-fs-bar{grid-column:1 / -1;grid-row:1;}
	.kb-mp-stage.is-fs #kb-map-plotter-map{grid-column:1;grid-row:2;height:auto !important;min-height:0;}
	.kb-mp-stage.is-fs .kb-mp-controls{grid-column:2;grid-row:2;max-height:none;min-height:0;height:100%;border-top:0;border-left:1.5px solid var(--line);padding:14px 16px;padding-bottom:max(14px,env(safe-area-inset-bottom));}
	.kb-mp-stage.is-fs .kb-mp-drawbar{top:-14px;}
	.kb-mp-stage.is-fs.kb-mp-controls-collapsed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;}
	.kb-mp-stage.is-fs.kb-mp-controls-collapsed .kb-mp-controls{grid-column:1;grid-row:3;height:auto;max-height:40vh;border-left:0;border-top:1.5px solid var(--line);}
}

/* Edit an item from "On this map"; colour while drawing */
.kb-cctv-log-edit{background:none;border:1.5px solid var(--line);color:var(--navy-700);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;margin-left:6px;flex:none;}
.kb-cctv-log-edit:active{background:var(--paper-dim);}
.kb-sm-editrow{display:block;padding:12px;}
.kb-sm-edit .kb-tool-field{margin-bottom:8px;}
.kb-sm-edit-btns{display:flex;gap:8px;}
.kb-sm-edit-btns button{flex:1 1 0;width:auto;margin:0;}
.kb-mp-drawbar-colour{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-size:13.5px;font-weight:600;color:var(--ink);}
.kb-mp-drawbar-colour input[type=color]{width:44px;height:34px;padding:2px;border:1.5px solid var(--line);border-radius:8px;background:none;cursor:pointer;}

/* Edit/Remove stacked; map handles */
.kb-sm-row-actions{display:flex;flex-direction:column;gap:6px;flex:none;align-items:stretch;}
.kb-sm-row-actions button{margin:0 !important;min-width:78px;text-align:center;}
.kb-sm-edit-hint{margin:0 0 10px;font-size:12.5px;}
.kb-sm-editbar{margin-bottom:10px;}
.kb-sm-handle{box-sizing:border-box;}
.kb-sm-handle--vertex{background:#fff;border:3px solid #1565c0;border-radius:50%;width:22px !important;height:22px !important;margin-left:-11px !important;margin-top:-11px !important;box-shadow:0 1px 5px rgba(0,0,0,.55);}
.kb-sm-handle--mid{background:transparent;border:0;}
.kb-sm-handle--mid::after{content:"";position:absolute;left:9px;top:9px;width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.9);border:2px solid #1565c0;box-sizing:border-box;}
.kb-sm-handle--move{background:#1565c0;color:#fff;border:3px solid #fff;border-radius:8px;text-align:center;font-size:17px;line-height:22px;width:28px !important;height:28px !important;box-shadow:0 1px 5px rgba(0,0,0,.55);}

.kb-sm-tracking.kb-sm-lock{background:#e65100;}
.kb-cctv-log-edit[disabled],.kb-cctv-log-delete[disabled]{opacity:.45;cursor:not-allowed;}

.kb-sm-vis-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 8px;font-size:12.5px;color:var(--muted);}
.kb-sm-vis-link{background:none;border:0;padding:0;color:var(--brand-blue);font:inherit;font-weight:600;cursor:pointer;text-decoration:underline;}
#kb-sm-list .kb-location-row .kb-location-row-checkbox{flex:none;}

/* Reorder + previous/next */
.kb-sm-grip{flex:none;touch-action:none;cursor:grab;background:none;border:0;padding:6px 4px;margin:-6px 0 -6px -6px;color:var(--muted);font-size:16px;line-height:1;letter-spacing:-3px;user-select:none;-webkit-user-select:none;}
.kb-sm-grip:active{cursor:grabbing;}
.kb-location-row.is-dragging{box-shadow:0 6px 18px rgba(0,0,0,.25);background:var(--white);position:relative;z-index:5;}
.kb-location-row.kb-sm-current{border-color:var(--brand-blue);box-shadow:inset 3px 0 0 var(--brand-blue);}
.leaflet-bar.kb-sm-nav{display:flex;align-items:stretch;background:#fff;border-radius:8px;overflow:hidden;max-width:calc(100vw - 90px);}
.leaflet-bar.kb-sm-nav[hidden]{display:none !important;}
.kb-sm-nav-btn{width:44px;min-height:44px;border:0;background:#fff;font-size:26px;line-height:1;color:#1d3557;cursor:pointer;padding:0;}
.kb-sm-nav-btn:active{background:#e8eef6;}
.kb-sm-nav-mid{display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:76px;max-width:150px;padding:0 6px;border-left:1px solid #ddd;border-right:1px solid #ddd;font-size:12px;line-height:1.25;color:#222;text-align:center;}
.kb-sm-nav-count{font-weight:700;}
.kb-sm-nav-name{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#555;}
.kb-sm-nav-name:empty{display:none;}
@media print{.kb-sm-nav{display:none !important;}}

/* Reorder: rows slide, the dragged row follows the pointer */
#kb-sm-list .kb-location-list{position:relative;}
.kb-location-row.is-dragging{transition:none !important;cursor:grabbing;}
/* Previous/Next keeps one size whatever the label */
.leaflet-bar.kb-sm-nav{width:216px;max-width:calc(100vw - 90px);height:46px;}
.kb-sm-nav-btn{flex:none;height:46px;}
.kb-sm-nav-mid{flex:1 1 auto;min-width:0;max-width:none;width:auto;overflow:hidden;}
.kb-sm-nav-count,.kb-sm-nav-name{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.kb-sm-nav-name{max-width:none;min-height:15px;}
.kb-sm-nav-name:empty{display:block;}

.kb-location-row.is-dragging{will-change:transform;}
.kb-location-row.is-dropping{position:relative;z-index:5;}

.kb-sm-ghost{z-index:2147483600;box-shadow:0 8px 24px rgba(0,0,0,.3);background:var(--white);border-color:var(--brand-blue);cursor:grabbing;box-sizing:border-box;}
.kb-location-row.is-placeholder{opacity:.35;border-style:dashed;}

/* Item numbers, nav number, Show all / Hide all */
#kb-sm-list .kb-location-row{position:relative;}
.kb-sm-num{position:absolute;top:0;left:0;min-width:20px;height:18px;padding:0 6px;box-sizing:border-box;border-radius:var(--radius-sm) 0 8px 0;background:var(--navy-900,#1d3557);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center;pointer-events:none;}
.kb-sm-ghost .kb-sm-num{border-radius:6px 0 8px 0;}
.kb-sm-nav-count{font-size:18px;line-height:1.1;}
.kb-sm-nav-name{font-size:11px;}
.kb-sm-vis-bar{flex-wrap:wrap;}
.kb-sm-vis-bar > span:first-child{flex:1 1 140px;min-width:0;}
.kb-sm-vis-bar > span:last-child{flex:none;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;}
.kb-sm-vis-link{white-space:nowrap;}

/* Nav: second row with Only selected / Deselect */
.leaflet-bar.kb-sm-nav{display:flex;flex-direction:column;height:auto;}
.kb-sm-nav-row{display:flex;align-items:stretch;height:46px;}
.kb-sm-nav-row2{display:flex;border-top:1px solid #ddd;}
.kb-sm-nav-opt{flex:1 1 0;min-height:34px;border:0;background:#fff;color:#1d3557;font-size:12px;font-weight:700;cursor:pointer;padding:0 6px;white-space:nowrap;}
.kb-sm-nav-opt + .kb-sm-nav-opt{border-left:1px solid #ddd;}
.kb-sm-nav-opt.is-on{background:#1d3557;color:#fff;}
.kb-sm-nav-opt[disabled]{opacity:.45;cursor:not-allowed;}
.kb-location-row.kb-sm-dim{opacity:.55;}

/* ---- Search sectors, travel-range rings, offline queue, history, duplicate, navigate ---- */
.kb-mp-sectors-box{margin:0 0 18px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);}
.kb-mp-sectors-size{margin:12px 0 0;}
.kb-mp-sectors-box .kb-tool-field{margin-bottom:0;}
.kb-mp-sectors-size[hidden]{display:none !important;}
.kb-mp-sectors-size small{display:block;margin-top:6px;color:var(--ink-soft,#5b6573);font-size:12.5px;line-height:1.4;}
.kb-mp-rg-modes .kb-sm-check{margin:8px 0;}
.kb-sm-seclabel,.kb-sm-ringlabel{background:none;border:0;}
.kb-sm-seclabel span{position:absolute;left:4px;top:3px;font-family:system-ui,sans-serif;font-weight:700;line-height:1;color:#0b1f3a;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 0 4px #fff;white-space:nowrap;pointer-events:none;}
.kb-sm-ringlabel span{position:absolute;transform:translate(-50%,-110%);font:600 11.5px/1.2 system-ui,sans-serif;color:#111;background:rgba(255,255,255,.92);border:1.5px solid #666;border-radius:999px;padding:2px 8px;white-space:nowrap;pointer-events:none;}
.kb-sm-navbtn{display:inline-block;text-align:center;text-decoration:none;box-sizing:border-box;}
.kb-sm-navlink{font-weight:700;color:var(--navy-700);}
.kb-sm-xfer{margin-top:8px;flex-wrap:wrap;}
.kb-sm-xfer button{margin:0;}
.kb-sm-xfer button[hidden]{display:none !important;}
.kb-sm-pending{margin:0 0 12px;padding:10px 12px;border:1.5px dashed #c66a00;border-radius:var(--radius-sm);background:#fff8ec;font-size:13.5px;}
.kb-sm-pending p{margin:4px 0 8px;font-size:13px;}
.kb-sm-pending-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0;border-top:1px solid #f0dfc4;}
.kb-sm-pending .kb-tool-reset-btn{margin-top:8px;}
.kb-sm-toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:10050;max-width:min(92vw,420px);padding:11px 16px;border-radius:12px;background:#1d3557;color:#fff;font-size:14px;line-height:1.35;box-shadow:0 6px 20px rgba(0,0,0,.3);}
.kb-sm-toast[hidden]{display:none !important;}
.kb-mp-recover{margin:0 0 14px;padding:12px;border:1.5px solid #c66a00;border-radius:var(--radius-sm);background:#fff8ec;}
.kb-mp-recover p{margin:0 0 10px;font-size:14px;}
.kb-mp-recover .kb-tool-stop-btn{margin-top:8px;}
.kb-sm-details{margin:0 0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);}
.kb-sm-details summary{cursor:pointer;padding:12px 14px;font-weight:600;color:var(--navy-700);min-height:20px;}
.kb-sm-details-body{padding:0 14px 14px;}
.kb-sm-hist-list{list-style:none;margin:0 0 10px;padding:0;}
.kb-sm-hist-row{display:flex;gap:10px;padding:9px 4px;border-top:1px solid var(--line);font-size:14px;align-items:flex-start;}
.kb-sm-hist-row.is-link{cursor:pointer;}
.kb-sm-hist-row.is-link:hover,.kb-sm-hist-row.is-link:focus{background:var(--paper-dim);outline:none;}
.kb-sm-hist-ic{flex:none;width:22px;height:22px;border-radius:50%;background:var(--paper-dim);display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:var(--navy-700);}
.kb-sm-hist-txt small{display:block;color:var(--ink-soft,#5b6573);font-size:12px;margin-top:2px;}
@media print{.kb-sm-details,.kb-sm-pending,.kb-sm-toast,.kb-mp-recover{display:none !important;}}
.kb-sm-row-actions a{margin:0 !important;min-width:78px;text-align:center;font-family:inherit;line-height:normal;box-sizing:border-box;}
.kb-sm-row-actions button{box-sizing:border-box;}
.kb-sm-navdlg-btns{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
.kb-sm-navdlg-btns a,.kb-sm-navdlg-btns button{margin:0;text-align:center;text-decoration:none;box-sizing:border-box;}
.kb-sm-navmap{height:230px;margin:10px 0;border-radius:var(--radius-sm);overflow:hidden;border:1.5px solid var(--line);position:relative;z-index:0;}
.kb-sm-toolbtns{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px;}
.kb-sm-toolbtns button{margin:0;}
@media print{.kb-sm-toolbtns{display:none !important;}}
.kb-mp-rg-loc{margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font-size:14px;line-height:1.45;}
.kb-mp-rg-loc.is-empty{border-style:dashed;border-color:#c66a00;background:#fff8ec;color:#7a4300;}
.kb-mp-rg-mode{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 0;border-top:1px solid var(--line);}
.kb-mp-rg-mode:first-child{border-top:0;}
.kb-mp-rg-mode .kb-sm-check{flex:1 1 100%;margin:0;}
.kb-mp-rg-mode input[type=color]{width:44px;height:36px;padding:2px;flex:none;margin-left:auto;}
.kb-mp-rg-speed{display:inline-flex;align-items:center;gap:6px;}
.kb-mp-rg-speed input[type=number]{width:72px !important;text-align:center;padding-left:6px;padding-right:6px;}
.kb-mp-rg-step{width:36px;height:36px;border:1.5px solid var(--line);border-radius:999px;background:var(--white,#fff);font-size:20px;line-height:1;color:var(--navy-700);cursor:pointer;padding:0;}
.kb-mp-rg-step:active{background:var(--paper-dim);}

.kb-sm-seclabel--col span,.kb-sm-seclabel--row span{text-shadow:none;font-size:13px !important;font-weight:800;padding:3px 7px;border-radius:7px;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4);}
.kb-sm-seclabel--col span{left:0;top:-4px;transform:translate(-50%,-100%);}
.kb-sm-seclabel--row span{left:-4px;top:0;transform:translate(-100%,-50%);}
.kb-sm-seclabel span.is-plain{padding:0;border-color:transparent;box-shadow:none;font-size:12px !important;font-weight:700;text-shadow:-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff,1px 1px 0 #fff,0 0 4px #fff;}
.leaflet-bar.kb-mp-zoomslider{background:#fff;border-radius:8px;width:36px;padding:6px 0 4px;text-align:center;}
.kb-mp-zoomslider-val{display:block;font:700 11px/1 system-ui,sans-serif;color:var(--navy-700,#1d3557);margin-bottom:2px;}
.kb-mp-zoomslider-track{position:relative;width:36px;height:130px;}
.kb-mp-zoomslider-track input{position:absolute;left:50%;top:50%;width:116px;height:30px;margin:0;transform:translate(-50%,-50%) rotate(-90deg);touch-action:none;cursor:pointer;}
@media print{.kb-mp-zoomslider{display:none !important;}}
.kb-sm-countdown{margin:6px 0 0;font-size:12.5px;font-weight:600;color:var(--navy-700);font-variant-numeric:tabular-nums;}
.kb-sm-countdown.is-soon{color:#b3261e;}

/* Mobile full screen: the Hide controls / Exit bar sits at the top of the controls (under the map), not above it */
@media (max-width:899px){
	.kb-mp-stage.is-fs > *{order:0;}
	.kb-mp-stage.is-fs #kb-map-plotter-map{order:1;}
	.kb-mp-stage.is-fs .kb-mp-fs-grip{order:2;}
	.kb-mp-stage.is-fs .kb-mp-fs-bar{order:3;border-bottom:0;border-top:0;padding-top:4px;flex-wrap:wrap;}
	.kb-mp-stage.is-fs .kb-mp-controls{order:4;border-top:1px solid var(--line);}
	.kb-mp-stage.is-fs .kb-mp-controls{height:var(--kb-ctl-h,auto);max-height:var(--kb-ctl-h,45dvh);}
	.kb-mp-stage.is-fs.kb-mp-controls-collapsed .kb-mp-controls{height:auto;max-height:40dvh;}
	.kb-mp-stage.is-fs.kb-mp-controls-collapsed .kb-mp-fs-grip{display:none;}
	.kb-mp-stage.is-fs .kb-mp-fs-bar-btns{flex-wrap:wrap;justify-content:flex-end;}
	.kb-mp-stage.is-fs.kb-mp-controls-collapsed .kb-mp-fs-bar{padding-bottom:max(8px,env(safe-area-inset-bottom));}
}

/* Mobile full screen: the map now starts at the very top of the screen, so drop the top map controls below the status bar / notch */
@media (max-width:899px){
	.kb-mp-stage.is-fs .leaflet-top{margin-top:calc(env(safe-area-inset-top,0px) + 38px);}
}

/* Drag handle between the map and the controls (mobile full screen only) */
.kb-mp-fs-grip{display:none;}
@media (max-width:899px){
	.kb-mp-stage.is-fs .kb-mp-fs-grip{display:flex;align-items:center;justify-content:center;flex:none;height:26px;background:var(--white);border-top:1.5px solid var(--line);cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none;}
	.kb-mp-fs-grip span{display:block;width:44px;height:5px;border-radius:3px;background:var(--line);}
}
.kb-mp-search-wrap > .kb-mp-accordion-toggle{margin-bottom:0;}
.kb-mp-fs-bar-btns .kb-mp-sel-btn{width:auto;margin:0;min-height:0;padding:8px 14px;font-size:13px;}

.kb-mp-search-wrap{margin-bottom:0;}
.kb-mp-search-wrap #kb-mp-search-panel > label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.kb-mp-search-wrap .kb-mp-accordion-toggle{padding:6px 0;margin:0;}

/* Owner buttons: stacked full-width on phones, side by side on desktop */
.kb-sm-owner-btns{display:grid;grid-template-columns:1fr;gap:8px;}
.kb-sm-owner-btns button{width:100%;}
@media (min-width:700px){
	.kb-sm-owner-btns{display:flex;flex-wrap:wrap;}
	.kb-sm-owner-btns button{width:auto;flex:0 0 auto;}
}

@media (min-width:700px){
	.kb-sm-owner-btns{flex-wrap:wrap;justify-content:center;}
	.kb-sm-owner-btns button{flex:1 1 140px;width:auto;text-align:center;justify-content:center;}
}
.kb-mp-search-wrap > .kb-tool-divider:first-child{margin:22px 0 18px;}

.kb-sm-xfer-sub{margin:14px 0 4px;font-size:15px;}
.kb-sm-xfer-btns{display:flex;flex-direction:column;gap:8px;margin:8px 0;}
.kb-sm-xfer-btns button{width:100%;margin:0;}
.kb-sm-xfer-btns button[hidden]{display:none !important;}
.kb-sm-check[hidden]{display:none !important;}

/* Change log print view */
#kb-sm-logprint{display:none;}
@media print{
	html.kb-print-log body > *:not(#kb-sm-logprint){display:none !important;}
	html.kb-print-log #kb-sm-logprint{display:block !important;color:#000;font:12px/1.4 Arial,sans-serif;padding:0;}
	#kb-sm-logprint h1{font-size:18px;margin:0 0 4px;}
	#kb-sm-logprint p{margin:0 0 10px;}
	#kb-sm-logprint table{width:100%;border-collapse:collapse;}
	#kb-sm-logprint th,#kb-sm-logprint td{border:1px solid #999;padding:4px 6px;text-align:left;vertical-align:top;}
	#kb-sm-logprint th{background:#eee;}
	#kb-sm-logprint tr{page-break-inside:avoid;}
}

@media print{
	html.kb-print-log #kb-sm-logprint{box-sizing:border-box;width:100%;max-width:100%;overflow:hidden;}
	#kb-sm-logprint table{table-layout:fixed;width:100%;box-sizing:border-box;border:1px solid #000;border-collapse:collapse;}
	#kb-sm-logprint th,#kb-sm-logprint td{border:1px solid #000;word-wrap:break-word;overflow-wrap:anywhere;}
	#kb-sm-logprint th:nth-child(1){width:22%;}
	#kb-sm-logprint th:nth-child(2){width:20%;}
}

/* Full screen: optionally hide the buttons on the map (zoom, layers, full screen, etc.), leaving the credit line */
.kb-mp-stage.kb-mp-mapbtns-hidden .leaflet-control-container .leaflet-control:not(.leaflet-control-attribution):not(.kb-mp-fs-ctl){display:none !important;}

.kb-mp-mapbtn-row{display:flex;justify-content:flex-end;margin:0 0 8px;}
.kb-mp-mapbtn-row button{width:auto;margin:0;padding:6px 12px;font-size:13px;}
.kb-mp-stage.is-fs .kb-mp-mapbtn-row{display:none;}
.kb-mp-mapbtn-row{gap:8px;flex-wrap:wrap;}

/* Selected point label on the left, map buttons on the right, on one line under the map */
.kb-mp-mapbtn-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;}
.kb-mp-mapbtn-row .kb-mp-selected-grid{margin:0;flex:1 1 220px;min-width:0;}
.kb-mp-mapbtn-row .kb-mp-selected-grid:empty{flex:0 0 0;}
.kb-mp-mapbtn-btns{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-left:auto;}
.kb-mp-mapbtn-btns button,.kb-mp-mapbtn-btns .kb-mp-sel-btn{width:auto;flex:none;margin:0;min-height:0;padding:6px 12px;font-size:13px;}
.kb-mp-mapbtn-btns button[hidden]{display:none !important;}
/* Same space above the button row (under the map) as below it, down to the divider above the first accordion */
.kb-mp-stage #kb-map-plotter-map{margin-bottom:22px !important;}
.kb-mp-stage.is-fs #kb-map-plotter-map{margin-bottom:0 !important;}
.kb-mp-mapbtn-row{margin-bottom:0;}

/* Selected point: Eastings and Northings share a line when they fit, otherwise stack one above the other */
.kb-mp-sg-lbl{font-weight:600;margin-right:6px;}
.kb-mp-sg-en{display:inline-flex;flex-wrap:wrap;gap:2px 14px;vertical-align:top;}
.kb-mp-sg-en > span{white-space:nowrap;}

.kb-mp-stage.is-fs .kb-sm-editbar{position:static;}
.kb-sm-editbar .kb-sm-edit{margin:0 0 8px;}

/* The item being edited is greyed out in the list with an "Editing" overlay */
#kb-sm-list .kb-location-row.kb-sm-editing{overflow:hidden;}
.kb-sm-editing-ov{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.82);color:var(--brand-blue);font-weight:700;font-size:15px;letter-spacing:.04em;text-transform:uppercase;border-radius:inherit;cursor:not-allowed;}
@media (prefers-color-scheme:dark){.kb-sm-editing-ov{background:rgba(10,20,35,.82);}}

/* Creation tools: a row of small buttons; the chosen tool's form opens just under the map, like the edit and drawing bars */
.kb-mp-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px;}
.kb-mp-toolbar button{width:auto;flex:none;margin:0;padding:6px 12px;font-size:13px;}
.kb-mp-toolbar button.is-on{background:var(--navy-900);color:var(--white);}
.kb-mp-toolpanel{margin:0 0 12px;padding:10px 12px;border:1.5px solid var(--brand-blue);border-radius:var(--radius-sm);background:var(--paper);}
.kb-mp-toolpanel[hidden]{display:none !important;}
.kb-mp-toolpanel-head{display:flex;align-items:center;gap:8px;margin:0 0 10px;}
.kb-mp-toolpanel-head strong{flex:1;font-size:15px;}
.kb-mp-toolpanel .kb-mp-toolclose{background:none;border:none;font-size:24px;line-height:1;padding:0 4px;cursor:pointer;color:var(--muted);}
#kb-mp-tools{margin-top:12px;}

/* Add-an-item buttons: equal widths across the full width */
.kb-mp-toolbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));}
.kb-mp-toolbar button{width:100%;}
@media (min-width:900px){.kb-mp-toolbar{grid-template-columns:repeat(6,minmax(0,1fr));}}
.kb-mp-toolcancel{margin-top:10px;}

/* Full screen: the add-item buttons go 3 + 3 in the side panel */
.kb-mp-stage.is-fs .kb-mp-toolbar{grid-template-columns:repeat(3,minmax(0,1fr));}
/* Mobile full screen bar: buttons share the width and wrap their text instead of hanging off the screen */
@media (max-width:899px){
	.kb-mp-stage.is-fs .kb-mp-fs-bar{flex-wrap:wrap;}
	.kb-mp-stage.is-fs .kb-mp-fs-bar-btns{flex:1 1 100%;min-width:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:6px;}
	.kb-mp-stage.is-fs .kb-mp-fs-bar-btns button{width:100%;min-width:0;white-space:normal;padding:8px 6px;line-height:1.2;}
}

/* Full screen on a phone: selected point label and Clear selected sit above the add-item buttons */
.kb-mp-selrow{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:0 0 10px;}
.kb-mp-selrow .kb-mp-selected-grid{margin:0;flex:1 1 160px;min-width:0;}
.kb-mp-selrow button{width:auto;flex:none;margin:0;padding:6px 12px;font-size:13px;min-height:0;}
.kb-mp-selrow:has(#kb-mp-clear-selected-btn[hidden]){display:none;}

/* Toggle buttons light up while their setting is active (scrolling, map buttons hidden, controls hidden) */
.kb-mp-mapbtn-btns button.is-on,.kb-mp-fs-bar-btns button.is-on{background:var(--navy-900) !important;color:var(--white) !important;border-color:var(--navy-900) !important;}
.kb-mp-mapbtn-btns button:disabled,.kb-mp-fs-bar-btns button:disabled{opacity:.45;cursor:not-allowed;}

/* While an add-item form is open, the selected point row and the add-item buttons step aside */
.kb-mp-stage.kb-mp-tool-open .kb-mp-toolbar,
.kb-mp-stage.kb-mp-tool-open .kb-mp-mapbtn-row .kb-mp-selected-grid,
.kb-mp-stage.kb-mp-tool-open .kb-mp-mapbtn-row #kb-mp-clear-selected-btn,
.kb-mp-stage.kb-mp-tool-open .kb-mp-selrow{display:none !important;}

.kb-mp-drawbar-label{margin:0 0 8px;}
.kb-mp-drawbar-label label{margin-bottom:6px;}
.kb-mp-drawbar-label input{margin-bottom:0;}
.kb-mp-drawbar-btns button.is-on{background:var(--navy-900) !important;color:var(--white) !important;border-color:var(--navy-900) !important;}

.kb-mp-sectors-size small#kb-mp-drawbar-sec-note,.kb-mp-sectors-size small#kb-mp-rg-sec-note{color:#c62828;font-weight:700;font-size:13.5px;}
.kb-mp-sectors-size small#kb-mp-drawbar-sec-note:empty,.kb-mp-sectors-size small#kb-mp-rg-sec-note:empty{display:none;}

/* Warning sits directly under the label with the same gap above and below */
.kb-mp-toolpanel .kb-tool-field:has(+ .kb-tool-warning){margin-bottom:12px;}
.kb-mp-toolpanel .kb-tool-field:has(+ .kb-tool-warning) input{margin-bottom:0;}
.kb-mp-toolpanel .kb-tool-warning,.kb-mp-drawbar-warning{margin:0 0 12px;}
.kb-mp-drawbar-label{margin-bottom:12px;}
.kb-mp-drawbar-label input{margin-bottom:0;}
/* Tap points / Draw freehand / Drag a rectangle / Drag a circle: one style, equal width */
.kb-mp-shape-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 8px;}
.kb-mp-shape-btns button{margin:0;width:100%;}

/* Track me: its own full-width line on phones, not offered on desktop */
.kb-mp-toolbar .kb-mp-track-tool{grid-column:1 / -1;}
@media (min-width:900px){.kb-mp-toolbar .kb-mp-track-tool{display:none !important;}}

/* Map labels: text with a coloured background, centred on the chosen spot */
.kb-sm-labelicon{background:none;border:0;}
.kb-sm-maplabel{position:absolute;left:0;top:0;transform:translate(-50%,-50%);display:inline-block;width:max-content;max-width:220px;padding:3px 9px;border-radius:6px;border:2px solid #fff;box-shadow:0 1px 5px rgba(0,0,0,.5);font:700 13px/1.25 system-ui,sans-serif;white-space:normal;text-align:center;overflow-wrap:anywhere;pointer-events:auto;cursor:pointer;}
@media print{.kb-sm-maplabel{-webkit-print-color-adjust:exact;print-color-adjust:exact;}}

/* Scrolling through items: nothing can be added, edited or removed until it is stopped */
.kb-mp-touring #kb-mp-toolbar{position:relative;}
.kb-mp-touring #kb-mp-toolbar>*{opacity:.35;}
.kb-mp-touring #kb-mp-toolbar::after{content:'Adding items is switched off while scrolling. Press "Stop scrolling" to use these.';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:8px 12px;font-size:13px;font-weight:600;line-height:1.3;color:#1a1a1a;background:rgba(255,255,255,.7);border-radius:6px;cursor:not-allowed;z-index:2;}
.kb-mp-touring #kb-mp-toolbar button:disabled{cursor:not-allowed;}
.kb-mp-touring .kb-mp-search-wrap,.kb-mp-touring .kb-sm-row-actions [data-edit],.kb-mp-touring .kb-sm-row-actions [data-del],.kb-mp-touring .kb-sm-row-actions [data-grow],.kb-mp-touring .kb-sm-row-actions [data-snap],.kb-mp-touring .kb-sm-row-actions [data-grow-set],.kb-mp-touring .kb-sm-row-actions [data-snap-set]{opacity:.4;cursor:not-allowed;}
.kb-mp-touring #kb-sm-clear-map-btn:disabled{opacity:.4;cursor:not-allowed;}

/* On this map: show / hide whole types of item */
.kb-sm-typebar{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;margin:0 0 10px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);font-size:13px;}
.kb-sm-typebar-h{font-weight:700;color:var(--ink);}
.kb-sm-typeopt{display:inline-flex;align-items:center;gap:6px;cursor:pointer;margin:0;font-weight:600;}
.kb-sm-typeopt input{margin:0;width:18px;height:18px;}
.kb-location-row.kb-sm-typeoff{opacity:.45;filter:grayscale(1);}

.kb-sm-vis-links{display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;margin:0 0 6px;font-size:13px;}
.kb-sm-vis-note{margin:0 0 8px;font-size:12.5px;color:var(--ink-soft,#5b6573);}

/* Track me button: green */
.kb-mp-toolbar .kb-mp-track-tool{background:#2e7d32;border-color:#2e7d32;color:#fff;}
.kb-mp-toolbar .kb-mp-track-tool:hover,.kb-mp-toolbar .kb-mp-track-tool:active,.kb-mp-toolbar .kb-mp-track-tool[aria-pressed="true"]{background:#1b5e20;border-color:#1b5e20;color:#fff;}

.kb-sm-tourtoast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);max-width:min(420px,90vw);padding:10px 14px;border-radius:8px;background:#222;color:#fff;font-size:14px;line-height:1.35;text-align:center;z-index:100000;box-shadow:0 4px 14px rgba(0,0,0,.35);}
.kb-sm-tourtoast[hidden]{display:none;}

/* Travel radius: speed choices */
.kb-mp-rg-opts{flex:1 1 100%;display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;align-items:center;}
.kb-mp-rg-opt{display:flex;align-items:center;gap:6px;font-size:14px;margin:0;cursor:pointer;}
.kb-mp-rg-opt input{margin:0;width:auto;}
.kb-mp-rg-custom{grid-column:1 / -1;display:flex;align-items:center;gap:6px;}
.kb-mp-rg-custom[hidden]{display:none;}
.kb-mp-rg-custom input[type=number]{width:110px !important;}
.kb-mp-rg-mode input[type=color]{flex:1 1 100%;width:100%;margin-left:0;}
.kb-mp-rg-mode:not(.is-on) .kb-mp-rg-opts,.kb-mp-rg-mode:not(.is-on) input[type=color]{display:none;}

/* Travel radius: match the site's checkbox / radio / pill styling */
.kb-mp-rg-modes input[type=checkbox],.kb-mp-rg-modes input[type=radio]{accent-color:var(--brand-blue);width:18px;height:18px;margin:0;cursor:pointer;flex-shrink:0;}
.kb-mp-rg-modes .kb-sm-check{font-size:15px;font-weight:600;color:var(--navy-700);gap:10px;}
.kb-mp-rg-modes .kb-mp-rg-opt{display:flex;align-items:center;gap:8px;margin:0;padding:9px 12px;border:1.5px solid var(--line);border-radius:999px;background:var(--white);font-size:14px;font-weight:600;color:var(--navy-700);cursor:pointer;line-height:1.2;}
.kb-mp-rg-modes .kb-mp-rg-opt .kb-mp-optional{font-weight:400;margin-left:auto;}
.kb-mp-rg-modes .kb-mp-rg-opt:has(input:checked){background:var(--blue-bg);border-color:var(--brand-blue);}
.kb-mp-rg-modes .kb-mp-rg-opt:has(input:focus-visible){outline:2px solid var(--brand-blue-light);outline-offset:2px;}
.kb-mp-rg-modes .kb-mp-rg-custom input[type=number]{border:1.5px solid var(--line);border-radius:999px;padding:9px 14px;background:var(--white);font-size:14px;}
.kb-mp-rg-modes input[type=color]{border:1.5px solid var(--line);border-radius:var(--radius-sm);background:var(--white);cursor:pointer;}

/* While adding something, the items already on the map don't catch taps, so new items can go over them */
.kb-mp-stage.kb-mp-creating .leaflet-overlay-pane .leaflet-interactive,
.kb-mp-stage.kb-mp-creating .leaflet-marker-pane .leaflet-marker-icon:not(.kb-sm-handle){pointer-events:none !important;}

/* Travel radius: keep each way-of-travelling name centred on its tick box */
.kb-mp-rg-modes .kb-mp-rg-mode > .kb-sm-check{display:flex;align-items:center;margin:0;line-height:1.2;}

.kb-mp-rg-ago{display:block;margin-top:6px;font-size:13.5px;font-weight:600;color:var(--navy-700);}
.kb-mp-rg-ago[hidden]{display:none;}

.kb-mp-grow-box small{display:block;margin:4px 0 0 26px;color:var(--muted);font-size:13px;line-height:1.4;}

/* A travel set: one header row, its rings nested underneath */
.kb-location-row.kb-sm-setrow{display:flex;align-items:center;gap:10px;background:var(--blue-bg);border-color:var(--brand-blue-light);}
.kb-sm-setinfo{flex:1;min-width:0;}
.kb-location-row.kb-sm-child{margin-left:22px;border-left:3px solid var(--brand-blue-light);}

.kb-sm-setblock{display:flex;flex-direction:column;gap:10px;}
.kb-location-row.kb-sm-setrow .kb-sm-grip{flex:none;}
.kb-sm-growtag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:#2e7d32;color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.04em;vertical-align:middle;animation:kb-sm-growflash 1.2s ease-in-out infinite;}
@keyframes kb-sm-growflash{0%,100%{opacity:1;}50%{opacity:.25;}}
@media (prefers-reduced-motion:reduce){.kb-sm-growtag{animation:none;}}

.kb-sm-chev{flex:none;background:none;border:0;padding:4px 6px;margin:0 -4px 0 -4px;font-size:16px;line-height:1;color:var(--navy-700);cursor:pointer;}
.kb-sm-setblock.is-collapsed .kb-sm-child{display:none;}
.kb-mp-touring .kb-sm-row-actions [data-set-edit]{opacity:.4;cursor:not-allowed;}
#kb-sm-setedit .kb-tool-field{margin-bottom:12px;}

.kb-sm-pausetag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:#c62828;color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.04em;vertical-align:middle;}
.kb-sm-snaptag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:#546e7a;color:#fff;font-size:10.5px;font-weight:700;letter-spacing:.04em;vertical-align:middle;}

/* A growing travel ring pulses on the map */
/* growing rings no longer animate on the map (it made the page laggy) */

/* LIVE pill flashes while an officer is actively sharing their position (steady once the signal goes stale) */
.kb-sm-tracking.kb-sm-liveflash{animation:kb-sm-liveflash 1s ease-in-out infinite;}
@keyframes kb-sm-liveflash{0%,100%{opacity:1;}50%{opacity:.25;}}
@media (prefers-reduced-motion:reduce){.kb-sm-tracking.kb-sm-liveflash{animation:none;}}

.kb-sm-count{font-weight:400;opacity:.65;font-size:.85em;}

/* Keep growing / Split into sectors: same tick boxes as the ways-of-travelling list */
.kb-mp-sectors-box > .kb-sm-check{font-size:15px;font-weight:600;color:var(--navy-700);gap:10px;line-height:1.2;}
.kb-mp-sectors-box > .kb-sm-check input[type=checkbox]{accent-color:var(--brand-blue);width:18px;height:18px;margin:0;cursor:pointer;flex-shrink:0;}
.kb-mp-rg-limit{display:block;margin-top:6px;color:var(--muted);}

.kb-mp-grow-box > small{display:block;}
.kb-mp-grow-box > .kb-tool-field{margin-top:16px;}

.kb-sm-master{font-weight:600;color:var(--navy-700);}

.kb-sm-acc-head{gap:10px;}
.kb-sm-master-cb{accent-color:var(--brand-blue);width:18px;height:18px;margin:0;cursor:pointer;flex-shrink:0;}

.kb-mp-track-live-note{margin:6px 0 12px;padding:10px 12px;border-radius:var(--radius-sm,8px);background:var(--blue-bg,#e8f1fb);color:var(--navy-700);font-weight:600;font-size:14px;}
#kb-mp-track-panel [hidden]{display:none !important;}

.kb-mp-search-world{margin:8px 0;font-size:14px;}
.kb-mp-search-world input[type=checkbox]{accent-color:var(--brand-blue);width:18px;height:18px;margin:0;flex-shrink:0;}
.kb-mp-search-kind{display:block;font-size:12px;color:var(--muted);text-transform:capitalize;margin-top:2px;}
