/* KTC Terminal — component styles. Tokens come from theme.json presets. */
:root {
  --ktc-canvas: var(--wp--preset--color--canvas, #f1f2f5);
  --ktc-card: var(--wp--preset--color--card, #ffffff);
  --ktc-surface: var(--wp--preset--color--surface, #ecedf2);
  --ktc-ink: var(--wp--preset--color--ink, #191c25);
  --ktc-ink-2: var(--wp--preset--color--ink-2, #3c4250);
  --ktc-ink-3: var(--wp--preset--color--ink-3, #6a6e7a);
  --ktc-line: var(--wp--preset--color--line, #dfe2e8);
  --ktc-acc: var(--wp--preset--color--accent, #f26a21);
  --ktc-acc-2: var(--wp--preset--color--accent-deep, #b92818); /* links, focus ring, index numerals. 0.4.4: the portal's accent ink (tokens.css --color-accent-ink), was #c82c1a */
  --ktc-acc-fill: var(--wp--preset--color--accent-fill, #c45310); /* button fill (0.3.96: one button colour with the portal; white on it 4.57:1) */
  --ktc-acc-fill-hover: var(--wp--preset--color--accent-fill-hover, #a5450d);
  --ktc-edge-input: hsl(220 12% 53%); /* input edge: 3:1 against the card (WCAG 1.4.11) */
  --ktc-acc-rgb: 242 106 33;
  --ktc-acc-wash: rgb(var(--ktc-acc-rgb) / .06); /* 1.1.4: a Home tile pointed at */
  --ktc-acc-tint: rgb(var(--ktc-acc-rgb) / .12); /* 1.1.4: the tile icon's circle */
  --ktc-acc-tint-2: rgb(var(--ktc-acc-rgb) / .2); /* 1.1.4: the circle and the tile edge, pointed at */
  --ktc-on-acc-tint: rgb(255 255 255 / .18); /* 1.1.4: the icon circle on an orange tile */
  --ktc-radius-4: 4px; /* chips, thumbnails */
  --ktc-radius-8: 8px; /* inputs, small tiles */
  --ktc-radius-sm: 11px;
  --ktc-radius: 16px;
  --ktc-radius-pill: 999px; /* chips, tabs, buttons */
  --ktc-shadow-sm: 0 1px 3px rgba(18,22,38,.06), 0 1px 2px rgba(18,22,38,.04);
  --ktc-shadow-md: 0 8px 24px -8px rgba(18,22,38,.14), 0 2px 6px rgba(18,22,38,.05);
  --ktc-ink-deep: var(--wp--preset--color--ink-deep, #0f1a2b);
  --ktc-acc-hover: var(--wp--preset--color--accent-hover, #a5241a); /* the About page's dark card and hero ground */
  --ktc-shadow-lg: 0 18px 40px -20px rgba(18,22,38,.28), 0 2px 6px rgba(18,22,38,.06);
  --ktc-ease: cubic-bezier(.32,.72,.32,1);
  --ktc-dur: .22s;
}

:root { color-scheme: light only; }
.ktc-banner__in, .ktc-rail, .ktc-card, .ktc-vtile, .ktc-svc, .ktc-dept, .ktc-step, .ktc-strip__item { box-sizing: border-box; }
body { -webkit-font-smoothing: antialiased; background: var(--ktc-canvas); color: var(--ktc-ink); }
img { max-width: 100%; height: auto; }
:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 2px; border-radius: var(--ktc-radius-8); }

/* ---------- shared ---------- */
.ktc-card {
  background: var(--ktc-card);
  border: 1px solid var(--ktc-line);
  border-radius: var(--ktc-radius);
  box-shadow: var(--ktc-shadow-sm);
  overflow: hidden;
}
.ktc-eyebrow {
  font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ktc-ink-3); margin: 0; /* grey: the accent means "act here" (links, tags, buttons), never a label; the index numerals (01, 02 ...) are the one ratified non-action accent. Tracking ladder: 0 (base) / .04 / .06 / .08 / .12 and -.01 / -.02 / -.03 */
}
.ktc-section { padding-top: 44px; }
.ktc-section__head { margin-bottom: 14px; }
.ktc-section__head .wp-block-heading { margin: 2px 0 0; }
.ktc-section__more { font-size: 13px; font-weight: 600; white-space: nowrap; margin: 0; } /* a <p> in the head: no paragraph margins, the head's gap spaces it */
.ktc-btn-ghost .wp-block-button__link {
  background: var(--ktc-card); color: var(--ktc-ink); box-shadow: none;
  border: 1px solid var(--ktc-line);
}
.ktc-btn-ghost .wp-block-button__link:hover { border-color: var(--ktc-ink-3); background: var(--ktc-card); color: var(--ktc-ink); }

/* ---------- banner (photo first, page title on it) ---------- */
.ktc-banner {
  position: relative; color: #fff; display: flex; align-items: flex-end; min-height: 440px; /* same height on every page so the rail never jumps between tabs */
  background-color: var(--ktc-ink-deep); background-size: cover; background-position: center 40%;
  width: 100%; /* the template part is already full-bleed; no negative margins, they pushed the text off-screen on phones */
}
.ktc-banner::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(12,15,22,.55) 0%, rgba(12,15,22,.15) 35%, rgba(12,15,22,.25) 60%, rgba(12,15,22,.85) 100%);
}
.ktc-banner__in { position: relative; z-index: 1; width: 100%; max-width: 1120px; margin: 0 auto; padding: 56px 20px 84px; } /* 1080 content + 20px gutters, so the text lines up with the cards */
.ktc-banner--home { min-height: 440px; }
.ktc-banner--home .ktc-banner__in { padding-bottom: 84px; }
.ktc-banner__eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: rgba(255,255,255,.82); margin: 0; }
.ktc-banner__title { color: #fff; margin: 8px 0 0; font-size: 34px; line-height: 1.08; letter-spacing: -.02em; max-width: 22ch; text-wrap: balance; }
.ktc-banner--home .ktc-banner__title { font-size: 34px; line-height: 1.04; letter-spacing: -.03em; max-width: none; white-space: nowrap; }
.ktc-banner__lede { font-size: 15px; line-height: 1.5; color: rgba(255,255,255,.92); margin: 12px 0 0; max-width: 46ch; }
.ktc-banner__loc a { color: inherit; text-decoration: underline; text-decoration-color: rgba(255,255,255,.35); text-underline-offset: 3px; }
.ktc-banner__loc a:hover { text-decoration-color: #fff; }
.ktc-banner__loc {
  display: inline-flex; align-items: center; gap: 8px; margin: 18px 0 0;
  font-size: 12px; font-weight: 600; color: rgba(255,255,255,.85);
}
.ktc-banner__loc::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0;
  background: var(--ktc-acc); box-shadow: 0 0 0 3px rgb(var(--ktc-acc-rgb) / .3);
}

/* ---------- rail: one floating capsule, sticks to the top on scroll ---------- */
.ktc-rail {
  isolation: isolate; /* the rail stacks above the banner scrim */
  position: sticky; top: 10px; z-index: 30;
  width: calc(100% - 40px); max-width: 1080px; margin: -32px auto 0 !important;
  background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius);
  box-shadow: var(--ktc-shadow-lg); padding: 10px 14px; gap: 14px;
}
.ktc-banner__logo { display: block; height: 64px; width: auto; margin: 0 0 14px; filter: drop-shadow(0 0 1.5px rgba(255,255,255,.95)) drop-shadow(0 1px 2px rgba(0,0,0,.45)); }
main.wp-block-group { padding-top: 26px; }
main.wp-block-group > .ktc-section:first-child { padding-top: 18px; }
@media (max-width: 640px) {
  .ktc-banner { min-height: 400px; }
  .ktc-banner--home { min-height: 400px; }
  .ktc-banner__logo { height: 48px; margin-bottom: 10px; }
  .ktc-rail::after { display: none; }
  .ktc-rail { margin-top: -28px !important; top: 8px; width: calc(100% - 28px); }
  .ktc-banner__in { padding: 40px 20px 74px; }
  .ktc-banner--home .ktc-banner__in { padding-bottom: 74px; }
    .ktc-section { padding-top: 32px; }
}

/* ---------- announcements (query loop) ---------- */
.ktc-notices .wp-block-post-template { list-style: none; padding: 0; margin: 0; display: block; }
.ktc-notices .wp-block-post { margin: 0; }
.ktc-notice {
  display: grid; grid-template-columns: 92px 1fr; gap: 14px; align-items: center;
  padding: 14px 18px; border-top: 1px solid var(--ktc-line); position: relative;
}
.ktc-notices .wp-block-post:first-child .ktc-notice { border-top: 0; }
.ktc-notices .wp-block-post:first-child .ktc-notice { background: color-mix(in srgb, var(--ktc-acc) 5%, var(--ktc-card)); }
.ktc-notice__date { font-size: 12px; font-weight: 600; color: var(--ktc-ink-3); font-variant-numeric: normal; margin: 0; }
.ktc-notice__t { font-size: 14px; font-weight: 600; line-height: 1.35; margin: 0; }
.ktc-notice__t a { color: var(--ktc-ink); text-decoration: none; }
.ktc-notice__t a::after { content: ""; position: absolute; inset: 0; }
.ktc-notice__t a:hover { text-decoration: none; }

/* ---------- vessel schedule ---------- */
.ktc-card.is-layout-flow > * { margin-block-start: 0; }
.ktc-empty { padding: 18px; font-size: 13px; color: var(--ktc-ink-3); margin: 0; }
.ktc-card__foot {
  border-top: 1px solid var(--ktc-line); padding: 11px 18px;
  font-size: 12px; color: var(--ktc-ink-3); display: flex; justify-content: space-between; margin: 0;
}

/* ---------- services ---------- */
.ktc-services { display: grid; grid-template-columns: repeat(4, 1fr); }
.ktc-svc { padding: 22px 20px 24px; border-left: 1px solid var(--ktc-line); }
.ktc-svc:first-child { border-left: 0; }
.ktc-svc svg { width: 24px; height: 24px; color: var(--ktc-ink-2); display: block; } /* ink: the accent means act here */
.ktc-svc .wp-block-heading { font-size: 15px; margin: 12px 0 0; }
.ktc-svc p { font-size: 13px; color: var(--ktc-ink-2); margin: 6px 0 0; line-height: 1.5; }

/* ---------- equipment ---------- */
.ktc-fleet { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.ktc-fleet .wp-block-image { margin: 0; }
.ktc-fleet .wp-block-image img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.ktc-fleet .wp-element-caption {
  padding: 12px 18px 14px; margin: 0; text-align: left;
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  font-size: 13px; font-weight: 600; color: var(--ktc-ink); border-top: 1px solid var(--ktc-line);
}
.ktc-fleet .wp-element-caption small { font-weight: 600; color: var(--ktc-ink-3); font-size: 12px; }
.ktc-fleet__list { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; padding: 0; list-style: none; }
.ktc-fleet__list li {
  font-size: 12px; font-weight: 600; padding: 6px 11px; border-radius: var(--ktc-radius-pill);
  border: 1px solid var(--ktc-line); background: var(--ktc-card); color: var(--ktc-ink-2); margin: 0;
}

/* ---------- contact ---------- */
.ktc-contacts { display: grid; grid-template-columns: repeat(4, 1fr); }
.ktc-dept { padding: 18px 18px 20px; border-left: 1px solid var(--ktc-line); }
.ktc-dept:first-child { border-left: 0; }
.ktc-dept .wp-block-heading {
  font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ktc-ink-3); margin: 0;
}
.ktc-dept p { margin: 0; }
.ktc-dept .ktc-tel { display: block; font-size: 17px; font-weight: 700; color: var(--ktc-ink); margin-top: 8px; font-variant-numeric: normal; letter-spacing: -.01em; }
.ktc-dept .ktc-mail { display: block; font-size: 13px; margin-top: 4px; word-break: break-all; }

/* ---------- footer ---------- */
.ktc-foot { margin-top: 48px !important; border-top: 1px solid var(--ktc-line); background: var(--ktc-card); }
.ktc-foot__in { padding: 20px 0 26px; font-size: 12px; color: var(--ktc-ink-3); gap: 12px 24px; }
.ktc-foot__in p { margin: 0; }
.ktc-foot__in strong { color: var(--ktc-ink-2); font-weight: 700; }
.ktc-foot__links { display: flex; gap: 16px; }
.ktc-foot__links a { color: var(--ktc-ink-2); font-weight: 600; }
.ktc-foot__hours { font-variant-numeric: normal; }

/* ---------- inner pages ---------- */
.ktc-page { max-width: 760px; margin: 24px auto 0; padding: clamp(22px, 2.6vw, 32px); }
.ktc-page .wp-block-post-title { margin: 0 0 6px; font-size: 28px; }
.ktc-page .wp-block-post-date { font-size: 12px; font-weight: 600; color: var(--ktc-ink-3); margin: 0 0 18px; }
.ktc-page .wp-block-post-content > * { max-width: 66ch; }
.ktc-page .wp-block-post-content p { color: var(--ktc-ink-2); }
.ktc-page .wp-block-post-content h2 { font-size: 20px; margin-top: 1.6em; }
.ktc-page .wp-block-post-content h3 { font-size: 17px; margin-top: 1.4em; }
.ktc-page .wp-block-post-content img { border-radius: var(--ktc-radius-sm); }
.ktc-page .wp-block-post-content .wp-block-gallery { gap: 10px; }
.ktc-page .wp-block-post-content .wp-block-file { padding: 12px 14px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); background: var(--ktc-canvas); }
.ktc-page .wp-block-post-content .wp-block-file__button { background: var(--ktc-acc-fill); border-radius: var(--ktc-radius-8); font-size: 13px; font-weight: 700; }
.ktc-page .wp-block-post-content a:not(.wp-block-file__button) { text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--ktc-acc-2) 40%, transparent); }
.ktc-archive-title { margin: 24px 0 14px; }
.ktc-archive-title .wp-block-query-title { font-size: 24px; margin: 2px 0 0; }
.ktc-pagination { margin-top: 16px; font-size: 13px; font-weight: 600; }
.ktc-pagination .wp-block-query-pagination-numbers .page-numbers { padding: 6px 10px; border-radius: var(--ktc-radius-8); }
.ktc-pagination .wp-block-query-pagination-numbers .page-numbers.current { background: var(--ktc-surface); color: var(--ktc-ink); }
.ktc-404 { text-align: center; padding: 64px 20px; }

/* ---------- Events Calendar inside the theme ---------- */
.tribe-common .tribe-common-c-btn, .tribe-events .tribe-events-c-ical__link { border-radius: var(--ktc-radius-8); }
.tribe-events .tribe-events-l-container { padding-top: 24px; }

/* ---------- responsive ---------- */
@media (max-width: 900px) {
  .ktc-services, .ktc-contacts { grid-template-columns: 1fr 1fr; }
  .ktc-svc:nth-child(3), .ktc-dept:nth-child(3) { border-left: 0; }
  .ktc-svc:nth-child(n+3), .ktc-dept:nth-child(n+3) { border-top: 1px solid var(--ktc-line); }
  .ktc-fleet { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .ktc-notice { grid-template-columns: 1fr; gap: 4px; }
  .ktc-services, .ktc-contacts { grid-template-columns: 1fr; }
  .ktc-svc, .ktc-dept { border-left: 0; }
  .ktc-svc:nth-child(n+2), .ktc-dept:nth-child(n+2) { border-top: 1px solid var(--ktc-line); }
}
@media (prefers-reduced-motion: reduce) { /* 0.4.4: movement off, colour and opacity changes kept (they carry meaning) */
  * { transition-property: opacity, color, background-color, border-color, box-shadow !important; }
}

/* ---------- single vessel (TEC single-event block) ---------- */
.ktc-event { padding-top: 24px; }
.ktc-event__eyebrow { margin-bottom: 6px; }
.single-tribe_events .tribe-common { --tec-color-accent-primary: var(--ktc-acc-fill); --tec-color-accent-primary-hover: var(--ktc-acc-fill-hover); --tec-color-accent-primary-active: var(--ktc-acc-fill-hover); --tec-color-link-primary: var(--ktc-acc-2); --tec-font-family-sans-serif: var(--wp--preset--font-family--sans); }
.single-tribe_events .tribe-events-single { background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-sm); padding: clamp(22px, 2.6vw, 32px); }
.single-tribe_events .tribe-events-single-event-title { font-size: 28px; margin: 0 0 6px; }
.single-tribe_events .tribe-events-schedule h2 { font-size: 15px; font-weight: 600; color: var(--ktc-ink-2); }
.single-tribe_events .tribe-events-back, .single-tribe_events .tribe-events-nav-pagination { font-size: 13px; font-weight: 600; }
.single-tribe_events .tribe-events-cal-links a { border-radius: var(--ktc-radius-8); }
/* TEC's legacy view factory prints a stray "no results" notice on single events under block themes. */
.single-tribe_events .tribe-events-notices { display: none; }

/* ---------- page-to-page transitions ----------
   Same-page swaps (assets/js/ktc.js §1) with a 150 ms crossfade; view transitions are off since the
   owner's 2026-09-07 ruling. These rules only keep any browser-made transition still under reduced motion. */
@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}

/* ---------- wide section pages (Services, About) ---------- */
.ktc-wide { padding-bottom: 8px; }
.ktc-wide .ktc-section:first-child { padding-top: 28px; }
.ktc-wide .ktc-intro { max-width: 62ch; font-size: 15px; color: var(--ktc-ink-2); margin: 8px 0 0; }
.ktc-wide .ktc-svc p { font-size: 13px; }
.ktc-wide .ktc-fleet--4 { grid-template-columns: 1fr 1fr; }
.ktc-wide .ktc-statement { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.ktc-wide .ktc-statement > .ktc-card { padding: clamp(22px, 2.6vw, 32px); }
.ktc-wide .ktc-statement .wp-block-heading { margin: 4px 0 10px; font-size: 20px; }
.ktc-wide .ktc-statement p:not(.ktc-eyebrow) { color: var(--ktc-ink-2); margin: 0; font-size: 15px; line-height: 1.6; }
.ktc-wide .ktc-photo img { width: 100%; aspect-ratio: 21 / 9; object-fit: cover; display: block; }
.ktc-wide .ktc-cta { margin-top: 28px; display: flex; flex-wrap: wrap; align-items: center; gap: 14px 22px; padding: 18px 22px; }
.ktc-wide .ktc-cta p { margin: 0; color: var(--ktc-ink-2); font-size: 14px; }
.ktc-wide .ktc-cta .wp-block-buttons { margin-left: auto; }
@media (max-width: 720px) {
  .ktc-wide .ktc-statement { grid-template-columns: 1fr; }
}
/* wide pages: keep intros left-aligned, cards level, single column on phones */
.ktc-wide .ktc-intro { margin-left: 0 !important; margin-right: 0 !important; }
.ktc-wide .ktc-statement > * { margin-block-start: 0; }
.ktc-wide .ktc-statement { align-items: stretch; }
@media (max-width: 720px) {
  .ktc-wide .ktc-fleet--4 { grid-template-columns: 1fr; }
}
/* About: vision statement + numbered mission commitments */
.ktc-wide .ktc-vision { padding: clamp(24px, 3vw, 40px); }
.ktc-wide .ktc-vision__text { font-size: 20px; font-weight: 600; line-height: 1.4; letter-spacing: -.01em; color: var(--ktc-ink); margin: 10px 0 0; max-width: 34em; }
.ktc-wide .ktc-mission { display: grid; grid-template-columns: repeat(5, 1fr); margin-top: 14px; }
.ktc-wide .ktc-mission > * { margin: 0; }
.ktc-wide .ktc-mission__item { padding: 22px 20px 24px; border-left: 1px solid var(--ktc-line); }
.ktc-wide .ktc-mission__item:first-child { border-left: 0; }
.ktc-wide .ktc-mission__n { margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--ktc-acc-2); font-variant-numeric: normal; }
.ktc-wide .ktc-mission__n::before { content: "0"; }
.ktc-wide .ktc-mission__item .wp-block-heading { font-size: 15px; margin: 8px 0 0; }
.ktc-wide .ktc-mission__item p:not(.ktc-mission__n) { font-size: 13px; color: var(--ktc-ink-2); margin: 6px 0 0; line-height: 1.5; }
@media (max-width: 1000px) {
  .ktc-wide .ktc-mission { grid-template-columns: repeat(2, 1fr); }
  .ktc-wide .ktc-mission__item:nth-child(3) { border-left: 0; }
  .ktc-wide .ktc-mission__item:nth-child(n+3) { border-top: 1px solid var(--ktc-line); }
  .ktc-wide .ktc-mission__item:nth-child(5) { grid-column: 1 / -1; border-left: 0; }
}
@media (max-width: 640px) {
  .ktc-wide .ktc-mission { grid-template-columns: 1fr; }
  .ktc-wide .ktc-mission__item { border-left: 0; }
  .ktc-wide .ktc-mission__item:nth-child(n+2) { border-top: 1px solid var(--ktc-line); }
}

/* ---------- open / closed dot (Home hours rows) ---------- */
.ktc-status__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ktc-ink-3); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ktc-ink-3) 18%, transparent); }
.is-open .ktc-status__dot { background: var(--ktc-tone-ok-ink); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ktc-tone-ok-ink) 20%, transparent); }
.is-closed .ktc-status__dot { background: var(--ktc-tone-danger-ink); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ktc-tone-danger-ink) 18%, transparent); }

/* ---------- 0.2.0: memo card + notice rows ---------- */
.ktc-section__head--flex { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
.ktc-section__head--flex > div > * { margin: 0; }
.ktc-section__more-link { font-weight: 700; white-space: nowrap; }
.ktc-notices .ktc-notice { display: grid; text-decoration: none; color: var(--ktc-ink); position: static; }
.ktc-notice--row { grid-template-columns: 92px 1fr; gap: 14px; align-items: center; padding: 13px 18px; border-top: 1px solid var(--ktc-line); }
.ktc-notices .ktc-notice__t a::after { content: none; }
.ktc-notice--row.is-nothumb { grid-template-columns: 1fr; }
.ktc-tag { display: inline-flex; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 3px 8px; border-radius: var(--ktc-radius-pill); background: var(--ktc-surface); color: var(--ktc-ink-2); }
.ktc-tag--acc { background: rgb(var(--ktc-acc-rgb) / .14); color: var(--ktc-acc-2); }

/* ---------- 0.2.0: notice modal ---------- */
.ktc-modal { border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); padding: 0; width: min(820px, calc(100vw - 32px)); max-height: calc(100vh - 48px); background: var(--ktc-card); color: var(--ktc-ink); box-shadow: var(--ktc-shadow-lg); }
.ktc-modal::backdrop { background: rgba(12,15,22,.55); }
.ktc-modal__bar { display: flex; justify-content: space-between; align-items: center; padding: 12px 18px; border-bottom: 1px solid var(--ktc-line); position: sticky; top: 0; background: var(--ktc-card); z-index: 1; }
.ktc-modal__close { border: 1px solid var(--ktc-line); background: var(--ktc-card); width: 44px; height: 44px; border-radius: var(--ktc-radius-sm); cursor: pointer; color: var(--ktc-ink); }
.ktc-modal__close:hover { border-color: var(--ktc-ink-3); }
.ktc-modal__body { padding: 18px 22px 26px; overflow: auto; max-height: calc(100vh - 120px); }
.ktc-modal__title { font-size: 24px; margin: 0 0 12px; }
.ktc-modal__body .ktc-page { margin: 0; padding: 0; border: 0; box-shadow: none; max-width: none; }
.ktc-modal__loading { color: var(--ktc-ink-3); padding: 24px 0; }
html.ktc-modal-open { overflow: hidden; }
.ktc-banner { z-index: 0; }
.ktc-banner__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 40%; z-index: 0; }
.ktc-banner__in { position: relative; z-index: 2; }

/* ---------- 0.2.0: steps ---------- */
.ktc-steps-card { margin-top: 14px; }
.ktc-steps { display: grid; grid-template-columns: repeat(4, 1fr); }
.ktc-step { padding: 20px 20px 22px; border-left: 1px solid var(--ktc-line); }
.ktc-step:first-child { border-left: 0; }
.ktc-step__n { font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--ktc-acc-2); font-variant-numeric: normal; }
.ktc-step h3 { font-size: 15px; font-weight: 700; margin: 8px 0 0; }
.ktc-step p { font-size: 13px; color: var(--ktc-ink-2); margin: 6px 0 0; line-height: 1.5; }
.ktc-step a { display: inline-block; margin-top: 10px; font-size: 13px; font-weight: 600; }
.ktc-soon { display: inline-block; margin-top: 10px; font-size: 12px; font-weight: 600; color: var(--ktc-ink-3); }
.ktc-soon--pill { margin: 0; padding: 7px 12px; border: 1px dashed var(--ktc-line); border-radius: var(--ktc-radius-8); white-space: nowrap; }
.ktc-step .ktc-step__soon { margin-top: 10px; padding: 4px 10px; white-space: normal; } /* a paused lane in the four steps (0.3.96): sits where the link would */
.ktc-steps__foot { border-top: 1px solid var(--ktc-line); padding: 12px 20px; display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 13px; color: var(--ktc-ink-2); }

/* ---------- 0.2.0: photo strip ---------- */
.ktc-strip { display: flex; gap: 12px; overflow-x: auto; padding: 4px 0 14px; scroll-snap-type: x mandatory; scrollbar-width: thin; }
.ktc-strip__item { flex: 0 0 340px; margin: 0; scroll-snap-align: start; }
.ktc-strip__item img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; display: block; border-radius: var(--ktc-radius); border: 1px solid var(--ktc-line); }
.ktc-strip__item figcaption { font-size: 12px; color: var(--ktc-ink-2); margin-top: 6px; display: flex; justify-content: space-between; gap: 10px; }
.ktc-strip__item figcaption small { color: var(--ktc-ink-3); white-space: nowrap; }

/* ---------- 0.2.0: getting here + calling ---------- */
.ktc-here { display: grid; grid-template-columns: 1.25fr .75fr; gap: 20px; align-items: stretch; }
.ktc-loc { display: grid; grid-template-columns: 1fr 1fr; }
.ktc-loc__map { position: relative; display: block; min-height: 280px; background-size: cover; background-position: center; border-right: 1px solid var(--ktc-line); }
.ktc-loc__map::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12,15,22,0) 55%, rgba(12,15,22,.35)); }
.ktc-loc__pin { position: absolute; left: 50%; top: 46%; width: 34px; height: 34px; margin: -34px 0 0 -17px; border-radius: 50% 50% 50% 0; background: var(--ktc-acc); transform: rotate(-45deg); box-shadow: var(--ktc-shadow-md), 0 0 0 4px rgba(255,255,255,.6); z-index: 1; }
.ktc-loc__pin::after { content: ""; position: absolute; inset: 9px; border-radius: 50%; background: #fff; }
.ktc-loc__km { position: absolute; left: 50%; top: 46%; transform: translate(14px, 4px); background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-8); padding: 6px 10px; font-size: 12px; font-weight: 700; box-shadow: var(--ktc-shadow-md); white-space: nowrap; z-index: 1; color: var(--ktc-ink); }
.ktc-loc__body { padding: 22px 24px; display: grid; gap: 10px; align-content: start; }
.ktc-loc__body > * { margin: 0; }
.ktc-loc__addr { font-size: 15px; font-weight: 700; line-height: 1.35; }
.ktc-kv { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; font-size: 13px; margin: 0; }
.ktc-kv dt { font-weight: 700; } .ktc-kv dd { margin: 0; color: var(--ktc-ink-2); }
.ktc-loc__btns { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 4px; align-items: center; }
.ktc-btn-ghost-link { display: inline-flex; align-items: center; padding: 9px 16px; border-radius: var(--ktc-radius-sm); border: 1px solid var(--ktc-line); background: var(--ktc-card); color: var(--ktc-ink); font-size: 13px; font-weight: 700; }
.ktc-btn-ghost-link:hover { border-color: var(--ktc-ink-3); text-decoration: none; }
.ktc-calling { padding: 22px 24px; display: grid; gap: 10px; align-content: start; }
.ktc-calling > * { margin: 0; }
.ktc-calling h2 { font-size: 20px; }
.ktc-calling__p { font-size: 13px; color: var(--ktc-ink-2); line-height: 1.55; }
.ktc-calling__contact { display: grid; gap: 2px; margin-top: 4px; }
.ktc-calling__tel { font-size: 20px; font-weight: 700; letter-spacing: -.01em; color: var(--ktc-ink); font-variant-numeric: normal; }
.ktc-calling__mail { font-size: 13px; }
.ktc-calling__fine { font-size: 11px; color: var(--ktc-ink-3); }

@media (max-width: 900px) {
  .ktc-steps { grid-template-columns: 1fr 1fr; }
  .ktc-step:nth-child(3) { border-left: 0; }
  .ktc-step:nth-child(n+3) { border-top: 1px solid var(--ktc-line); }
  .ktc-here { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .ktc-steps { grid-template-columns: 1fr; }
  .ktc-step { border-left: 0; }
  .ktc-step:nth-child(n+2) { border-top: 1px solid var(--ktc-line); }
  .ktc-steps__foot { flex-direction: column; align-items: flex-start; }
  .ktc-notice--row { grid-template-columns: 1fr; gap: 4px; }
  .ktc-loc { grid-template-columns: 1fr; }
  .ktc-loc__map { min-height: 200px; border-right: 0; border-bottom: 1px solid var(--ktc-line); }
  .ktc-strip__item { flex-basis: 78vw; }
}
@media (max-width: 640px) {
  .ktc-section__head--flex, .ktc-section__head.is-layout-flex { flex-wrap: wrap; align-items: flex-start; }
  .ktc-section__more { white-space: normal; }
}

.ktc-section__head--flex h2 { font-size: 24px; }

/* vessel tiles + wide calling card (0.2.5) */
.ktc-section__sub { margin: 4px 0 0; font-size: 12px; color: var(--ktc-ink-3); }
.ktc-vtiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.ktc-vtile { background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-sm); padding: 16px 18px 18px; display: grid; gap: 4px; align-content: start; }
.ktc-vtile > p { margin: 0; }
.ktc-vtile__when { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); font-variant-numeric: normal; }
.ktc-vtile__name { font-size: 15px; font-weight: 700; letter-spacing: -.01em; margin-top: 4px !important; line-height: 1.25; }
.ktc-vtile__name a { color: var(--ktc-ink); }
.ktc-vtile__voy { font-size: 12px; font-weight: 600; color: var(--ktc-ink-3); }
.ktc-vtile__line { font-size: 12px; font-weight: 700; color: var(--ktc-ink-2); margin-top: 6px !important; }
.ktc-calling--wide { grid-template-columns: 1.4fr .6fr; gap: 24px; align-items: center; }
.ktc-calling--wide > div > * { margin: 0; }
.ktc-calling--wide h2 { margin-top: 4px; }
.ktc-calling--wide .ktc-calling__p { margin-top: 8px; }
.ktc-calling__side { display: grid; gap: 6px; padding-left: 24px; border-left: 1px solid var(--ktc-line); }
@media (max-width: 900px) { .ktc-vtiles { grid-template-columns: 1fr 1fr; } .ktc-calling--wide { grid-template-columns: 1fr; } .ktc-calling__side { padding-left: 0; border-left: 0; padding-top: 14px; border-top: 1px solid var(--ktc-line); } }
@media (max-width: 640px) { .ktc-vtiles { grid-template-columns: 1fr; } }

/* ---------- home banner slideshow (0.2.6): slow crossfade, first frame is a plain background so nothing waits on script ---------- */
.ktc-banner__slides { position: absolute; inset: 0; overflow: hidden; }
.ktc-banner__slide { position: absolute; inset: 0; background-size: cover; background-position: center 40%; opacity: 0; animation: ktc-slide 35s linear infinite; }
.ktc-banner__slide:nth-child(1) { animation-delay: 0s; }
.ktc-banner__slide:nth-child(2) { animation-delay: 7s; }
.ktc-banner__slide:nth-child(3) { animation-delay: 14s; }
.ktc-banner__slide:nth-child(4) { animation-delay: 21s; }
.ktc-banner__slide:nth-child(5) { animation-delay: 28s; }
@keyframes ktc-slide { 0% { opacity: 0; } 4% { opacity: 1; } 20% { opacity: 1; } 24% { opacity: 0; } 100% { opacity: 0; } }
.ktc-banner--slides::after { z-index: 1; }
.ktc-banner--slides .ktc-banner__in { z-index: 2; }
@media (prefers-reduced-motion: reduce) { .ktc-banner__slide { animation: none; } .ktc-banner__slide:first-child { opacity: 1; } }

.ktc-loc__road { font-size: 12px; color: var(--ktc-ink-3); margin-top: -4px !important; }

@media (max-width: 599px) {
  /* beat core's overlay rules: full-width link card, left-aligned rows, address underneath */
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { display: flex !important; flex-direction: column !important; align-items: stretch !important; justify-content: flex-start !important; width: 100%; }
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { width: 100% !important; align-self: stretch !important; align-items: stretch !important; flex-direction: column !important; order: 1; }
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item { width: 100%; display: block; }
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { width: 100%; text-align: left; box-sizing: border-box; }
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content::after { order: 2; margin-top: 22px; }
}


/* ---------- branded loader (same as the portal): the logo fills with orange bottom-to-top over a sliding bar ---------- */
.ktc-loader { display: grid; place-content: center; justify-items: center; gap: 14px; padding: 24px; }
.ktc-loader__logo { position: relative; width: 150px; height: 62px; -webkit-mask: var(--ktc-logo-url) center / contain no-repeat; mask: var(--ktc-logo-url) center / contain no-repeat; background: rgba(25,28,37,.15); }
.ktc-loader__fill { position: absolute; inset: 0; background: var(--ktc-acc-2); transform-origin: bottom; animation: ktc-logofill 1.6s var(--ktc-ease) infinite; }
@keyframes ktc-logofill { 0% { transform: scaleY(0); } 55% { transform: scaleY(1); } 100% { transform: scaleY(0); } }
.ktc-loader__bar { position: relative; width: 150px; height: 3px; border-radius: var(--ktc-radius-pill); background: rgb(var(--ktc-acc-rgb) / .14); overflow: hidden; }
.ktc-loader__bar > span { position: absolute; top: 0; bottom: 0; left: 0; display: block; width: 40%; border-radius: var(--ktc-radius-pill); background: var(--ktc-acc-2); animation: ktc-loader-slide 1.15s linear infinite; }
@keyframes ktc-loader-slide { from { transform: translateX(-115%); } to { transform: translateX(265%); } } /* transform, not left: no layout per frame (0.4.4) */
.ktc-loader__text { font-size: 12px; font-weight: 600; letter-spacing: .04em; color: var(--ktc-ink-3); }
/* page swaps: a white cover with the loader, only once a swap has taken longer than 300 ms */
.ktc-loader--page { position: fixed; inset: 0; z-index: 60; background: var(--ktc-card); display: grid; place-content: center; justify-items: center; pointer-events: auto; animation: ktc-loader-in .12s ease-out both; }
@keyframes ktc-loader-in { from { opacity: 0; } to { opacity: 1; } }
.ktc-loader--page.is-out { opacity: 0; transition: opacity .16s ease; }
@media (prefers-reduced-motion: reduce) { .ktc-loader__fill { animation: none; transform: scaleY(.55); } .ktc-loader__bar > span { animation: none; width: 100%; } .ktc-loader--page { animation: none; } }

/* satellite office block under the terminal on the Getting here card */
.ktc-loc__sat { border-top: 1px solid var(--ktc-line); padding: 16px 20px 20px; display: grid; gap: 6px; }
.ktc-loc__sat > * { margin: 0; }
.ktc-loc__sat-tags { display: flex; gap: 8px; }
.ktc-tag--ok { background: var(--ktc-tone-ok-bg); color: var(--ktc-tone-ok-ink); }
.ktc-loc__sat .ktc-loc__road { margin-top: 0 !important; }
.ktc-loc__sat .ktc-loc__btns { margin-top: 6px; }

/* notice rows with thumbnails, single-notice PDF preview, yearly archive */
.ktc-notice--row { grid-template-columns: 44px 1fr; gap: 14px; align-items: center; }
.ktc-notice--row > span:last-child { display: grid; gap: 2px; }
.ktc-notice__thumb { display: block; width: 44px; height: 56px; border-radius: var(--ktc-radius-4); border: 1px solid var(--ktc-line); overflow: hidden; background: var(--ktc-surface); }
.ktc-notice__thumb img { width: 100%; height: 100%; object-fit: cover; object-position: top; display: block; }
.ktc-notice__sum { font-size: 12px; color: var(--ktc-ink-2); line-height: 1.45; }
.ktc-memo-preview { margin: 0 0 22px; }
.ktc-memo-preview img { width: 100%; max-width: 560px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-8); box-shadow: var(--ktc-shadow-md); display: block; }
.ktc-memo-preview figcaption { font-size: 12px; color: var(--ktc-ink-3); margin-top: 8px; }
.ktc-archive { margin-top: 12px; }
.ktc-archive > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; padding: 14px 18px; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-sm); }
.ktc-archive > summary::-webkit-details-marker { display: none; }
.ktc-archive > summary::after { content: "+"; font-size: 17px; font-weight: 700; color: var(--ktc-ink-3); margin-left: 12px; }
.ktc-archive[open] > summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
.ktc-archive[open] > summary::after { content: "–"; }
.ktc-archive__y { font-size: 15px; font-weight: 700; }
.ktc-archive__n { margin-left: auto; font-size: 12px; color: var(--ktc-ink-3); }
.ktc-archive > .ktc-card { border-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; }
@media (max-width: 640px) { .ktc-notice--row { grid-template-columns: 40px 1fr; gap: 12px; } }

/* Rates and forms: the documents shelf under the notices, notice rows with a small PDF page for a thumbnail (owner 2026-10-25, Draft C) */
.ktcd { margin-top: 40px; }
.ktcd-mark { display: grid; place-items: end center; padding-bottom: 7px; background: var(--ktc-card); position: relative; }
.ktcd-mark::before { content: ""; position: absolute; top: 0; right: 0; width: 12px; height: 12px; background: linear-gradient(225deg, var(--ktc-canvas) 50%, var(--ktc-line) 50% 56%, var(--ktc-surface) 56%); }
.ktcd-mark > span { font-size: 10px; font-weight: 700; letter-spacing: .04em; color: #fff; background: var(--ktc-acc-2); border-radius: 3px; padding: 1px 5px; }
.ktcd .screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

/* location card: terminal and satellite office share one block format; cards keep their natural height (no stretched empty notices card) */
.ktc-loc__place { padding: 18px 20px 20px; display: grid; gap: 6px; align-content: start; }
.ktc-loc__place + .ktc-loc__place { border-top: 1px solid var(--ktc-line); }
.ktc-loc__place > * { margin: 0; }
.ktc-loc__tags { display: flex; gap: 8px; flex-wrap: wrap; }
.ktc-loc__place .ktc-loc__road { margin-top: -2px !important; }
.ktc-loc__place .ktc-kv { margin-top: 4px; }
.ktc-loc__place .ktc-loc__btns { margin-top: 8px; }
/* coming-soon stamp over the portal steps */
.ktc-steps-card { position: relative; }
.ktc-stamp { position: absolute; left: 50%; top: 50%; z-index: 2; transform: translate(-50%, -50%) rotate(-8deg); padding: 10px 26px; border: 4px solid var(--ktc-acc-2); border-radius: var(--ktc-radius-sm); color: var(--ktc-acc-2); font-size: 34px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; opacity: .55; pointer-events: none; mix-blend-mode: multiply; white-space: nowrap; }
/* three vessel tiles on Home */
.ktc-vtiles--3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) { .ktc-vtiles--3 { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .ktc-vtiles--3 { grid-template-columns: 1fr; } }

/* footer: copyright and the privacy link only (the theme version is a <meta> in the head) */
.ktc-foot__in { padding: 18px 0 22px; }


/* ---------- vessel schedule: board + calendar (ported from the portal) ---------- */
:root { --ktc-tone-info-bg: var(--wp--preset--color--tone-info-bg, hsl(210 60% 90%)); --ktc-tone-info-ink: var(--wp--preset--color--tone-info-ink, hsl(210 55% 36%)); --ktc-tone-ok-bg: var(--wp--preset--color--tone-ok-bg, hsl(150 50% 88%)); --ktc-tone-ok-ink: var(--wp--preset--color--tone-ok-ink, hsl(150 55% 26%)); --ktc-tone-neutral-bg: var(--wp--preset--color--tone-neutral-bg, hsl(220 12% 88%)); --ktc-tone-neutral-ink: var(--wp--preset--color--tone-neutral-ink, hsl(220 8% 40%)); --ktc-tone-danger-bg: var(--wp--preset--color--tone-danger-bg, hsl(0 75% 92%)); --ktc-tone-danger-ink: var(--wp--preset--color--tone-danger-ink, hsl(352 70% 34%)); --ktc-w45: var(--ktc-canvas); --ktc-w70: var(--ktc-surface); }
.ktc-sched { letter-spacing: 0; }
.ktc-sched-head { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: 12px 16px; padding: 16px max(16px, 2.5vw) 14px; }
.ktc-sched-headline { display: flex; flex-direction: column; gap: 3px; min-width: min(100%, 220px); }
.ktc-sched-fresh { color: var(--ktc-ink-3); font-size: 12px; font-weight: 600; }
.ktc-sched-tabs { display: inline-flex; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-pill); padding: 2px; background: var(--ktc-card); }
.ktc-sched-tab { font: inherit; font-size: 13px; font-weight: 700; color: var(--ktc-ink-3); background: transparent; border: 0; border-radius: var(--ktc-radius-pill); padding: 0 15px; min-height: 40px; cursor: pointer; transition: background-color var(--ktc-dur) var(--ktc-ease), color var(--ktc-dur) var(--ktc-ease); }
.ktc-sched-tab:hover { color: var(--ktc-ink); }
.ktc-sched-tab[aria-pressed="true"] { background: var(--ktc-w70); color: var(--ktc-ink); }
.ktc-sched-empty { padding: 30px 18px; text-align: center; color: var(--ktc-ink-2); font-weight: 600; }
.ktc-chip { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: var(--ktc-radius-pill); font-size: 11px; font-weight: 700; white-space: nowrap; background: var(--ktc-tone-neutral-bg); color: var(--ktc-tone-neutral-ink); }
.ktc-chip--info { background: var(--ktc-tone-info-bg); color: var(--ktc-tone-info-ink); }
.ktc-chip--success { background: var(--ktc-tone-ok-bg); color: var(--ktc-tone-ok-ink); }
.ktc-chip--danger { background: var(--ktc-tone-danger-bg); color: var(--ktc-tone-danger-ink); }
/* board: ledger rows */
.ktc-sched-view[data-view="board"] { --sched-grid: minmax(9rem, 1.5fr) minmax(7rem, 1fr) minmax(7rem, 1fr) auto; }
.ktc-sched-cols { display: grid; grid-template-columns: var(--sched-grid); gap: 12px; align-items: center; padding: 8px max(16px, 2.5vw); border-block: 1px solid var(--ktc-line); background: var(--ktc-w45); font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-sched-list { list-style: none; margin: 0; padding: 0; }
.ktc-sched-list > li + li { border-block-start: 1px solid var(--ktc-line); }
.ktc-sched-row { display: grid; grid-template-columns: var(--sched-grid); gap: 12px; align-items: center; padding: 13px max(16px, 2.5vw); transition: background-color var(--ktc-dur) var(--ktc-ease); }
.ktc-sched-vessel { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ktc-sched-vessel strong { font-size: 15px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ktc-sched-vessel strong a { color: var(--ktc-ink); }
.ktc-sched-vessel span { color: var(--ktc-ink-3); font-size: 13px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ktc-sched-cell { font-size: 13px; color: var(--ktc-ink-2); font-variant-numeric: normal; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ktc-sched-lab { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ktc-sched-row .ktc-chip { justify-self: end; }
@media (min-width: 720px) { .ktc-sched-meta { display: contents; } }
@media (max-width: 719.98px) {
  .ktc-sched-cols { display: none; }
  .ktc-sched-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "vessel chip" "meta meta"; row-gap: 8px; padding: 15px max(16px, 4vw); }
  .ktc-sched-vessel { grid-area: vessel; }
  .ktc-sched-row .ktc-chip { grid-area: chip; align-self: start; }
  .ktc-sched-meta { grid-area: meta; display: flex; flex-wrap: wrap; gap: 4px 18px; }
  .ktc-sched-cell { white-space: normal; font-size: 13px; }
  .ktc-sched-lab { position: static; width: auto; height: auto; overflow: visible; clip-path: none; color: var(--ktc-ink-3); font-weight: 600; margin-inline-end: .35ch; }
}
/* calendar: solid day cells on hairlines, status-tone pills, inverted-ink today */
.ktc-sched-cal { padding: 14px max(16px, 2.5vw) 16px; }
.ktc-sched-cal-top { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.ktc-sched-cal-nav { width: 36px; height: 36px; display: grid; place-items: center; padding: 0; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); background: var(--ktc-card); color: var(--ktc-ink-2); text-decoration: none; }
.ktc-sched-cal-nav:hover { background: var(--ktc-w45); color: var(--ktc-ink); text-decoration: none; }
.ktc-sched-cal-month { min-width: 9.5rem; text-align: center; font-size: 15px; font-weight: 700; font-variant-numeric: normal; }
.ktc-sched-cal-today { font-size: 13px; font-weight: 700; margin-left: 4px; }
.ktc-sched-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.ktc-sched-cal-dow { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; text-align: center; color: var(--ktc-ink-3); padding-block: 4px; }
.ktc-sched-cal-cell { min-height: 6.4rem; padding: 6px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); background: var(--ktc-w45); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ktc-sched-cal-cell[data-empty] { border-color: transparent; background: transparent; }
.ktc-sched-cal-cell[data-past] { background: transparent; }
.ktc-sched-cal-cell[data-past] .ktc-sched-cal-day { color: var(--ktc-ink-3); opacity: .55; }
.ktc-sched-cal-day { font-size: 12px; font-weight: 700; font-variant-numeric: normal; color: var(--ktc-ink-2); width: 1.5rem; height: 1.5rem; display: grid; place-items: center; border-radius: var(--ktc-radius-pill); }
.ktc-sched-cal-cell[data-today] .ktc-sched-cal-day { background: var(--ktc-ink); color: var(--ktc-card); }
.ktc-sched-cal-ev { display: block; min-width: 0; }
.ktc-sched-cal-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ktc-sched-cal-pill { display: block; font-size: 11px; font-weight: 600; line-height: 1.3; padding: 1px 7px; border-radius: var(--ktc-radius-pill); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-sched-cal-pill[data-tone="info"] { background: var(--ktc-tone-info-bg); color: var(--ktc-tone-info-ink); }
.ktc-sched-cal-pill[data-tone="success"] { background: var(--ktc-tone-ok-bg); color: var(--ktc-tone-ok-ink); }
.ktc-sched-cal-pill[data-tone="neutral"] { background: var(--ktc-tone-neutral-bg); color: var(--ktc-tone-neutral-ink); }
.ktc-sched-cal-pill[data-tone="danger"] { background: var(--ktc-tone-danger-bg); color: var(--ktc-tone-danger-ink); }
.ktc-sched-cal-dot { display: none; }
.ktc-sched-note { margin: 12px max(16px, 2.5vw) 0; padding-bottom: 14px; font-size: 12px; color: var(--ktc-ink-3); }
.ktc-sched-cal .ktc-sched-note { margin-inline: 0; padding-bottom: 0; }
.ktc-sched-muted { color: var(--ktc-ink-3); }
@media (max-width: 560px) {
  .ktc-sched-cal-cell { min-height: 3rem; }
  .ktc-sched-cal-pill { display: none; }
  .ktc-sched-cal-dot { display: inline-block; width: .5rem; height: .5rem; border-radius: var(--ktc-radius-pill); margin: 2px 0 0 .4rem; }
  .ktc-sched-cal-dot[data-tone="info"] { background: var(--ktc-tone-info-ink); }
  .ktc-sched-cal-dot[data-tone="success"] { background: var(--ktc-tone-ok-ink); }
  .ktc-sched-cal-dot[data-tone="neutral"] { background: var(--ktc-tone-neutral-ink); }
  .ktc-sched-cal-dot[data-tone="danger"] { background: var(--ktc-tone-danger-ink); }
}

/* ---------- shipping-line colours (brand hex; unknown line = ink-3) ---------- */
:root { --ktc-line-c: var(--ktc-ink-3); --ktc-line-ink: #fff; }
[data-line="maersk"], [data-line="msc"] { --ktc-line-ink: var(--ktc-ink); } /* light brand colours take dark text */
[data-line="maersk"]    { --ktc-line-c: #42B0D5; } /* Maersk Blue, PMS 7702 */
[data-line="mcc"]       { --ktc-line-c: #00233D; } /* MCC — Maersk's feeder arm, Maersk dark blue */
[data-line="evergreen"] { --ktc-line-c: #00A63C; } /* Evergreen green */
[data-line="msc"]       { --ktc-line-c: #F5C400; } /* MSC yellow */
[data-line="sitc"]      { --ktc-line-c: #D71920; } /* SITC red */
[data-line="cmacgm"], [data-line="cma"] { --ktc-line-c: #002E6D; } /* CMA CGM navy */
.ktc-line { display: inline-flex; align-items: center; gap: 6px; color: var(--ktc-ink-2); font-weight: 700; }
.ktc-line__dot { display: inline-block; width: 9px; height: 9px; border-radius: var(--ktc-radius-pill); background: var(--ktc-line-c); box-shadow: inset 0 0 0 1px rgb(0 0 0 / .12); flex: none; }
.ktc-sched-voy::before { content: "·"; margin: 0 6px; color: var(--ktc-ink-3); }
.ktc-sched-row { box-shadow: inset 4px 0 0 var(--ktc-line-c); }
.ktc-vtile__line { display: inline-flex; align-items: center; gap: 6px; }
.ktc-sched-cal-ev { display: block; width: 100%; min-width: 0; padding: 0; margin: 0; border: 0; background: none; font: inherit; text-align: left; cursor: pointer; border-radius: var(--ktc-radius-pill); }
.ktc-sched-cal-ev:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; }
.ktc-sched-cal-pill { box-shadow: inset 4px 0 0 var(--ktc-line-c); padding-left: 10px; }
.ktc-sched-cal-dot { box-shadow: 0 0 0 2px var(--ktc-line-c); }
.ktc-sched-body { position: relative; }

/* ---------- tariff tables (Rates page) ---------- */
.ktc-tariff { margin-top: 8px; }
.ktc-tariff .t-part > h2 { font-size: 20px; margin: 28px 0 6px; padding-bottom: 8px; border-bottom: 1.5px solid var(--ktc-ink); letter-spacing: -.01em; }
.ktc-tariff .t-sec { margin: 0 0 18px; }
.ktc-tariff .t-sec h3 { font-size: 15px; margin: 14px 0 6px; }
.ktc-tariff .t-note { margin: 0 0 6px; color: var(--ktc-ink-2); font-size: 13px; }
.ktc-tariff .t-sec { overflow-x: auto; }
.ktc-tariff table { width: 100%; border-collapse: collapse; font-size: 14px; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); overflow: hidden; }
.ktc-tariff th, .ktc-tariff td { padding: 8px 12px; border-bottom: 1px solid var(--ktc-line); vertical-align: top; text-align: left; }
.ktc-tariff th { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); background: var(--ktc-w45); white-space: nowrap; }
.ktc-tariff tbody tr:last-child td { border-bottom: 0; }
.ktc-tariff th.c-num, .ktc-tariff td.c-num { text-align: right; font-variant-numeric: normal; white-space: nowrap; }
.ktc-tariff td.c-basis { color: var(--ktc-ink-2); white-space: nowrap; }
.ktc-tariff th.c-grp { text-align: center; }
.ktc-tariff td.c-item { width: 38%; }
.ktc-tariff table.is-tiered td.c-item { width: 30%; }
.ktc-tariff td.is-empty { color: var(--ktc-ink-3); opacity: .6; }
.ktc-tariff tr.r-group td { font-weight: 700; color: var(--ktc-ink-2); background: var(--ktc-w45); }
.ktc-tariff .t-notes ol { margin: 8px 0 0; padding-left: 20px; color: var(--ktc-ink-2); font-size: 14px; }
.ktc-tariff .t-notes li { margin-bottom: 6px; }
/* ---------- document checklists (Requirements page) ---------- */
.ktc-checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 8px; }
.ktc-check { padding: 20px 22px 18px; }
.ktc-check h3 { margin: 4px 0 10px; font-size: 17px; }
.ktc-check__list { list-style: none; margin: 0; padding: 0; }
.ktc-check__list li { position: relative; padding: 7px 0 7px 30px; border-top: 1px solid var(--ktc-line); font-size: 14px; line-height: 1.4; }
.ktc-check__list li::before { content: ""; position: absolute; left: 2px; top: 10px; width: 16px; height: 16px; border: 1.5px solid var(--ktc-ink-3); border-radius: var(--ktc-radius-4); background: var(--ktc-card); }
@media (max-width: 760px) { .ktc-checks { grid-template-columns: 1fr; } }

/* ---------- home: Online Services card ---------- */
.ktc-portal-card { position: relative; margin-top: 14px; padding: 22px 24px; }
.ktc-portal-card p { margin: 0 0 14px; max-width: 62ch; color: var(--ktc-ink-2); }
.ktc-portal-card__links { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; }
.ktc-portal-card__more { font-weight: 700; }
.ktc-portal-card.is-soon .ktc-portal-card__body { opacity: .92; }
.ktc-fineprint { margin-top: 14px; font-size: 13px; color: var(--ktc-ink-3); }
@media (max-width: 640px) { .ktc-portal-card { padding: 18px; } .ktc-portal-card__links { gap: 10px 16px; } }

/* ---------- folded tariff (Customers page) ---------- */
.ktc-fold { margin-top: 14px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); background: var(--ktc-card); }
.ktc-fold > summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px 20px; font-weight: 700; }
.ktc-fold > summary::-webkit-details-marker { display: none; }
.ktc-fold > summary span { color: var(--ktc-ink-3); font-weight: 600; font-size: 13px; }
.ktc-fold > summary::after { content: "+"; font-size: 17px; line-height: 1; color: var(--ktc-ink-3); flex: none; }
.ktc-fold[open] > summary::after { content: "–"; }
.ktc-fold[open] > summary { border-bottom: 1px solid var(--ktc-line); }
.ktc-fold__body { padding: 4px 20px 20px; }
.ktc-fold__body .ktc-tariff table { border: 0; border-radius: 0; }
.ktc-fold__body .wp-block-buttons { margin: 14px 0 6px; }
@media (max-width: 640px) { .ktc-fold > summary { padding: 14px 16px; } .ktc-fold__body { padding: 4px 12px 16px; } }

/* ---------- shipping-line plate ---------- */
.ktc-plate { display: inline-block; padding: 6px 14px 5px; border-radius: var(--ktc-radius-8); background: var(--ktc-line-c); color: var(--ktc-line-ink); font-size: 15px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1.3; white-space: nowrap; box-shadow: inset 0 0 0 1px rgb(0 0 0 / .08); }
.ktc-sched-vessel span { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; overflow: visible; white-space: normal; }
.ktc-sched-voy::before { content: none; margin: 0; }
.ktc-vtile__line { display: block; margin-top: 8px !important; }
.ktc-vtile__line + .ktc-vtile__name { margin-top: 8px !important; }

/* ---------- timeline (the Timeline view) ---------- */
.ktc-tl { --label: 290px; --col: 44px; padding: 6px 0 0; } /* compact timeline widths */
.ktc-tl__scroll { overflow-x: auto; overscroll-behavior-x: contain; }
.ktc-tl__grid { position: relative; display: grid; grid-template-columns: var(--label) repeat(var(--days), minmax(var(--col), 1fr)); min-width: calc(var(--label) + var(--days) * var(--col)); }
.ktc-tl__corner { position: sticky; left: 0; z-index: 3; background: var(--ktc-w45); padding: 8px max(16px, 2.5vw); font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); border-block: 1px solid var(--ktc-line); }
.ktc-tl__head { grid-column: 2 / -1; display: grid; grid-template-columns: repeat(var(--days), minmax(0, 1fr)); background: var(--ktc-w45); border-block: 1px solid var(--ktc-line); }
.ktc-tl__day { text-align: center; padding: 6px 0 5px; border-left: 1px solid var(--ktc-line); font-variant-numeric: normal; line-height: 1.15; }
.ktc-tl__day b { display: block; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-tl__day span { font-size: 13px; font-weight: 700; color: var(--ktc-ink-2); }
.ktc-tl__day.is-sun span { color: var(--ktc-acc-2); }
.ktc-tl__day.is-today { background: var(--ktc-ink); }
.ktc-tl__day.is-today b, .ktc-tl__day.is-today span { color: var(--ktc-card); }
.ktc-tl__row { display: contents; }
.ktc-tl__label { position: sticky; left: 0; z-index: 2; background: var(--ktc-card); padding: 12px max(16px, 2.5vw); border-bottom: 1px solid var(--ktc-line); box-shadow: inset 4px 0 0 var(--ktc-line-c); display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.ktc-tl__label strong { font-size: 15px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-tl__line { display: block; }
.ktc-tl__label strong { order: 2; }
.ktc-tl__voy { order: 3; }
.ktc-tl__voy { color: var(--ktc-ink-3); font-size: 13px; font-weight: 600; }
.ktc-tl__track { grid-column: 2 / -1; position: relative; border-bottom: 1px solid var(--ktc-line); min-height: 64px; background: repeating-linear-gradient(to right, var(--ktc-line) 0 1px, transparent 1px calc(100% / var(--days))); background-size: 100% 100%; }
.ktc-tl__bar { position: absolute; top: 50%; transform: translateY(-50%); left: calc(var(--from) / var(--days) * 100%); width: calc((var(--to) - var(--from)) / var(--days) * 100%); height: 30px; min-width: 14px; padding: 0; border: 0; background: none; cursor: pointer; border-radius: var(--ktc-radius-8); text-align: left; font: inherit; color: inherit; }
.ktc-tl__bar:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 2px; }
.ktc-tl__berth, .ktc-tl__free { position: absolute; top: 0; bottom: 0; }
.ktc-tl__berth { left: 0; width: calc((var(--mid) - var(--from)) / (var(--to) - var(--from)) * 100%); background: var(--ktc-line-c); border-radius: var(--ktc-radius-8) 0 0 var(--ktc-radius-8); box-shadow: inset 0 0 0 1px rgb(0 0 0 / .1); }
.ktc-tl__free { left: calc((var(--mid) - var(--from)) / (var(--to) - var(--from)) * 100%); right: 0; background: color-mix(in srgb, var(--ktc-line-c) 22%, var(--ktc-card)); border: 1px solid color-mix(in srgb, var(--ktc-line-c) 55%, var(--ktc-card)); border-left: 0; border-radius: 0 var(--ktc-radius-8) var(--ktc-radius-8) 0; }
.ktc-tl__bar.is-open .ktc-tl__free { border-right-style: dashed; border-radius: 0; background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--ktc-line-c) 22%, var(--ktc-card)) 0 6px, var(--ktc-card) 6px 10px); }
.ktc-tl__now { position: absolute; top: 0; bottom: 0; left: calc(var(--label) + (100% - var(--label)) * var(--today) / var(--days)); width: 0; border-left: 2px solid var(--ktc-acc); z-index: 1; pointer-events: none; }
.ktc-tl__now span { position: absolute; bottom: 4px; left: 4px; font-size: 11px; font-weight: 700; color: var(--ktc-acc-2); background: var(--ktc-card); padding: 1px 4px; border-radius: var(--ktc-radius-4); }
.ktc-sched-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 12px max(16px, 2.5vw) 0; font-size: 12px; color: var(--ktc-ink-2); }
.ktc-sched-legend span { display: inline-flex; align-items: center; gap: 6px; }
.ktc-tl__key { display: inline-block; width: 18px; height: 10px; border-radius: var(--ktc-radius-4); }
.ktc-tl__key--berth { background: var(--ktc-ink-3); }
.ktc-tl__key--free { background: color-mix(in srgb, var(--ktc-ink-3) 22%, var(--ktc-card)); border: 1px solid color-mix(in srgb, var(--ktc-ink-3) 55%, var(--ktc-card)); }
/* 0.3.94: `.ktc-tl__bar.is-open` now means "no last free day yet" (it followed departure before).
   It gets NO legend key here, deliberately — on THIS site the state cannot render: a last free day
   is always derived from the discharge date (functions.php, ktc_free_days), so no-lfd implies
   no-discharge, which makes `--mid` equal `--to` and the hatched segment zero-wide. The portal CAN
   reach it (its vessel_last_free_day() returns null for a line with no free_days_import, discharge
   or not), which is why .vsb-key--open exists there and not here. Measured 2026-09-16. */
.ktc-tl__key--dep { width: 2px; height: 14px; background: var(--ktc-ink); border-radius: 0; }
.ktc-tl__key--now { width: 2px; height: 14px; background: var(--ktc-acc); border-radius: 0; }
@media (max-width: 719.98px) {
  .ktc-tl { --label: 132px; --col: 44px; }
  .ktc-tl__label { padding: 10px 12px; }
  .ktc-tl__label strong { font-size: 14px; white-space: normal; line-height: 1.2; }
  .ktc-tl__voy { display: none; }
  .ktc-tl__track { min-height: 58px; }
}

/* ---------- partners row (Vessel Schedule) ---------- */
[data-line="gothong"] { --ktc-line-c: #FFD200; --ktc-line-ink: var(--ktc-ink); }
[data-line="philcement"] { --ktc-line-c: #1F4E79; }
[data-line="newasiaoil"] { --ktc-line-c: #B8860B; }
.ktc-section--partners { padding-bottom: 0; }
/* the shipping lines: a plain row under the schedule, no tiles (owner 2026-09-08) */
.ktc-section--partners { padding-top: 26px; }
.ktc-partners__eyebrow { margin: 0 0 12px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-ink-3); text-align: center; }
.ktc-partners { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 14px 40px; }
.ktc-partners__item { display: flex; align-items: center; justify-content: center; height: 40px; }
.ktc-partners__item img { display: block; max-height: 28px; max-width: 120px; width: auto; height: auto; object-fit: contain; }
/* compact marks (MSC, MCC, Gothong) get more height so they weigh the same as the wide wordmarks: optical, not metric */
.ktc-partners__item[data-line="msc"] img { max-height: 40px; }
.ktc-partners__item[data-line="gothong"] img, .ktc-partners__item[data-line="mcc"] img { max-height: 34px; }
.ktc-partners__plate { display: inline-block; padding: 8px 14px; border-radius: var(--ktc-radius-8); background: var(--ktc-line-c); color: var(--ktc-line-ink); font-weight: 700; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; text-align: center; line-height: 1.2; }


/* ---------- timeline v2: status tag in the bar, expected stub, logos in ratio ---------- */
.ktc-tl__tag { position: absolute; top: 50%; transform: translateY(-50%); left: calc(var(--from) / var(--days) * 100% + 8px); display: inline-flex; align-items: center; gap: 6px; padding: 2px 8px; border-radius: var(--ktc-radius-8); background: rgb(255 255 255 / .88); color: var(--ktc-ink); font-size: 11px; font-weight: 700; letter-spacing: .04em; white-space: nowrap; pointer-events: none; box-shadow: 0 0 0 1px rgb(0 0 0 / .06); z-index: 1; }
.ktc-tl__tag em { font-style: normal; font-weight: 700; padding-left: 6px; border-left: 1px solid rgb(0 0 0 / .15); }
.ktc-tl__tag em.is-ok { color: var(--ktc-tone-ok-ink); }
.ktc-tl__tag em.is-late { color: var(--ktc-tone-danger-ink); }
.ktc-tl__bar.is-expected .ktc-tl__berth { display: none; }
.ktc-tl__bar.is-expected .ktc-tl__free { left: 0; border: 2px dashed var(--ktc-line-c); border-radius: var(--ktc-radius-8); background: transparent; }
.ktc-tl__key--exp { background: transparent; border: 2px dashed var(--ktc-ink-3); }
@media (max-width: 719.98px) { .ktc-tl__tag { font-size: 11px; padding: 1px 6px; } .ktc-tl__tag em { display: none; } }
@media (max-width: 560px) { .ktc-partners { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 12px; justify-items: center; } .ktc-partners__item { height: 30px; max-width: 100%; } .ktc-partners__item img { max-height: 20px; max-width: min(76px, 100%); } .ktc-partners__item[data-line="msc"] img { max-height: 30px; } .ktc-partners__item[data-line="gothong"] img, .ktc-partners__item[data-line="mcc"] img { max-height: 26px; } }

/* ---------- voyage search (schedule card): typeahead + advanced filters ---------- */
.ktc-vs { padding: 12px max(16px, 2.5vw) 12px; border-top: 1px solid var(--ktc-line); background: var(--ktc-w45); }
.ktc-vs__top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; }
.ktc-vs__label { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-vs__box { position: relative; flex: 1 1 300px; max-width: 520px; }
.ktc-vs__icon { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--ktc-ink-3); pointer-events: none; }
.ktc-vs__input { width: 100%; box-sizing: border-box; min-height: 42px; font: inherit; font-size: 15px; padding: 9px 12px 9px 36px; border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-sm); background: var(--ktc-card); color: var(--ktc-ink); transition: border-color var(--ktc-dur) var(--ktc-ease), box-shadow var(--ktc-dur) var(--ktc-ease); }
.ktc-vs__input::placeholder { color: var(--ktc-ink-3); }
.ktc-vs__input:focus { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; border-color: var(--ktc-edge-input); box-shadow: none; }
.ktc-vs__input::-webkit-search-cancel-button { -webkit-appearance: none; }
.ktc-vs__btn { padding: 9px 16px !important; }
.ktc-vs__adv { font: inherit; font-size: 13px; font-weight: 700; color: var(--ktc-ink-2); background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-pill); padding: 7px 12px 7px 10px; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
.ktc-vs__adv::before { content: ""; width: 10px; height: 10px; background: currentColor; -webkit-mask: var(--ktc-ico-down) center / contain no-repeat; mask: var(--ktc-ico-down) center / contain no-repeat; transition: transform var(--ktc-dur) var(--ktc-ease); }
.ktc-vs__adv[aria-expanded="true"] { color: var(--ktc-ink); background: var(--ktc-w70); }
.ktc-vs__adv[aria-expanded="true"]::before { transform: rotate(180deg); }
.ktc-vs__clear { font-size: 13px; font-weight: 700; }
.ktc-vs__filters { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px 12px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--ktc-line); }
.ktc-vs__filters label { display: grid; gap: 4px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-vs__filters select { font: inherit; font-size: 14px; text-transform: none; letter-spacing: 0; color: var(--ktc-ink); padding: 8px 10px; border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-8); background: var(--ktc-card); min-height: 38px; }
.ktc-vs__filters select:focus { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; border-color: var(--ktc-edge-input); box-shadow: none; }
/* dropdown */
.ktc-vs__pop { position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 30; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); box-shadow: var(--ktc-shadow-lg); overflow: hidden; animation: ktc-vs-drop var(--ktc-dur) var(--ktc-ease) both; }
.ktc-vs__pop[hidden] { display: none; }
.ktc-vs__opts { list-style: none; margin: 0; padding: 4px; max-height: 300px; overflow-y: auto; }
.ktc-vs__opt { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border-radius: var(--ktc-radius-8); cursor: pointer; box-shadow: inset 3px 0 0 var(--ktc-line-c); }
.ktc-vs__opt[aria-selected="true"] { background: rgb(var(--ktc-acc-rgb) / .10); }
.ktc-vs__opt-main { display: flex; align-items: center; gap: 8px; min-width: 0; flex-wrap: wrap; }
.ktc-vs__opt-name { font-size: 14px; font-weight: 700; }
.ktc-vs__opt-voy { font-size: 13px; color: var(--ktc-ink-2); font-variant-numeric: normal; }
.ktc-vs__opt-side { display: inline-flex; align-items: center; gap: 8px; flex: none; }
.ktc-vs__opt-date { font-size: 12px; color: var(--ktc-ink-3); font-variant-numeric: normal; white-space: nowrap; }
.ktc-vs__hl { background: rgb(var(--ktc-acc-rgb) / .18); color: var(--ktc-acc-2); border-radius: var(--ktc-radius-4); padding: 0 1px; }
.ktc-vs__empty { padding: 12px 10px; font-size: 13px; color: var(--ktc-ink-2); }
@keyframes ktc-vs-drop { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .ktc-vs__pop { animation: none; } .ktc-vs__adv::before, .ktc-vs__input { transition: none; } }
/* results */
.ktc-vs__results { border-top: 1px solid var(--ktc-line); }
.ktc-vs__results[hidden] { display: none; }
.ktc-vs__count { margin: 0; padding: 12px max(16px, 2.5vw) 0; font-size: 13px; color: var(--ktc-ink-2); }
.ktc-vs__list { list-style: none; margin: 8px 0 0; padding: 0; }
.ktc-vs__row { display: grid; grid-template-columns: minmax(11rem, 1.2fr) minmax(0, 3fr) auto; gap: 12px 18px; align-items: center; padding: 12px max(16px, 2.5vw); border-top: 1px solid var(--ktc-line); box-shadow: inset 4px 0 0 var(--ktc-line-c); animation: ktc-vs-pop var(--ktc-dur) var(--ktc-ease) both; }
.ktc-vs__id { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ktc-vs__id strong { font-size: 15px; font-weight: 700; }
.ktc-vs__id > span:not(.ktc-plate) { color: var(--ktc-ink-3); font-size: 13px; font-weight: 600; }
.ktc-vs__id .ktc-plate { align-self: flex-start; }
.ktc-vs__dl { margin: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px 14px; }
.ktc-vs__dl dt { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-vs__dl dd { margin: 2px 0 0; font-size: 13px; color: var(--ktc-ink); font-variant-numeric: normal; }
@keyframes ktc-vs-pop { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .ktc-vs__row { animation: none; } }
@media (max-width: 719.98px) {
  .ktc-vs { padding: 12px 16px; }
  .ktc-vs__box { flex-basis: 100%; max-width: none; }
  .ktc-vs__filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ktc-vs__opt-side .ktc-chip { display: none; }
  .ktc-vs__row { grid-template-columns: minmax(0, 1fr) auto; }
  .ktc-vs__dl { grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ---------- about us v2: description with facts column, ink vision panel, mission cards ---------- */
.ktc-about__grid { display: grid; grid-template-columns: 1fr; gap: 14px; align-items: stretch; margin: 14px 0 14px; } /* one column since the facts list retired (owner 2026-09-09) */
.ktc-about__text { margin: 0; font-size: 20px; font-weight: 600; line-height: 1.4; letter-spacing: -.01em; color: var(--ktc-ink); text-wrap: balance; }
.ktc-about__sub { margin: 14px 0 0; max-width: 60ch; font-size: 15px; line-height: 1.55; color: var(--ktc-ink-2); }
.ktc-facts { margin: 0; padding: 10px 26px; }
.ktc-facts > div { display: grid; grid-template-columns: 9.5rem minmax(0, 1fr); gap: 12px; padding: 12px 0; border-top: 1px solid var(--ktc-line); }
.ktc-facts > div:first-child { border-top: 0; }
.ktc-facts dt { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); padding-top: 3px; }
.ktc-facts dd { margin: 0; font-size: 15px; line-height: 1.45; color: var(--ktc-ink); }
/* the vision tile: the same white card as every other tile on the page, the statement set large (0.3.39 replaced the dark block) */
.ktc-wide .ktc-vision--card, .ktc-vision--card { margin-top: 14px; padding: 26px 28px 28px; }
.ktc-wide .ktc-vision--card .ktc-vision__text, .ktc-vision--card .ktc-vision__text { margin: 0; max-width: 34ch; font-size: 24px; font-weight: 600; line-height: 1.25; letter-spacing: -.02em; color: var(--ktc-ink); text-wrap: balance; }
.ktc-wide .ktc-vision--card .ktc-vision__foot, .ktc-vision--card .ktc-vision__foot { margin: 18px 0 0; max-width: 60ch; padding-top: 16px; border-top: 1px solid var(--ktc-line); font-size: 15px; line-height: 1.55; color: var(--ktc-ink-2); }
.ktc-wide .ktc-mission--cards, .ktc-mission--cards { list-style: none; margin: 18px 0 0; padding: 0; display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
.ktc-wide .ktc-mission--cards .ktc-mission__item, .ktc-mission--cards .ktc-mission__item { grid-column: span 2; padding: 22px 24px 24px; display: flex; flex-direction: column; gap: 8px; }
.ktc-wide .ktc-mission--cards .ktc-mission__item:nth-child(4), .ktc-wide .ktc-mission--cards .ktc-mission__item:nth-child(5), .ktc-mission--cards .ktc-mission__item:nth-child(4), .ktc-mission--cards .ktc-mission__item:nth-child(5) { grid-column: span 3; }
.ktc-wide .ktc-mission--cards .ktc-mission__n::before { content: none; }
.ktc-wide .ktc-mission--cards .ktc-mission__n, .ktc-mission--cards .ktc-mission__n { font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--ktc-acc-2); font-variant-numeric: normal; }
.ktc-mission--cards h3 { margin: 0; font-size: 17px; line-height: 1.25; text-wrap: balance; }
.ktc-mission--cards p { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ktc-ink-2); }
@media (max-width: 900px) {
  .ktc-about__grid { grid-template-columns: 1fr; gap: 20px; }
  .ktc-wide .ktc-mission--cards { grid-template-columns: repeat(2, 1fr); }
  .ktc-wide .ktc-mission--cards .ktc-mission__item, .ktc-wide .ktc-mission--cards .ktc-mission__item:nth-child(4), .ktc-wide .ktc-mission--cards .ktc-mission__item:nth-child(5) { grid-column: span 1; border-top: 0; }
  .ktc-wide .ktc-mission--cards .ktc-mission__item:nth-child(5) { grid-column: span 2; }
}
@media (max-width: 560px) {
  .ktc-facts > div { grid-template-columns: 1fr; gap: 3px; }
  .ktc-wide .ktc-mission--cards { grid-template-columns: 1fr; }
  .ktc-wide .ktc-mission--cards .ktc-mission__item:nth-child(5) { grid-column: span 1; }
}

/* ---------- directory + hours (Contact page) ---------- */
/* ---------- directory: one strip, one tile per desk, hairlines between ---------- */
.ktc-dir { margin-top: 14px; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ktc-dir__desk { padding: 20px 22px 22px; border-left: 1px solid var(--ktc-line); min-width: 0; }
.ktc-dir__desk:first-child { border-left: 0; }
.ktc-dir__title { margin: 0 0 6px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-dir__desk h3 { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.25; }
.ktc-dir__desk .ktc-tel { display: block; margin-top: 6px; font-size: 17px; font-weight: 700; color: var(--ktc-ink); font-variant-numeric: normal; }
.ktc-dir__desk .ktc-tel + .ktc-tel { margin-top: 2px; }
.ktc-dir__desk .ktc-mail { display: block; margin-top: 4px; font-size: 13px; word-break: break-all; }
.ktc-dir__desk .ktc-mail ~ .ktc-mail { color: var(--ktc-ink-2); }
.ktc-reach__mail ~ .ktc-reach__mail { color: var(--ktc-ink-2); } /* home lanes follow the directory: first mailbox accent, the rest ink */
.ktc-hours-wrap { margin-top: 14px; overflow-x: auto; }
.ktc-hours { width: 100%; border-collapse: collapse; font-size: 14px; }
.ktc-hours th, .ktc-hours td { padding: 10px 14px; text-align: left; vertical-align: top; border-top: 1px solid var(--ktc-line); }
.ktc-hours thead th { border-top: 0; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); background: var(--ktc-w45); }
.ktc-hours tbody th { font-weight: 700; color: var(--ktc-ink); width: 30%; }
.ktc-hours tbody tr.is-cont th, .ktc-hours tbody tr.is-cont td { border-top: 0; padding-top: 0; }
.ktc-hours td { color: var(--ktc-ink-2); font-variant-numeric: normal; }
.ktc-hours td:nth-child(3) { color: var(--ktc-ink); white-space: nowrap; }
@media (max-width: 900px) { .ktc-dir { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ktc-dir__desk:nth-child(3) { border-left: 0; } .ktc-dir__desk:nth-child(n+3) { border-top: 1px solid var(--ktc-line); } }
@media (max-width: 560px) { .ktc-dir { grid-template-columns: 1fr; } .ktc-dir__desk { border-left: 0; } .ktc-dir__desk:nth-child(n+2) { border-top: 1px solid var(--ktc-line); } .ktc-hours { font-size: 13px; } .ktc-hours th, .ktc-hours td { padding: 8px 10px; } .ktc-hours tbody th { width: auto; } }


/* ---------- rail: Online Portal button (grey until KTC Settings → Portal is live) ---------- */
.ktc-rail__portal { flex-shrink: 0; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px !important; font-size: 13px !important; white-space: nowrap; }
.ktc-rail__portal.is-soon { border: 1px dashed var(--ktc-line); border-radius: var(--ktc-radius-pill); color: var(--ktc-ink-3); background: var(--ktc-w45); font-weight: 700; cursor: not-allowed; }
.ktc-rail__portal.is-soon small { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; padding: 2px 7px; border-radius: var(--ktc-radius-pill); background: var(--ktc-card); border: 1px solid var(--ktc-line); }
.ktc-dir__note { display: block; margin-top: 4px; font-size: 12px; color: var(--ktc-ink-3); }
@media (max-width: 900px) { /* tablets and phones: the portal pill takes its own row under the tabs */
  .ktc-rail { flex-wrap: wrap; }
  .ktc-rail__portal { flex: 1 1 100%; width: 100%; box-sizing: border-box; justify-content: center; margin-top: 2px; }
}

/* ---------- home: contact lanes (partnering · concerns · other queries) ---------- */
.ktc-reach__tel { margin-top: 4px; font-size: 20px; font-weight: 700; letter-spacing: -.01em; color: var(--ktc-ink); font-variant-numeric: normal; }
.ktc-reach__mail { font-size: 13px; margin-top: 2px; word-break: break-all; }

/* ---------- phone sweep 2026-09-07: stacked hours, stacked fold title, smaller stamp, timeline hint ---------- */
@media (max-width: 640px) {
  .ktc-hours-wrap { overflow: visible; }
  .ktc-hours, .ktc-hours tbody, .ktc-hours tr, .ktc-hours th, .ktc-hours td { display: block; }
  .ktc-hours thead { display: none; }
  .ktc-hours tr { padding: 12px 16px; border-top: 1px solid var(--ktc-line); }
  .ktc-hours tr:first-child { border-top: 0; }
  .ktc-hours tr.is-cont { padding-top: 0; border-top: 0; }
  .ktc-hours tbody th { width: auto; padding: 0 0 4px; border: 0; font-size: 15px; }
  .ktc-hours td { display: inline; padding: 0; border: 0; white-space: normal; font-size: 14px; }
  .ktc-hours td:empty { display: none; }
  .ktc-hours td + td:not(:empty)::before { content: " · "; color: var(--ktc-ink-3); }
  .ktc-hours td:empty + td::before { content: none; }
  .ktc-hours td:nth-child(2) { color: var(--ktc-ink); font-weight: 700; }
  .ktc-fold > summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; align-items: start; }
  .ktc-fold > summary span { grid-column: 1 / -1; }
  .ktc-fold > summary::after { grid-column: 2; grid-row: 1; }
  .ktc-stamp { font-size: 17px; padding: 6px 14px; letter-spacing: .12em; }
  .ktc-tl::before { content: "Scroll sideways for more days · select a bar for details"; display: block; padding: 0 16px 8px; font-size: 12px; color: var(--ktc-ink-3); }
  .ktc-tl__scroll { scroll-snap-type: x proximity; }
  /* phone: section links sit at the right, as on desktop, instead of dropping under the title */
  .ktc-section__head--flex { align-items: flex-start; }
  .ktc-section__head--flex > a, .ktc-section__head--flex > .ktc-section__more, .ktc-section__head--flex .wp-block-button__link { margin-left: auto; }
  .ktc-section__more-link, .ktc-section__more { font-size: 13px; }
}

/* ---------- line-up view: the ops weekly schedule grouped per shipping line ---------- */
.ktc-lu { padding: 6px 0 4px; }
.ktc-lu__head { margin: 0; padding: 8px max(16px, 2.5vw) 10px; font-size: 12px; color: var(--ktc-ink-3); border-bottom: 1px solid var(--ktc-line); }
.ktc-lu__row:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; }
@media (max-width: 719.98px) {
  .ktc-lu__row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "vessel tags" "eta eta" "etd etd" "berth berth"; row-gap: 4px; padding: 12px 16px; }
  .ktc-lu__berth { grid-area: berth; }
  .ktc-lu__vessel { grid-area: vessel; }
  .ktc-lu__tags { grid-area: tags; align-self: start; }
  .ktc-lu__when:nth-of-type(2) { grid-area: eta; }
  .ktc-lu__when:nth-of-type(3) { grid-area: etd; }
}

/* ---------- prominent line plates (owner 2026-09-07: the line must read first; it advertises the partner) ---------- */
.ktc-vtile { box-shadow: inset 4px 0 0 var(--ktc-line-c), var(--ktc-shadow-sm); }
.ktc-vtile__line { margin-top: 10px !important; }
.ktc-vtile__name { font-size: 15px; }
.ktc-tl__label strong { font-size: 14px; }
.ktc-tl__line { margin-bottom: 4px; }
.ktc-vs__opt .ktc-plate, .ktc-vs__id .ktc-plate { font-size: 12px; padding: 3px 9px; border-radius: var(--ktc-radius-8); }
@media (max-width: 640px) { .ktc-plate { font-size: 15px; padding: 5px 12px 4px; } }

/* ---------- fortnight calendar: two weeks, roomier cells, pills carry time and berth ---------- */
.ktc-sched-cal-day small { margin-left: 4px; font-size: 11px; font-weight: 600; color: var(--ktc-ink-3); }
.ktc-sched-cal-cell[data-today] .ktc-sched-cal-day small { color: rgb(255 255 255 / .8); }
.ktc-sched-cal-cell[data-today] .ktc-sched-cal-day { width: auto; padding: 0 7px; }
.ktc-sched-cal-pill { white-space: normal; line-height: 1.25; padding: 3px 7px 3px 10px; }
.ktc-sched-cal-pill b { display: block; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ktc-sched-cal-pill span { display: block; font-size: 11px; font-weight: 600; opacity: .85; font-variant-numeric: normal; }
.ktc-sched-cal-month { min-width: 12rem; }
@media (max-width: 560px) { .ktc-sched-cal-cell { min-height: 3.4rem; } }

/* five service tiles: separate cards on a 6-column grid — two wide ones (the core offer) first, then three across — so no tile sits alone */
.wp-block-group.ktc-services > * { margin-block-start: 0; } /* 1.1.3: the grid gap spaces the cards, not the flow layout's 20 px */
.ktc-services:has(> :nth-child(5)) { grid-template-columns: repeat(6, 1fr); gap: 14px; background: none; border: 0; box-shadow: none; border-radius: 0; padding: 0; }
.ktc-services:has(> :nth-child(5)) .ktc-svc { grid-column: span 3; border: 1px solid var(--ktc-line); border-left: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); background: var(--ktc-card); box-shadow: var(--ktc-shadow-sm); padding: 22px 22px 24px; }
.ktc-services:has(> :nth-child(5)) .ktc-svc:nth-child(n+3) { grid-column: span 2; }
.ktc-svc--online { border: 1px dashed var(--ktc-line) !important; background: var(--ktc-w45) !important; box-shadow: none !important; }
.ktc-svc--online svg { color: var(--ktc-ink-3); }
.ktc-svc--online a { font-weight: 700; display: inline-block; margin-top: 6px; }
@media (max-width: 900px) {
  .ktc-services:has(> :nth-child(5)) { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .ktc-services:has(> :nth-child(5)) .ktc-svc, .ktc-services:has(> :nth-child(5)) .ktc-svc:nth-child(n+3) { grid-column: span 1; }
  .ktc-services:has(> :nth-child(5)) .ktc-svc:nth-child(5) { grid-column: span 2; }
}
@media (max-width: 640px) {
  .ktc-services:has(> :nth-child(5)) { grid-template-columns: 1fr; }
  .ktc-services:has(> :nth-child(5)) .ktc-svc, .ktc-services:has(> :nth-child(5)) .ktc-svc:nth-child(n+3), .ktc-services:has(> :nth-child(5)) .ktc-svc:nth-child(5) { grid-column: span 1; }
}

/* fleet: equipment as pills under the heading */
.ktc-fleet__pills { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 18px; padding: 0; }
.ktc-fleet__pills li { padding: 6px 12px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-pill); background: var(--ktc-card); font-size: 13px; font-weight: 700; color: var(--ktc-ink-2); }

/* phone + email inside statement cards (Partner with KTC on Port Services) */
.ktc-statement .ktc-tel { display: block; margin-top: 6px; font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--ktc-ink); font-variant-numeric: normal; }
.ktc-statement .ktc-mail { display: block; margin-top: 2px; font-size: 14px; }

/* ---------- uniform tiles across pages: fleet lead, partner card, about lead ---------- */
.ktc-fleet__lead { padding: 22px 24px 18px; margin: 14px 0 14px; }
.ktc-fleet__lead p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--ktc-ink-2); max-width: 72ch; }
.ktc-fleet__lead .ktc-fleet__pills { margin: 14px 0 0; }
.ktc-partner { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr); gap: 24px 32px; padding: 24px 26px; margin-top: 14px; align-items: start; }
.ktc-partner__text p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--ktc-ink-2); }
.ktc-partner__fine { margin-top: 14px !important; font-size: 13px !important; color: var(--ktc-ink-3) !important; }
.ktc-partner__desk { padding-left: 24px; border-left: 1px solid var(--ktc-line); display: flex; flex-direction: column; }
.ktc-partner__desk h3 { margin: 4px 0 8px; font-size: 15px; line-height: 1.3; }
.ktc-partner__desk .ktc-tel { font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--ktc-ink); font-variant-numeric: normal; }
.ktc-partner__desk .ktc-mail { margin-top: 2px; font-size: 14px; }
.ktc-about__lead { background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-sm); padding: 24px 26px; }
@media (max-width: 900px) {
  .ktc-partner { grid-template-columns: 1fr 1fr; }
  .ktc-partner__text { grid-column: 1 / -1; }
  .ktc-partner__desk:first-of-type { padding-left: 0; border-left: 0; }
}
@media (max-width: 640px) {
  .ktc-partner { grid-template-columns: 1fr; padding: 20px; }
  .ktc-partner__desk { padding-left: 0; border-left: 0; padding-top: 14px; border-top: 1px solid var(--ktc-line); }
  .ktc-fleet__lead, .ktc-about__lead { padding: 18px; }
}

/* ---------- checklist drawers + online payment (Customers) ---------- */
.ktc-checks--drawers { display: block; margin-top: 8px; }
.ktc-checks--drawers .ktc-fold { margin-top: 10px; }
.ktc-fold--check > summary { display: flex; align-items: center; gap: 14px; padding: 14px 18px; }
.ktc-fold--check > summary::after { margin-left: auto; }
.ktc-fold--check > summary .ktc-fold__eyebrow { flex: none; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); min-width: 12.5rem; }
.ktc-fold--check > summary .ktc-fold__title { color: var(--ktc-ink); font-weight: 700; font-size: 15px; }
.ktc-fold--check .ktc-fold__body { padding: 2px 18px 12px; }
.ktc-fold--check .ktc-check__list li { padding: 8px 0 8px 28px; font-size: 14px; }
.ktc-fold--check .ktc-check__list li::before { top: 10px; width: 14px; height: 14px; }
@media (max-width: 720px) {
  .ktc-fold--check > summary { flex-wrap: wrap; gap: 4px 10px; }
  .ktc-fold--check > summary .ktc-fold__eyebrow { min-width: 0; flex-basis: 100%; }
}
@media (max-width: 640px) {
  .ktc-fold--check > summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; align-items: center; }
  .ktc-fold--check > summary .ktc-fold__eyebrow { grid-column: 1; grid-row: 1; }
  .ktc-fold--check > summary .ktc-fold__title { grid-column: 1; grid-row: 2; }
  .ktc-fold--check > summary::after { grid-column: 2; grid-row: 1 / span 2; margin-left: 0; }
}

/* ---------- tariff drawers: one row per part, tap hint on the fold, tighter tables on phones ---------- */
.ktc-fold > summary .ktc-fold__hint { flex: none; font-style: normal; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ktc-acc-2); border: 1px solid color-mix(in srgb, var(--ktc-acc-2) 40%, transparent); border-radius: var(--ktc-radius-pill); padding: 3px 9px; }
.ktc-fold[open] > summary .ktc-fold__hint { display: none; }
.ktc-tariff__part { border-top: 1px solid var(--ktc-line); }
.ktc-tariff__part:first-child { border-top: 0; }
.ktc-tariff__part > summary { list-style: none; cursor: pointer; display: flex; align-items: baseline; gap: 10px; padding: 12px 0; font-weight: 700; font-size: 15px; }
.ktc-tariff__part > summary::-webkit-details-marker { display: none; }
.ktc-tariff__part > summary span { flex: 1; min-width: 0; font-weight: 600; font-size: 13px; color: var(--ktc-ink-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ktc-tariff__part > summary::after { content: "+"; font-size: 17px; line-height: 1; color: var(--ktc-ink-3); flex: none; align-self: center; }
.ktc-tariff__part[open] > summary::after { content: "–"; }
.ktc-tariff__inner { padding: 0 0 12px; }
.ktc-tariff .t-sec:first-child h3 { margin-top: 4px; }
.ktc-tariff .t-notes ol { margin-top: 0; }
@media (max-width: 640px) {
  .ktc-fold > summary .ktc-fold__hint { grid-column: 1 / -1; justify-self: start; }
  .ktc-tariff__part > summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; }
  .ktc-tariff__part > summary span { grid-column: 1 / -1; white-space: normal; }
  .ktc-tariff__part > summary::after { grid-column: 2; grid-row: 1; }
  .ktc-tariff table { font-size: 13px; }
  .ktc-tariff th, .ktc-tariff td { padding: 6px 8px; }
  .ktc-tariff td.c-item { width: auto; min-width: 8rem; }
}

/* ---------- forms: fields shared by the estimate and the message form ---------- */
.ktc-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ktc-field[hidden] { display: none; } /* the estimate toggles the date and the manual days */
.ktc-field > span { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-field > span small { font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--ktc-ink-3); margin-left: 4px; }
.ktc-field input, .ktc-field select, .ktc-field textarea { box-sizing: border-box; width: 100%; font: inherit; font-size: 15px; color: var(--ktc-ink); background: var(--ktc-card); border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-sm); padding: 9px 12px; min-height: 42px; }
.ktc-field textarea { resize: vertical; min-height: 120px; }
.ktc-field input:focus-visible, .ktc-field select:focus-visible, .ktc-field textarea:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; border-color: var(--ktc-acc); }
.ktc-field--wide { grid-column: 1 / -1; }
.ktc-seg { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.ktc-seg legend { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ktc-ink-3); padding: 0; margin-bottom: 6px; }
.ktc-seg label { display: inline-block; }
.ktc-seg legend + label { margin-left: 0; }
.ktc-seg input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ktc-seg span { display: inline-flex; align-items: center; min-height: 42px; padding: 0 16px; border: 1px solid var(--ktc-line); background: var(--ktc-card); font-weight: 700; font-size: 15px; cursor: pointer; margin-left: -1px; }
.ktc-seg label:first-of-type span { border-radius: var(--ktc-radius-sm) 0 0 var(--ktc-radius-sm); margin-left: 0; }
.ktc-seg label:last-of-type span { border-radius: 0 var(--ktc-radius-sm) var(--ktc-radius-sm) 0; }
.ktc-seg input:checked + span { background: var(--ktc-ink); color: #fff; border-color: var(--ktc-ink); position: relative; z-index: 1; }
.ktc-seg input:focus-visible + span { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; }
.ktc-tick { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; cursor: pointer; }
.ktc-tick input { width: 18px; height: 18px; accent-color: var(--ktc-acc); margin: 0; }
/* ---------- quick tariff estimate ---------- */
.ktc-calc { margin-top: 14px; padding: 22px 24px 20px; }
.ktc-calc__head h3 { margin: 4px 0 6px; font-size: 17px; }
.ktc-calc__head p:last-child { margin: 0 0 16px; font-size: 14px; line-height: 1.55; color: var(--ktc-ink-2); max-width: 62ch; }
.ktc-calc__form { display: grid; gap: 14px; }
.ktc-calc__row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px 16px; align-items: end; }
.ktc-calc__row .ktc-seg { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0; }
.ktc-calc__row .ktc-seg legend { float: left; width: 100%; }
.ktc-calc__checks { grid-template-columns: repeat(auto-fit, minmax(170px, max-content)); gap: 10px 22px; padding-top: 4px; }
.ktc-calc__out { margin-top: 18px; border-top: 1px solid var(--ktc-line); }
.ktc-calc__out table { width: 100%; border-collapse: collapse; font-size: 15px; }
.ktc-calc__out td { padding: 9px 0; border-bottom: 1px solid var(--ktc-line); vertical-align: top; }
.ktc-calc__out td + td { text-align: right; font-variant-numeric: normal; white-space: nowrap; padding-left: 16px; }
.ktc-calc__out td small { display: block; font-size: 12px; color: var(--ktc-ink-3); font-variant-numeric: normal; }
.ktc-calc__out tr.is-sub td { color: var(--ktc-ink-2); }
.ktc-calc__out tr.is-total td { font-weight: 700; font-size: 17px; border-bottom: 0; padding-top: 12px; }
.ktc-calc__fine { margin: 10px 0 0; font-size: 12px; color: var(--ktc-ink-3); }
/* ---------- "Message us" ---------- */
.ktc-msg { margin-top: 14px; padding: 22px 24px 20px; }
.ktc-msg__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 16px; }
.ktc-msg__hp { position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.ktc-msg__ts { margin-top: 14px; min-height: 65px; }
.ktc-msg__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 16px; }
.ktc-msg__consent { margin: 0; font-size: 12px; color: var(--ktc-ink-3); max-width: 46ch; }
.ktc-msg__foot .wp-element-button { cursor: pointer; }
.ktc-msg__foot .wp-element-button:disabled { opacity: .6; cursor: progress; }
.ktc-msg__status { margin: 10px 0 0; font-size: 14px; font-weight: 600; color: var(--ktc-ink-2); min-height: 1.2em; }
.ktc-msg__status.is-error { color: var(--ktc-tone-danger-ink); }
.ktc-msg__status.is-ok { color: var(--ktc-tone-ok-ink); }
.ktc-msg__status:empty { display: none; }
.ktc-msg__done h3 { margin: 4px 0 8px; font-size: 17px; }
.ktc-msg__done p:last-child { margin: 0; color: var(--ktc-ink-2); font-size: 15px; }
@media (max-width: 640px) {
  .ktc-calc, .ktc-msg { padding: 18px 16px 16px; }
  .ktc-msg__grid { grid-template-columns: 1fr; }
  .ktc-calc__row { grid-template-columns: 1fr 1fr; }
  .ktc-calc__row .ktc-seg { grid-column: 1 / -1; }
  .ktc-calc__checks { grid-template-columns: 1fr; }
  .ktc-msg__foot .wp-element-button { width: 100%; text-align: center; }
}

/* ---------- estimate picker: reuses the schedule search's combobox styling ---------- */
.ktc-calc__pick > label > span { display: block; font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-calc__pick > label > span small { font-weight: 600; letter-spacing: 0; text-transform: none; margin-left: 4px; }
.ktc-calc__pick .ktc-vs__box { flex: none; max-width: none; } /* the schedule search gives the box a 300px flex-basis; in a column flex that became height */
.ktc-calc__pick .ktc-vs__input { padding-left: 36px; padding-right: 40px; } /* .ktc-field input would otherwise win the padding and put the text under the icon */
.ktc-calc__pick .is-picked .ktc-vs__input { font-weight: 700; }
.ktc-calc__clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border: 0; border-radius: var(--ktc-radius-8); background: none; color: var(--ktc-ink-3); cursor: pointer; }
.ktc-calc__clear:hover { background: var(--ktc-w45); color: var(--ktc-ink); }
.ktc-calc__clear[hidden] { display: none; }
.ktc-vs__group { padding: 8px 10px 4px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-vs__opt-side { display: inline-flex; align-items: center; gap: 8px; flex: none; }
.ktc-vs__opt-date { font-size: 12px; color: var(--ktc-ink-3); white-space: nowrap; }
@media (max-width: 560px) { .ktc-vs__opt-date { display: none; } }

/* ---------- Contact Us: compact (owner 2026-09-07: message first, then directory, hours, location) ---------- */
.ktc-wide:has(#message) .ktc-section { padding-top: 30px; }
.ktc-wide:has(#message) .ktc-section:first-child { padding-top: 22px; }
.ktc-wide:has(#message) h2.wp-block-heading { margin-bottom: 4px; font-size: 20px; }
.ktc-wide:has(#message) .ktc-intro { margin: 6px 0 0; font-size: 15px; max-width: none; line-height: 1.55; }
.ktc-wide:has(#message) .ktc-msg { margin-top: 16px; padding: 18px 20px 16px; }
.ktc-wide:has(#message) .ktc-msg__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 14px; }
.ktc-wide:has(#message) .ktc-msg__grid .ktc-field:nth-child(5) { grid-column: 2 / -1; } /* topic | container or job number */
.ktc-wide:has(#message) .ktc-field input, .ktc-wide:has(#message) .ktc-field select { min-height: 38px; padding: 7px 10px; }
.ktc-wide:has(#message) .ktc-field textarea { min-height: 88px; }
.ktc-wide:has(#message) .ktc-msg__foot { margin-top: 10px; }
.ktc-wide:has(#message) .ktc-dir { margin-top: 12px; }
.ktc-wide:has(#message) .ktc-dir__desk { padding: 16px 18px 18px; }
.ktc-wide:has(#message) .ktc-dir__desk .ktc-tel { margin-top: 3px; font-size: 15px; }
.ktc-wide:has(#message) .ktc-dir__desk .ktc-mail { margin-top: 2px; font-size: 12px; }
.ktc-wide:has(#message) .ktc-hours-wrap { margin-top: 12px; }
.ktc-wide:has(#message) .ktc-hours { font-size: 14px; }
.ktc-wide:has(#message) .ktc-hours th, .ktc-wide:has(#message) .ktc-hours td { padding: 7px 12px; }
.ktc-wide:has(#message) .ktc-statement { gap: 14px; margin-top: 12px; }
.ktc-wide:has(#message) .ktc-statement > .ktc-card { padding: 18px 20px; }
@media (max-width: 900px) {
  .ktc-wide:has(#message) .ktc-msg__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ktc-wide:has(#message) .ktc-msg__grid .ktc-field:nth-child(5) { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .ktc-wide:has(#message) .ktc-section { padding-top: 24px; }
  .ktc-wide:has(#message) .ktc-msg__grid { grid-template-columns: 1fr; }
}

/* ---------- About Us tiles: the calling card's heading moved above it; the photo card sits flush with the grid ---------- */
.ktc-calling--wide { margin-top: 14px; }
.ktc-calling__body > * { margin: 0; }
.ktc-about .ktc-photo { margin-top: 0; }
@media (max-width: 720px) { .ktc-about__grid { grid-template-columns: 1fr; } }

/* ---------- location tiles (Contact): the home page's map-pin card, two side by side ---------- */
.ktc-locs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; align-items: stretch; }
.ktc-loc--tile { display: flex; flex-direction: column; }
.ktc-loc--tile .ktc-loc__map { min-height: 170px; border-right: 0; border-bottom: 1px solid var(--ktc-line); }
.ktc-loc__map--plain { background: radial-gradient(120% 90% at 30% 20%, var(--ktc-ink-2), var(--ktc-ink) 70%); }
.ktc-loc__map--plain::after { background: repeating-linear-gradient(0deg, rgb(255 255 255 / .06) 0 1px, transparent 1px 28px), repeating-linear-gradient(90deg, rgb(255 255 255 / .06) 0 1px, transparent 1px 28px); }
.ktc-loc--tile .ktc-loc__place { flex: 1; padding: 18px 20px 20px; display: flex; flex-direction: column; }
.ktc-loc--tile .ktc-kv { margin-top: 6px; row-gap: 6px; }
.ktc-loc--tile .ktc-kv dt { white-space: nowrap; }
.ktc-loc--tile .ktc-loc__btns { margin-top: auto; padding-top: 12px; }
@media (max-width: 720px) { .ktc-locs { grid-template-columns: 1fr; } .ktc-loc--tile .ktc-loc__map { min-height: 140px; } }

/* ---------- line-up: collapsible groups + filters ---------- */
.ktc-lu__filters { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px max(16px, 2.5vw) 12px; border-bottom: 1px solid var(--ktc-line); background: var(--ktc-w45); }
.ktc-lu__btn { font: inherit; font-size: 13px; font-weight: 700; color: var(--ktc-acc-2); background: none; border: 0; padding: 4px 6px; cursor: pointer; border-radius: var(--ktc-radius-8); }
.ktc-lu__btn:hover { background: var(--ktc-card); }
.ktc-lu__btn[hidden] { display: none; }
.ktc-tl__row.is-filtered-out, .ktc-tl__bar.is-filtered-out, .ktc-sched-cal-ev.is-filtered-out { display: none !important; }

/* ---------- schedule filters above the views; line-up header = name + logo + bare count ---------- */
.ktc-sched-filters { border-top: 1px solid var(--ktc-line); }

/* ---------- 404 ---------- */
.ktc-404 { padding: 40px 0 56px; text-align: left; }
.ktc-404__card { padding: 26px 28px 28px; }
.ktc-404__card h2 { margin: 4px 0 8px; }
.ktc-404__card p { margin: 0 0 10px; color: var(--ktc-ink-2); }
.ktc-404__links { list-style: none; margin: 4px 0 14px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.ktc-404__links a { display: inline-block; padding: 8px 14px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-pill); font-weight: 700; font-size: 14px; color: var(--ktc-ink); background: var(--ktc-w45); }
.ktc-404__links a:hover { border-color: var(--ktc-ink-3); text-decoration: none; }
.ktc-404__help { font-size: 14px; margin: 0 !important; padding-top: 12px; border-top: 1px solid var(--ktc-line); }
.ktc-404__search { margin-top: 16px; }

.ktc-lu__nomatch { margin: 0; padding: 12px max(16px, 2.5vw); font-size: 14px; color: var(--ktc-ink-2); background: var(--ktc-w45); border-bottom: 1px solid var(--ktc-line); }
.ktc-lu__nomatch[hidden] { display: none; }

/* ---------- board: the line-up as one time-sorted list; the shipping line leads each row ---------- */
.ktc-board { font-size: 13px; }
.ktc-board .ktc-lu__head { font-size: 12px; }
.ktc-board__hd, .ktc-board__row { display: grid; grid-template-columns: minmax(8.5rem, .9fr) minmax(11rem, 1.4fr) minmax(8.5rem, 1fr) minmax(8.5rem, 1fr) 3rem minmax(11rem, 1fr); gap: 0 14px; align-items: center; padding: 0 max(16px, 2.5vw); }
.ktc-board__hd { padding-top: 7px; padding-bottom: 7px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-ink-3); background: var(--ktc-w45); border-bottom: 1px solid var(--ktc-line); }
.ktc-board__row { width: 100%; min-height: 42px; border: 0; border-bottom: 1px solid var(--ktc-line); background: none; font: inherit; font-size: 13px; color: inherit; text-align: left; cursor: pointer; box-shadow: inset 3px 0 0 var(--ktc-line-c); }
.ktc-board__row:last-child { border-bottom: 0; }
.ktc-board__row:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; }
.ktc-board__row[hidden] { display: none; }
.ktc-board__line { display: inline-flex; align-items: center; gap: 10px; min-width: 0; font-weight: 600; color: var(--ktc-ink-2); }
/* every logo sits in the same 56px box, left-aligned, so the line names start on one vertical line */
.ktc-board__logo { width: 56px; height: 16px; object-fit: contain; object-position: left center; flex: none; }
.ktc-board__dot { width: 56px; height: 16px; flex: none; position: relative; }
.ktc-board__dot::before { content: ""; position: absolute; left: 0; top: 4px; width: 8px; height: 8px; border-radius: 50%; background: var(--ktc-line-c); }
.ktc-board__linename { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-board__line .ktc-board__logo + .ktc-board__linename { display: none; } /* as in the timeline and calendar: the logo says it */
.ktc-board__vessel { min-width: 0; line-height: 1.25; }
.ktc-board__vessel strong { display: block; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-board__vessel small { display: block; font-size: 11px; color: var(--ktc-ink-3); font-weight: 600; }
.ktc-board__vessel small.is-tba { color: var(--ktc-ink-3); }
.ktc-board__when { white-space: nowrap; color: var(--ktc-ink); }
.ktc-board__when em { font-style: normal; font-size: 11px; font-weight: 700; letter-spacing: .06em; color: var(--ktc-tone-info-ink); margin-left: 6px; vertical-align: 1px; }
.ktc-board__when i, .ktc-board__r i { font-style: normal; color: var(--ktc-ink-3); }
@media (max-width: 640px) { .ktc-board__when.is-tba, .ktc-board__vessel small.is-tba { display: none; } } /* on a phone row the vessel name carries it; 'tba' twice says nothing */
.ktc-board__r { text-align: right; }
.ktc-board__status { display: inline-flex; justify-content: flex-end; gap: 10px; flex-wrap: nowrap; }
.ktc-st { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; white-space: nowrap; color: var(--ktc-tone-neutral-ink); }
.ktc-st::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.ktc-st--success { color: var(--ktc-tone-ok-ink); }
.ktc-st--info { color: var(--ktc-tone-info-ink); }
.ktc-st--danger { color: var(--ktc-tone-danger-ink); }
.ktc-st--neutral { color: var(--ktc-ink-3); }
@media (max-width: 860px) {
  .ktc-board__hd { display: none; }
  .ktc-board__row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "line status" "vessel vessel" "eta etd"; gap: 3px 12px; padding-top: 9px; padding-bottom: 9px; }
  .ktc-board__line { grid-area: line; } .ktc-board__vessel { grid-area: vessel; } .ktc-board__status { grid-area: status; }
  .ktc-board__when:nth-of-type(3) { grid-area: eta; } .ktc-board__when:nth-of-type(4) { grid-area: etd; font-size: 12px; color: var(--ktc-ink-3); }
  .ktc-board__when:nth-of-type(4)::before { content: "ETD "; font-size: 11px; font-weight: 700; letter-spacing: .06em; }
  .ktc-board__r:not(.ktc-board__status) { display: none; }
  .ktc-board__vessel strong, .ktc-board__vessel small { display: inline; } .ktc-board__vessel small { margin-left: 6px; }
}
/* ---------- compact timeline: 40px rows, the line leads the label, status written inside the bar ---------- */
.ktc-tl__corner { padding-top: 6px; padding-bottom: 6px; font-size: 11px; }
.ktc-tl__day { padding: 4px 0; font-variant-numeric: normal; }
.ktc-tl__day b { font-size: 11px; }
.ktc-tl__day span { font-size: 12px; }
.ktc-tl__label { flex-direction: row; align-items: center; gap: 8px; padding: 0 12px 0 14px; min-height: 40px; box-shadow: inset 3px 0 0 var(--ktc-line-c); font-size: 13px; }
.ktc-tl__label strong { order: 0; font-size: 13px; }
.ktc-tl__label .ktc-board__logo { height: 14px; max-width: 54px; }
.ktc-tl__label .ktc-board__linename { font-size: 11px; font-weight: 600; color: var(--ktc-ink-2); }
.ktc-tl__label .ktc-board__logo + .ktc-board__linename { display: none; } /* the logo says it; the name only shows for lines without one */
.ktc-tl__label .ktc-board__logo { width: 48px; height: 14px; margin-right: 2px; }
.ktc-tl__label .ktc-board__dot { width: 48px; height: 14px; }
.ktc-tl__voy { order: 0; font-size: 11px; font-weight: 600; }
.ktc-tl__track { min-height: 40px; }
.ktc-tl__bar { height: 20px; }
.ktc-tl__berth, .ktc-tl__free { border-radius: var(--ktc-radius-4); }
.ktc-tl__berth { border-radius: var(--ktc-radius-4) 0 0 var(--ktc-radius-4); }
.ktc-tl__bar.is-expected .ktc-tl__free { border-width: 1.5px; border-radius: var(--ktc-radius-4); }
/* the status rides on the bar as a small white tag, so it stays legible on short bars, stripes, and dark colours alike */
.ktc-tl__txt { position: absolute; left: 5px; top: 2px; height: 16px; display: inline-flex; align-items: center; gap: 5px; padding: 0 6px; border-radius: var(--ktc-radius-4); background: rgb(255 255 255 / .92); color: var(--ktc-ink); font-size: 11px; font-weight: 700; line-height: 1; white-space: nowrap; pointer-events: none; box-shadow: 0 0 0 1px rgb(0 0 0 / .06); }
.ktc-tl__bar.is-expected .ktc-tl__txt { color: var(--ktc-tone-info-ink); background: var(--ktc-card); }
.ktc-tl__txt em { font-style: normal; font-weight: 600; }
.ktc-tl__txt em.is-ok { color: var(--ktc-tone-ok-ink); }
.ktc-tl__txt em.is-late { color: var(--ktc-tone-danger-ink); }
.ktc-tl__tag { display: none; }
@media (max-width: 640px) { .ktc-tl { --label: 120px; } .ktc-tl__voy { display: none; } .ktc-tl__label { flex-wrap: wrap; gap: 2px 6px; padding: 6px 10px 6px 12px; } .ktc-tl__label .ktc-board__linename::after { content: none; } .ktc-tl__label strong { flex-basis: 100%; } }
/* calendar pills a touch smaller, normal figures */
.ktc-sched-cal-pill { font-size: 11px; }
.ktc-sched-cal-pill span { font-variant-numeric: normal; }
.ktc-lu__when, .ktc-sched-cell, .ktc-tl__day { font-variant-numeric: normal; }

/* ---------- schedule filters as dropdowns ---------- */
.ktc-lu__sel { display: inline-flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-lu__sel select { font: inherit; font-size: 13px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--ktc-ink); background: var(--ktc-card); border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-8); padding: 6px 30px 6px 10px; min-height: 34px; min-width: 11rem; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 5 5-5' fill='none' stroke='%236a6e7a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") /* the family's chevron (a select cannot take a mask) */; background-repeat: no-repeat; background-position: right 10px center; }
.ktc-lu__sel select:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; }
@media (max-width: 640px) { .ktc-lu__sel { width: 100%; } .ktc-lu__sel select { flex: 1; min-width: 0; } }

/* one status per row; a delay is a quiet red suffix */
.ktc-st__late { font-style: normal; font-weight: 600; color: var(--ktc-tone-danger-ink); margin-left: 4px; }

.ktc-calc__err { margin: 12px 0 0; font-size: 14px; color: var(--ktc-tone-danger-ink); }
#estimate .ktc-calc { margin-top: 14px; }

/* the estimate as a drawer (owner 2026-09-08) */
.ktc-fold--calc { margin-top: 14px; }
.ktc-fold--calc > summary { padding: 14px 18px; }
.ktc-fold--calc .ktc-fold__body { padding: 0; }
.ktc-calc--in-fold { margin: 0; border: 0; box-shadow: none; border-radius: 0; padding: 14px 18px 16px; }
.ktc-calc--in-fold .ktc-calc__head p:last-child { margin-bottom: 12px; font-size: 13px; }
.ktc-calc--in-fold .ktc-calc__form { gap: 10px; }
.ktc-calc--in-fold .ktc-calc__out { margin-top: 12px; }
.ktc-calc--in-fold .ktc-calc__out td { padding: 6px 0; }
.ktc-calc--in-fold .ktc-field input, .ktc-calc--in-fold .ktc-field select { min-height: 36px; padding: 6px 10px; }

/* pocket calculator: the drawer and the card stay the width of a phone, even on desktop (owner 2026-09-08) */
.ktc-fold--calc { max-width: 460px; }
.ktc-calc--in-fold { padding: 12px 14px 14px; font-size: 13px; }
.ktc-calc--in-fold .ktc-calc__head p:last-child { font-size: 12px; line-height: 1.45; margin-bottom: 10px; }
.ktc-calc--in-fold .ktc-calc__form { gap: 8px; }
.ktc-calc--in-fold .ktc-calc__row { grid-template-columns: 1fr 1fr; gap: 8px 10px; }
.ktc-calc--in-fold .ktc-calc__row:nth-child(2) { grid-template-columns: 1.2fr 1fr .7fr; }
.ktc-calc--in-fold .ktc-calc__row .ktc-seg { grid-column: auto; }
.ktc-calc--in-fold .ktc-seg span { min-height: 32px; padding: 0 10px; font-size: 12px; }
.ktc-calc--in-fold .ktc-seg legend, .ktc-calc--in-fold .ktc-field > span { font-size: 11px; }
.ktc-calc--in-fold .ktc-field > span small { display: none; }
.ktc-calc--in-fold .ktc-field input, .ktc-calc--in-fold .ktc-field select { min-height: 32px; padding: 4px 8px; font-size: 13px; }
.ktc-calc--in-fold .ktc-calc__pick label > span small { display: none; }
.ktc-calc--in-fold .ktc-vs__input { min-height: 32px; font-size: 13px; padding-top: 5px; padding-bottom: 5px; }
.ktc-calc--in-fold .ktc-calc__checks { grid-template-columns: repeat(3, max-content); gap: 6px 12px; padding-top: 2px; }
.ktc-calc--in-fold .ktc-tick { font-size: 12px; gap: 6px; }
.ktc-calc--in-fold .ktc-tick input { width: 15px; height: 15px; }
.ktc-calc--in-fold .ktc-calc__out { margin-top: 10px; }
.ktc-calc--in-fold .ktc-calc__out table { font-size: 12px; }
.ktc-calc--in-fold .ktc-calc__out td { padding: 5px 0; }
.ktc-calc--in-fold .ktc-calc__out td small { font-size: 11px; }
.ktc-calc--in-fold .ktc-calc__out tr.is-total td { font-size: 15px; padding-top: 8px; }
.ktc-calc--in-fold .ktc-calc__fine { font-size: 11px; margin-top: 8px; }
.ktc-fold--calc { margin-left: 0 !important; } /* sits under the section heading, not centred */
.ktc-calc--in-fold .ktc-calc__pick .ktc-vs__input { padding-left: 34px; } /* room for the search icon */
@media (max-width: 480px) { .ktc-calc--in-fold .ktc-calc__checks { grid-template-columns: 1fr 1fr; } }

/* the estimate beside a short guide on wide screens */
.ktc-calc-split { display: grid; grid-template-columns: minmax(0, 460px) minmax(0, 1fr); gap: 14px 20px; align-items: start; margin-top: 14px; }
.ktc-calc-split .ktc-fold--calc { margin-top: 0; }
.ktc-calc-guide { padding: 16px 18px 18px; font-size: 13px; }
.ktc-calc-guide .ktc-eyebrow { margin-bottom: 8px; }
.ktc-calc-guide__list { margin: 0; display: grid; gap: 8px; }
.ktc-calc-guide__list > div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: 10px; padding-top: 8px; border-top: 1px solid var(--ktc-line); }
.ktc-calc-guide__list > div:first-child { border-top: 0; padding-top: 0; }
.ktc-calc-guide__list dt { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); padding-top: 2px; }
.ktc-calc-guide__list dd { margin: 0; color: var(--ktc-ink-2); line-height: 1.5; }
@media (max-width: 860px) { .ktc-calc-split { grid-template-columns: 1fr; } .ktc-calc-guide__list > div { grid-template-columns: 6rem minmax(0, 1fr); } }

.ktc-fold--calc > summary .ktc-fold__eyebrow { min-width: 0; }
.ktc-fold--calc > summary .ktc-fold__title { white-space: nowrap; }
.ktc-calc__out td + td { font-variant-numeric: normal; }
.ktc-calc__out td small { font-variant-numeric: normal; }

/* the payment QRPh code */
.ktc-onlinepay__qr { display: block; width: 150px; margin: 0 0 8px; border: 0; border-radius: var(--ktc-radius-8); background: #fff; padding: 0; }
.ktc-onlinepay__qr img { display: block; width: 100%; height: auto; }

/* ---------- lightbox ---------- */
.ktc-lbx { position: fixed; inset: 0; width: 100vw; height: 100vh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: transparent; color: #fff; display: none; }
.ktc-lbx[open] { display: grid; place-items: center; }
.ktc-lbx::backdrop { background: rgb(12 15 22 / .86); }
.ktc-lbx__fig { margin: 0; max-width: min(92vw, 1100px); max-height: 88vh; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ktc-lbx__img { display: block; max-width: 100%; max-height: 78vh; width: auto; height: auto; border-radius: var(--ktc-radius-sm); background: #fff; box-shadow: var(--ktc-shadow-lg); }
.ktc-lbx__cap { font-size: 14px; color: rgb(255 255 255 / .85); text-align: center; padding: 0 16px; }
.ktc-lbx__close, .ktc-lbx__nav { position: fixed; border: 0; cursor: pointer; color: #fff; background: rgb(255 255 255 / .12); border-radius: var(--ktc-radius-pill); font: inherit; line-height: 1; display: inline-flex; align-items: center; justify-content: center; }
.ktc-lbx__close:hover, .ktc-lbx__nav:hover { background: rgb(255 255 255 / .24); }
.ktc-lbx__close:focus-visible, .ktc-lbx__nav:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.ktc-lbx__close { top: 16px; right: 16px; width: 44px; height: 44px; }
.ktc-lbx__nav { top: 50%; transform: translateY(-50%); width: 48px; height: 48px; padding: 0; }
.ktc-lbx__prev { left: 16px; } .ktc-lbx__next { right: 16px; }
.ktc-lbx.is-single .ktc-lbx__nav, .ktc-lbx.is-single .ktc-lbx__count { display: none; }
.ktc-lbx__count { position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%); font-size: 13px; color: rgb(255 255 255 / .75); font-variant-numeric: normal; }
@media (max-width: 640px) { .ktc-lbx__nav { width: 40px; height: 40px; bottom: 14px; top: auto; transform: none; } .ktc-lbx__prev { left: 14px; } .ktc-lbx__next { right: 14px; } .ktc-lbx__count { bottom: 26px; } .ktc-lbx__img { max-height: 70vh; } }
@media (prefers-reduced-motion: no-preference) { .ktc-lbx[open] .ktc-lbx__fig { animation: ktc-lbx-in .18s var(--ktc-ease) both; } @keyframes ktc-lbx-in { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } } }

.ktc-field[data-calc-reefer][hidden] { display: none; }

.ktc-field--xray { grid-column: 1 / -1; max-width: 12rem; }
.ktc-field--xray[hidden] { display: none; }

/* ---------- calendar entries in the board's airport look: line stripe + logo, vessel, time, dot status ---------- */
.ktc-cal__ev { display: grid; gap: 2px; padding: 5px 7px 6px 9px; border-radius: var(--ktc-radius-8); background: var(--ktc-card); border: 1px solid var(--ktc-line); box-shadow: inset 3px 0 0 var(--ktc-line-c); text-align: left; font-size: 11px; line-height: 1.25; min-width: 0; }
.ktc-cal__ev + .ktc-cal__ev { margin-top: 3px; }
.ktc-cal__line { display: inline-flex; align-items: center; gap: 6px; min-width: 0; min-height: 12px; }
.ktc-cal__line .ktc-board__logo, .ktc-cal__line .ktc-board__dot { width: 44px; height: 12px; }
.ktc-cal__line .ktc-board__dot::before { top: 2px; width: 7px; height: 7px; }
.ktc-cal__line .ktc-board__linename { font-size: 11px; font-weight: 600; color: var(--ktc-ink-2); }
.ktc-cal__line .ktc-board__logo + .ktc-board__linename { display: none; } /* as in the timeline: the logo says it */
.ktc-cal__vessel { display: block; font-weight: 700; font-size: 12px; color: var(--ktc-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-cal__when { display: block; color: var(--ktc-ink-2); font-variant-numeric: normal; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-cal__when em { font-style: normal; font-size: 11px; font-weight: 700; letter-spacing: .06em; color: var(--ktc-tone-info-ink); margin-left: 4px; vertical-align: 1px; }
.ktc-cal__when i { font-style: normal; color: var(--ktc-ink-3); margin-left: 6px; }
.ktc-cal__ev .ktc-st { font-size: 11px; gap: 5px; flex-wrap: wrap; white-space: normal; }
.ktc-cal__ev .ktc-st::before { width: 6px; height: 6px; }
.ktc-cal__ev .ktc-st__late { font-style: normal; font-weight: 600; color: var(--ktc-tone-danger-ink); }
.ktc-sched-cal-cell .ktc-sched-cal-day { margin-bottom: 1px; }

/* the vessels of a day: a plain wrapper on desktop, the right-hand column of the phone agenda */
.ktc-sched-cal-evs { display: contents; }
.ktc-calc__out td small { display: none; }
@media (max-width: 560px) {
  /* ---------- phone calendar = agenda: one row per day with a vessel (and today), vessels in the board look ---------- */
  .ktc-sched-cal { padding-inline: 0; }
  .ktc-sched-cal-top { padding-inline: 12px; }
  .ktc-sched-cal-dow { display: none; }
  .ktc-sched-cal-grid { grid-template-columns: 1fr; gap: 0; border-top: 1px solid var(--ktc-line); }
  .ktc-sched-cal-cell { display: grid; grid-template-columns: 3.25rem minmax(0, 1fr); gap: 0 10px; align-items: start; min-height: 0; padding: 10px 12px; border: 0; border-bottom: 1px solid var(--ktc-line); border-radius: 0; background: none; }
  .ktc-sched-cal-cell[data-n="0"]:not([data-today]) { display: none; }
  .ktc-sched-cal-cell::before { content: attr(data-dow); grid-column: 1; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-ink-3); }
  .ktc-sched-cal-cell[data-past]::before, .ktc-sched-cal-cell[data-past] .ktc-sched-cal-day { opacity: .55; }
  .ktc-sched-cal-cell .ktc-sched-cal-day { grid-column: 1; margin: 1px 0 0; width: auto; height: auto; padding: 2px 8px 2px 0; display: inline-flex; justify-content: flex-start; gap: 4px; font-size: 17px; border-radius: var(--ktc-radius-8); }
  .ktc-sched-cal-cell[data-today] .ktc-sched-cal-day { padding-inline: 8px; }
  .ktc-sched-cal-day small { margin: 0; }
  .ktc-sched-cal-evs { display: grid; gap: 4px; grid-column: 2; grid-row: 1 / span 2; min-width: 0; }
  .ktc-sched-cal-cell[data-n="0"] .ktc-sched-cal-evs::before { content: "No arrivals scheduled"; font-size: 12px; color: var(--ktc-ink-3); padding-top: 6px; }
  .ktc-cal__ev { grid-template-columns: 48px minmax(0, 1fr) auto; grid-template-areas: "line vessel st" "line when st"; align-items: center; gap: 1px 8px; padding: 7px 9px 7px 11px; font-size: 12px; }
  .ktc-cal__ev + .ktc-cal__ev { margin-top: 0; }
  .ktc-cal__line { grid-area: line; }
  .ktc-cal__line .ktc-board__logo, .ktc-cal__line .ktc-board__dot { width: 44px; height: 14px; }
  .ktc-cal__line .ktc-board__logo + .ktc-board__linename { display: none; }
  .ktc-cal__line .ktc-board__linename { font-size: 11px; }
  .ktc-cal__vessel { grid-area: vessel; font-size: 13px; }
  .ktc-cal__when { grid-area: when; }
  .ktc-cal__ev .ktc-st { grid-area: st; justify-self: end; flex-direction: column; align-items: flex-end; gap: 1px; text-align: right; font-size: 11px; }
  .ktc-cal__ev .ktc-st::before { display: none; }
  .ktc-cal__ev .ktc-st__late { font-size: 11px; }
  .ktc-sched-cal-dot { display: none !important; }
  .ktc-sched-cal .ktc-sched-note { padding-inline: 12px; }
}


/* ---------- phone gutter: 24px each side so cards clear rounded corners and cutouts (owner 2026-09-09) ---------- */
@media (max-width: 640px) {
  :root, body { --wp--style--root--padding-left: 24px; --wp--style--root--padding-right: 24px; } /* WordPress sets the variable on body, so :root alone does nothing */
  .ktc-rail { width: calc(100% - 40px); }
  .ktc-banner__in { padding-left: 24px; padding-right: 24px; }
}

/* home copy 2026-09-09: one-row desk hours, notices link at the foot of the card, satellite map in the stacked location card */
.ktc-notices { display: flex; flex-direction: column; }

/* ---------- privacy policy: plain prose in one card ---------- */
.ktc-policy .ktc-intro { max-width: 68ch; font-size: 15px; color: var(--ktc-ink-2); margin: 8px 0 0; }
.ktc-policy__body { margin-top: 18px; margin-left: 0 !important; margin-right: 0 !important; padding: 8px 28px 28px; max-width: 76ch; }
.ktc-policy__body h3 { font-size: 17px; margin: 26px 0 8px; letter-spacing: -.01em; }
.ktc-policy__body p, .ktc-policy__body li { font-size: 15px; line-height: 1.6; color: var(--ktc-ink-2); }
.ktc-policy__body p { margin: 0 0 10px; }
.ktc-policy__body ul { margin: 0 0 12px; padding-left: 20px; }
.ktc-policy__body li { margin-bottom: 6px; }
.ktc-policy__body li strong, .ktc-policy__body p strong { color: var(--ktc-ink); font-weight: 700; }
.ktc-policy__meta { padding: 14px 0 12px; border-bottom: 1px solid var(--ktc-line); font-size: 12px !important; color: var(--ktc-ink-3) !important; }
.ktc-policy__contact { padding: 12px 16px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); background: var(--ktc-w45); display: inline-block; }
@media (max-width: 640px) { .ktc-policy__body { padding: 4px 16px 20px; } }

/* satellite office: a photo of the office entrance — no pin on a photo; the Km chip sits bottom-left as a caption */
.ktc-loc__map--photo { background-size: cover; background-position: center 45%; }
.ktc-loc__map--photo .ktc-loc__pin { display: none; }
.ktc-loc__map--photo .ktc-loc__km { left: 14px; bottom: 14px; top: auto; transform: none; z-index: 1; }

/* announcements: earlier years in one quiet fold */
.ktc-archive--all { margin-top: 28px; }
.ktc-archive--all > summary { font-size: 14px; }
.ktc-archive--all p.ktc-archive__y { margin: 16px 0 8px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-archive--all .ktc-notices .ktc-notice--row { padding-top: 10px; padding-bottom: 10px; }

/* ---------- schedule: one compact bar holds the voyage search and the line / status filters ---------- */
.ktc-sched-head { padding: 12px max(16px, 2.5vw) 10px; }
.ktc-sched-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; padding: 8px max(16px, 2.5vw) 8px; border-top: 1px solid var(--ktc-line); border-bottom: 1px solid var(--ktc-line); background: var(--ktc-w45); }
.ktc-sched-bar .ktc-vs { flex: 1 1 380px; padding: 0; border: 0; background: none; }
.ktc-sched-bar .ktc-vs__top { gap: 8px; }
.ktc-sched-bar .ktc-vs__label { font-size: 11px; }
.ktc-sched-bar .ktc-vs__input { min-height: 36px; padding-top: 6px; padding-bottom: 6px; }
.ktc-sched-bar .ktc-vs__btn { min-height: 36px; padding: 6px 14px !important; }
.ktc-sched-bar .ktc-lu__filters { flex: 0 1 auto; margin-left: auto; padding: 0; border: 0; background: none; gap: 8px; }
.ktc-lu__lead { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); white-space: nowrap; }
.ktc-sched-bar .ktc-lu__sel select { min-height: 36px; padding-top: 5px; padding-bottom: 5px; }
.ktc-sched-bar .ktc-lu__btn { min-height: 36px; }
@media (max-width: 860px) {
  .ktc-sched-bar .ktc-lu__filters { margin-left: 0; width: 100%; }
  .ktc-lu__lead { width: 100%; }
}
@media (max-width: 640px) {
  .ktc-sched-bar { padding: 8px 12px; gap: 8px 10px; }
  .ktc-sched-bar .ktc-lu__filters { display: grid; grid-template-columns: 1fr 1fr; }
  .ktc-lu__lead { grid-column: 1 / -1; }
  .ktc-sched-bar .ktc-lu__sel { width: auto; }
}

/* the bar keeps search box + button on one line; filters shrink to fit beside them on desktop */
.ktc-sched-bar .ktc-vs { flex: 1 1 340px; }
.ktc-sched-bar .ktc-vs__top { flex-wrap: nowrap; }
.ktc-sched-bar .ktc-vs__box { flex: 1 1 200px; max-width: 420px; min-width: 0; }
.ktc-sched-bar .ktc-vs__btn { flex: none; }
.ktc-sched-bar .ktc-lu__sel select { min-width: 0; width: auto; }
@media (max-width: 640px) {
  .ktc-sched-bar .ktc-vs__top { flex-wrap: wrap; }
  .ktc-sched-bar .ktc-vs__label { flex-basis: 100%; }
  .ktc-sched-bar .ktc-vs__box { flex: 1 1 0; max-width: none; }
}

/* fleet lead paragraph spans the whole card (pills removed, owner 2026-09-09) */
.ktc-fleet__lead { padding: 20px 24px; }
.ktc-fleet__lead p { max-width: none; text-align: left; }
.ktc-wide .ktc-partner__fine a { font-weight: 700; }

/* customers page (owner 2026-09-09): text spans its card, intros span the section, counter cards laid out like the home location card */
.ktc-wide .ktc-intro { max-width: none; }
.ktc-policy .ktc-intro { max-width: 68ch; } /* the privacy page keeps its measure after the About rule above */
.ktc-statement .ktc-card { display: flex; flex-direction: column; gap: 6px; }
.ktc-statement .ktc-card > * { margin: 0; }
.ktc-statement .ktc-card h3 { font-size: 17px; }
.ktc-statement .ktc-card .ktc-loc__road { margin-top: -2px !important; }
.ktc-statement .ktc-card .ktc-kv { margin-top: 6px; }
.ktc-statement .ktc-card .ktc-loc__btns { margin-top: auto; padding-top: 12px; } /* both Directions buttons sit on the same baseline */

/* about: one statement card — the story on the left, the services note as a side panel (facts list retired, owner 2026-09-09) */
.ktc-about__lead { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(240px, 1fr); gap: 28px 40px; align-items: center; padding: 30px 34px; }
.ktc-about__lead .ktc-about__text { max-width: 34ch; }
.ktc-about__aside { padding-left: 32px; border-left: 1px solid var(--ktc-line); align-self: stretch; display: flex; flex-direction: column; justify-content: center; gap: 6px; }
.ktc-about__aside .ktc-eyebrow { margin: 0; }
.ktc-about__aside .ktc-about__sub { margin: 0; max-width: none; font-size: 17px; line-height: 1.5; }
@media (max-width: 720px) {
  .ktc-about__lead { grid-template-columns: 1fr; gap: 18px; padding: 22px 20px; }
  .ktc-about__lead .ktc-about__text { max-width: none; }
  .ktc-about__aside { padding-left: 0; border-left: 0; padding-top: 16px; border-top: 1px solid var(--ktc-line); }
}

/* ---------- About Us, concept D (owner 2026-09-09): navy photo hero, statement + index, gradient vision, mission columns, mosaic, light partner card ---------- */
.ktc-banner--about { min-height: 440px; background: var(--ktc-ink-deep); }
.ktc-banner--about .ktc-banner__bg { opacity: .6; object-position: center 45%; }
.ktc-banner--about::after { background: linear-gradient(180deg, rgba(15,26,43,.12) 0%, rgba(15,26,43,.5) 50%, rgba(15,26,43,.96) 100%); }
.ktc-banner--about .ktc-banner__in { padding-top: 72px; }
.ktc-banner--about .ktc-banner__eyebrow { color: rgba(255,255,255,.82); }
.ktc-banner--about .ktc-banner__title { font-size: 34px; font-weight: 700; max-width: 16ch; margin-top: 0; letter-spacing: -.03em; }
.ktc-banner--about .ktc-banner__lede { font-size: 17px; max-width: 56ch; color: rgba(255,255,255,.86); }
@media (max-width: 640px) { .ktc-banner--about { min-height: 400px; } .ktc-banner--about .ktc-banner__in { padding-top: 56px; } }

.ktc-ab-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr); gap: 20px 48px; align-items: start; margin-top: 14px; }
.ktc-ab-lead { margin: 0; font-size: 20px; line-height: 1.5; font-weight: 600; color: var(--ktc-ink); }
.ktc-ab-lead--sub { margin-top: 14px; font-size: 17px; font-weight: 450; color: var(--ktc-ink-2); }
.ktc-ab-index { border-top: 2px solid var(--ktc-ink); padding-top: 8px; }
.ktc-ab-index .ktc-eyebrow { color: var(--ktc-ink-3); margin: 6px 0 2px; }
.ktc-ab-index ol { list-style: none; margin: 0; padding: 0; }
.ktc-ab-index li { display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 13px 0; border-bottom: 1px solid var(--ktc-line); font-weight: 700; font-size: 15px; }
.ktc-ab-index li span { font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--ktc-acc-2); padding-top: 4px; }
.ktc-ab-plate { margin: 40px 0 0; border-radius: var(--ktc-radius); overflow: hidden; position: relative; border: 1px solid var(--ktc-line); box-shadow: var(--ktc-shadow-sm); background: var(--ktc-card); }
.ktc-ab-plate a { display: block; }
.ktc-ab-plate img { width: 100%; aspect-ratio: 21 / 9; object-fit: cover; display: block; }
.ktc-ab-plate figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 14px 20px; color: #fff; font-size: 13px; background: linear-gradient(180deg, transparent, rgba(15,26,43,.8)); pointer-events: none; }

.ktc-ab-vision { border-radius: var(--ktc-radius); background: var(--ktc-ink-deep); color: #fff; padding: clamp(32px, 4.5vw, 52px) clamp(24px, 5vw, 56px); position: relative; overflow: hidden; box-shadow: var(--ktc-shadow-sm); }
.ktc-ab-vision > * { position: relative; z-index: 1; }
.ktc-ab-vision .ktc-eyebrow { color: rgba(255,255,255,.7); }
.ktc-ab-vision__quote { margin: 0; font-size: 28px; font-weight: 700; line-height: 1.22; letter-spacing: -.02em; max-width: 26ch; text-wrap: balance; }
.ktc-ab-vision__text { margin: 22px 0 0; max-width: 58ch; color: rgba(255,255,255,.9); font-size: 17px; line-height: 1.55; }

.ktc-ab-rail { display: block; margin: 14px 0 0; padding: 0; list-style: none; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-sm); overflow: hidden; }
.ktc-ab-rail li { display: grid; grid-template-columns: 3rem minmax(0, 1fr) minmax(0, 1.7fr); gap: 4px 24px; align-items: start; padding: 18px 22px; border-top: 1px solid var(--ktc-line); position: relative; }
.ktc-ab-rail li:first-child { border-top: 0; }
.ktc-ab-rail__n { font-size: 24px; font-weight: 700; letter-spacing: -.03em; color: var(--ktc-acc-2); line-height: 1; padding-top: 2px; }
.ktc-ab-rail h3 { margin: 0; font-size: 17px; font-weight: 700; line-height: 1.25; letter-spacing: -.01em; padding-top: 3px; }
.ktc-ab-rail p { margin: 0; font-size: 14px; color: var(--ktc-ink-2); line-height: 1.55; }

.ktc-ab-mosaic { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; gap: 14px; }
.ktc-ab-mosaic figure { margin: 0; border-radius: var(--ktc-radius); overflow: hidden; position: relative; background: var(--ktc-card); border: 1px solid var(--ktc-line); }
.ktc-ab-mosaic figure:first-child { grid-row: 1 / span 2; }
.ktc-ab-mosaic a { display: block; height: 100%; }
.ktc-ab-mosaic img { width: 100%; height: 100%; object-fit: cover; min-height: 200px; display: block; }
.ktc-ab-mosaic figcaption { position: absolute; left: 14px; bottom: 14px; background: rgba(255,255,255,.94); color: var(--ktc-ink); padding: 6px 12px; border-radius: var(--ktc-radius-pill); font-size: 12px; font-weight: 700; pointer-events: none; }

.ktc-ab-glad { background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); padding: clamp(24px, 3.5vw, 40px) clamp(22px, 3.8vw, 44px); display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) minmax(0, 1fr); gap: 28px 32px; align-items: start; box-shadow: var(--ktc-shadow-sm); }
.ktc-ab-glad__intro h2 { margin: 0; font-size: 24px; font-weight: 700; letter-spacing: -.02em; line-height: 1.12; }
.ktc-ab-glad__intro p { margin: 10px 0 0; color: var(--ktc-ink-2); font-size: 15px; line-height: 1.55; max-width: 36ch; }
.ktc-ab-glad__intro .ktc-eyebrow { margin: 0 0 8px; }
.ktc-ab-glad__intro .ktc-ab-glad__fine { margin-top: 16px; font-size: 13px; color: var(--ktc-ink-3); }
.ktc-ab-desk { background: var(--ktc-w45); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); padding: 20px 22px 22px 24px; position: relative; overflow: hidden; }
.ktc-ab-desk .ktc-eyebrow { margin: 0 0 6px; }
.ktc-ab-desk h3 { margin: 0 0 10px; font-size: 17px; font-weight: 700; line-height: 1.25; }
.ktc-ab-desk a { display: block; text-decoration: none; }
.ktc-ab-desk__tel { font-size: 24px; font-weight: 700; letter-spacing: -.01em; color: var(--ktc-ink); margin-bottom: 6px; }
.ktc-ab-desk__mail { font-size: 14px; color: var(--ktc-acc-2); font-weight: 600; line-height: 1.6; }
@media (max-width: 900px) { .ktc-ab-rail { grid-template-columns: 1fr 1fr; } .ktc-ab-glad { grid-template-columns: 1fr 1fr; } .ktc-ab-glad__intro { grid-column: 1 / -1; } }
@media (max-width: 720px) { .ktc-ab-grid { grid-template-columns: 1fr; gap: 22px; } .ktc-ab-mosaic { grid-template-columns: 1fr; grid-template-rows: auto; } .ktc-ab-mosaic figure:first-child { grid-row: auto; } .ktc-ab-mosaic img { min-height: 0; aspect-ratio: 16 / 9; } }
@media (max-width: 600px) { .ktc-ab-rail { grid-template-columns: 1fr; } .ktc-ab-glad { grid-template-columns: 1fr; } }

/* ---------- rail R5 (owner 2026-09-10): Menu button on the left drops the links under it; "You are on" beside it; brand lives in the banner ---------- */
.ktc-rail { padding: 8px 12px 8px 8px; gap: 12px; justify-content: flex-start; }
.ktc-rail .wp-block-navigation { margin: 0; position: static; flex: none; }
.ktc-rail .wp-block-navigation__responsive-container-open { display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px 9px 13px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-pill); background: var(--ktc-card); color: var(--ktc-ink); font: inherit; font-size: 13px; font-weight: 700; line-height: 1; box-shadow: var(--ktc-shadow-sm); cursor: pointer; transition: background var(--ktc-dur) var(--ktc-ease), color var(--ktc-dur), border-color var(--ktc-dur); }
.ktc-rail .wp-block-navigation__responsive-container-open::after { content: "Menu"; }
.ktc-rail .wp-block-navigation__responsive-container-open svg { width: 18px; height: 18px; fill: currentColor; }
.ktc-rail .wp-block-navigation__responsive-container-open:hover { border-color: var(--ktc-ink-3); }
.ktc-rail .wp-block-navigation__responsive-container-open:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 2px; }
.ktc-rail.is-open .wp-block-navigation__responsive-container-open { background: var(--ktc-acc-fill); border-color: var(--ktc-acc-fill); color: #fff; } /* 0.4.4: the button fill, 4.57:1 with white (the bright orange was 3.06:1) */
.ktc-rail__now { min-width: 0; padding-left: 12px; border-left: 1px solid var(--ktc-line); font-size: 13px; font-weight: 700; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-rail__now small { display: block; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--ktc-ink-3); margin-bottom: 2px; }
/* the WordPress overlay becomes a sheet anchored under the button */
.ktc-rail .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none; }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open { position: absolute; inset: auto; left: 0; top: calc(100% + 8px); width: min(360px, 100%); height: auto; padding: 8px; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-lg); z-index: 40; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; max-height: var(--ktc-sheet-max, 70dvh); display: block; animation: ktc-sheet-in .16s var(--ktc-ease) both; }
@keyframes ktc-sheet-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .ktc-rail .wp-block-navigation__responsive-container.is-menu-open { animation: none; } }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-close, .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog, .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { position: static; width: auto; height: auto; min-height: 0; display: block; padding: 0 !important; margin: 0; background: none; overflow: visible; }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content { display: block; }
.ktc-rail .is-menu-open .wp-block-navigation__responsive-container-close { display: none; }
.ktc-rail .is-menu-open .wp-block-navigation__responsive-dialog::before, .ktc-rail .is-menu-open .wp-block-navigation__responsive-container-content::after { content: none; }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container { display: flex; flex-direction: column; align-items: stretch; gap: 0; width: 100%; margin: 0; padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; }
.ktc-rail .is-menu-open .wp-block-navigation-item { display: block; width: 100%; margin: 0; border-top: 1px solid var(--ktc-line); }
.ktc-rail .is-menu-open .wp-block-navigation-item:first-child { border-top: 0; }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { display: flex; width: 100%; box-sizing: border-box; justify-content: space-between; align-items: center; padding: 13px 16px; border-radius: var(--ktc-radius-sm); font-size: 15px; font-weight: 700; line-height: 1.2; color: var(--ktc-ink); background: none; box-shadow: none; text-align: left; white-space: nowrap; text-decoration: none; }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover { background: var(--ktc-w45); }
.ktc-rail .wp-block-navigation__responsive-container.is-menu-open .current-menu-item > .wp-block-navigation-item__content { color: var(--ktc-acc-2); background: none; box-shadow: none; }
.ktc-rail .is-menu-open .current-menu-item > .wp-block-navigation-item__content::after { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ktc-acc-2); }
.ktc-rail .is-menu-open .wp-block-navigation-item__content:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; }
@media (max-width: 720px) {
  .ktc-rail { padding: 6px 10px 6px 6px !important; gap: 10px; }
  .ktc-rail .wp-block-navigation__responsive-container-open { padding: 8px 12px 8px 10px; }
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open { width: 100%; }
  .ktc-rail .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content { padding: 14px 16px; font-size: 15px; }
}

/* desktop: the seven links as pill tabs beside the Menu button (owner 2026-09-10: both, for one-click reach); phones keep Menu + "You are on" */
.ktc-rail__tabs { display: none; }
@media (min-width: 721px) {
  .ktc-rail__tabs { display: flex; align-items: center; gap: 2px; padding: 3px; border-radius: var(--ktc-radius-pill); background: var(--ktc-w45); min-width: 0; overflow: hidden; }
  .ktc-rail__tabs a { position: relative; display: block; padding: 8px 14px; border-radius: var(--ktc-radius-pill); font-size: 13px; font-weight: 700; color: var(--ktc-ink-2); text-decoration: none; white-space: nowrap; transition: color var(--ktc-dur), background var(--ktc-dur); }
  .ktc-rail__tabs a:hover { color: var(--ktc-ink); text-decoration: none; }
  .ktc-rail__tabs a.is-current { background: var(--ktc-card); color: var(--ktc-ink); box-shadow: var(--ktc-shadow-sm); }
  .ktc-rail__tabs a.is-current::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: 4px; height: 2px; border-radius: var(--ktc-radius-4); background: var(--ktc-acc); }
  .ktc-rail__tabs a:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; }
  .ktc-rail__now { display: none; }
}
@media (min-width: 721px) and (max-width: 960px) { .ktc-rail__tabs { overflow-x: auto; overflow-y: hidden; scrollbar-width: none; } .ktc-rail__tabs::-webkit-scrollbar { display: none; } .ktc-rail__tabs a { padding: 8px 10px; font-size: 12px; } }

/* ---------- phone compaction (owner 2026-09-10): shorter banner, tighter sections and cards, fewer stacked rows; desktop untouched ---------- */
@media (max-width: 640px) {
  /* banner: a third shorter, text closer to the rail */
  .ktc-banner, .ktc-banner--home { min-height: 300px; }
  .ktc-banner--about { min-height: 380px; }
  .ktc-banner__in { padding: 26px 20px 60px; }
  .ktc-banner--home .ktc-banner__in { padding-bottom: 60px; }
  .ktc-banner--about .ktc-banner__in { padding-top: 40px; }
  .ktc-banner__logo { height: 40px; margin-bottom: 8px; }
  .ktc-banner__title { font-size: 24px; }
  .ktc-banner--about .ktc-banner__title { font-size: 28px; }
  .ktc-banner--home .ktc-banner__title { white-space: normal; max-width: 14ch; text-wrap: balance; }
  .ktc-banner__lede { font-size: 14px; margin-top: 8px; }
  /* sections: less air above each block, heads on tighter leading */
  .ktc-section { padding-top: 22px; }
  main.wp-block-group { padding-top: 18px; }
  main.wp-block-group > .ktc-section:first-child, .ktc-wide .ktc-section:first-child { padding-top: 16px; }
  .ktc-eyebrow { margin-bottom: 2px; }
  .ktc-section > h2.wp-block-heading, .ktc-section__head h2.wp-block-heading, .wp-block-heading { margin-top: 0; margin-bottom: 6px; font-size: 20px; }
  .ktc-section__sub, .ktc-wide .ktc-intro, .ktc-intro { margin-top: 2px; font-size: 14px; line-height: 1.45; }
  .ktc-fleet__lead p, .ktc-partner__text p, .ktc-about__aside .ktc-about__sub, .ktc-ab-lead { font-size: 15px; }
  .ktc-ab-lead--sub { font-size: 14px; }
  .ktc-section__head { margin-bottom: 8px; }
  .ktc-foot { margin-top: 28px !important; }
  /* cards: tighter padding all round */
  .ktc-card { border-radius: var(--ktc-radius); }
  .ktc-vtile, .ktc-svc, .ktc-dept, .ktc-step, .ktc-loc__place, .ktc-dir__desk, .ktc-calling, .ktc-partner, .ktc-fleet__lead, .ktc-about__lead, .ktc-policy__body { padding: 14px 16px !important; }
  .ktc-wide .ktc-statement > .ktc-card { padding: 14px 16px; }
  /* home: three memos, one shorter map image, no hours tables under the addresses (the status strip above already shows them) */
  .ktc-notice__thumb { width: 44px; height: 44px; }
  .ktc-loc__place .ktc-loc__btns { margin-top: 6px; }
  .ktc-reach__tel { font-size: 17px; }
  /* schedule: shorter cells, calendar agenda rows tighter */
  .ktc-sched-head { padding: 10px 12px 8px; }
  .ktc-board__row { padding-top: 7px; padding-bottom: 7px; }
  /* customers: folds and steps tighter */
  .ktc-fold > summary { padding: 10px 12px; }
  .ktc-kv { font-size: 12px; gap: 3px 10px; }
  /* contact: desk tiles as compact rows, hours table tighter */
  .ktc-dir__desk .ktc-tel { font-size: 15px !important; margin-top: 2px !important; }
  .ktc-dir__desk .ktc-mail { font-size: 12px !important; }
  .ktc-wide:has(#message) .ktc-hours th, .ktc-wide:has(#message) .ktc-hours td { padding: 5px 10px; font-size: 12px; }
  .ktc-msg__grid { gap: 8px; }
  /* about: the five commitments as ledger rows instead of tall cards */
    .ktc-ab-rail__n { font-size: 20px; width: 2.2rem; flex: none; padding-top: 2px; }
  .ktc-ab-rail li h3 { font-size: 15px; margin-bottom: 4px; }
  .ktc-ab-rail li p { font-size: 13px; }
  .ktc-ab-rail li > h3, .ktc-ab-rail li > p { flex: 1 1 auto; }
  .ktc-ab-rail li { grid-template-columns: 2.2rem minmax(0, 1fr); gap: 2px 12px; padding: 12px 14px; }
  .ktc-ab-rail__n { grid-row: 1 / span 2; }
  .ktc-ab-plate { margin-top: 20px; }
  .ktc-ab-mosaic { gap: 8px; }
  .ktc-ab-mosaic img { aspect-ratio: 2 / 1; }
  .ktc-ab-glad { padding: 18px 16px !important; gap: 12px; }
  .ktc-ab-desk { padding: 14px 14px 14px 18px; }
  /* services: fleet photos two across, cards tighter */
  .ktc-wide .ktc-fleet--4, .ktc-fleet { grid-template-columns: 1fr 1fr; gap: 8px; }
  .ktc-fleet figcaption { font-size: 11px; }
  .ktc-fleet .wp-element-caption { flex-direction: column; align-items: flex-start; gap: 2px; padding: 8px 10px 10px; }
  .ktc-fleet .wp-element-caption small { order: -1; }
  .ktc-services { gap: 8px; }
  .ktc-svc h2, .ktc-svc h3 { font-size: 17px; }
  .ktc-svc p { font-size: 13px; }
}

/* ---------- phone folds: plain blocks on wide screens, collapsible on phones ---------- */
.ktc-fold--phone > summary { list-style: none; cursor: default; }
.ktc-fold--phone > summary::-webkit-details-marker { display: none; }
.ktc-fold--section__sum { display: none; }
@media (max-width: 640px) {
  .ktc-fold--phone > summary { cursor: pointer; }
  .ktc-fold--section__sum { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 10px; padding: 12px 14px; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); font-weight: 700; font-size: 14px; }
  .ktc-fold--section__sum em { font-style: normal; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-acc-2); padding: 2px 8px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-pill); }
  .ktc-fold--section[open] > .ktc-fold--section__sum { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }
  .ktc-fold--section__sum em { display: none; }
  .ktc-fold--section__sum::after { content: "+"; font-size: 17px; font-weight: 700; color: var(--ktc-ink-3); line-height: 1; }
  .ktc-fold--section[open] > .ktc-fold--section__sum::after { content: "\2013"; }
  .ktc-fold--section > .ktc-card { margin-top: 0; border-top-left-radius: 0; border-top-right-radius: 0; }
  /* more phone trims: the about mosaic packs two small tiles under the big one */
  .ktc-ab-mosaic { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .ktc-ab-mosaic figure:first-child { grid-column: 1 / -1; }
  .ktc-ab-mosaic figure:not(:first-child) img { aspect-ratio: 4 / 3; }
  .ktc-ab-mosaic figure:not(:first-child) figcaption { font-size: 11px; padding: 4px 8px; left: 8px; bottom: 8px; }
  .ktc-ab-vision { padding: 26px 20px; }
  .ktc-ab-vision__quote { font-size: 20px; }
  .ktc-ab-vision__text { font-size: 14px; margin-top: 14px; }
}

/* ---------- icon family: close and chevrons from one SVG set, tinted by currentColor (no text glyphs in buttons) ---------- */
:root { --ktc-ico-x: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 3.5l9 9M12.5 3.5l-9 9' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); --ktc-ico-prev: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M10 3L5 8l5 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); --ktc-ico-next: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M6 3l5 5-5 5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); --ktc-ico-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 5 5-5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.ktc-ico-x, .ktc-ico-prev, .ktc-ico-next { display: inline-flex; align-items: center; justify-content: center; }
.ktc-ico-x::before, .ktc-ico-prev::before, .ktc-ico-next::before { content: ""; display: block; width: 14px; height: 14px; background: currentColor; -webkit-mask: var(--ktc-ico) center / contain no-repeat; mask: var(--ktc-ico) center / contain no-repeat; }
.ktc-ico-x { --ktc-ico: var(--ktc-ico-x); }
.ktc-ico-prev { --ktc-ico: var(--ktc-ico-prev); }
.ktc-ico-next { --ktc-ico: var(--ktc-ico-next); }
.ktc-lbx__close::before { width: 18px; height: 18px; }
.ktc-lbx__nav::before { width: 20px; height: 20px; }
.ktc-calc__clear::before { width: 12px; height: 12px; }

/* ---------- line-up: departed calls fold under the live board (owner 2026-09-10: "Departed this week") ---------- */
.ktc-lu__departed { border-top: 1px solid var(--ktc-line); }
.ktc-lu__departed > summary { display: flex; align-items: center; gap: 10px; padding: 10px 16px; cursor: pointer; list-style: none; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-ink-3); background: var(--ktc-w45); }
.ktc-lu__departed > summary::-webkit-details-marker { display: none; }
.ktc-lu__departed > summary small { font-size: 12px; font-weight: 600; letter-spacing: 0; text-transform: none; }
.ktc-lu__departed > summary::after { content: "+"; margin-left: auto; font-size: 17px; line-height: 1; }
.ktc-lu__departed[open] > summary::after { content: "\2013"; }
.ktc-lu__departed[open] > summary { border-bottom: 1px solid var(--ktc-line); }
.ktc-lu__departed .ktc-board__row { color: var(--ktc-ink-2); }

/* ---------- voyage details dialog: a search result row is a button, the dialog reuses the notice modal ---------- */
.ktc-vs__row[role="button"] { cursor: pointer; }
.ktc-vs__row[role="button"]:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; }
/* compact voyage dialog (owner 2026-09-10): narrow, tighter type, the line's mark beside its plate */
.ktc-modal.is-voyage { width: min(460px, calc(100vw - 32px)); }
.ktc-modal.is-voyage .ktc-modal__bar { padding: 8px 10px 8px 16px; }
.ktc-modal.is-voyage .ktc-modal__close { width: 44px; height: 44px; } /* 0.4.4: 44 px target (was 30) */
.ktc-modal.is-voyage .ktc-modal__body { padding: 14px 16px 16px; }
.ktc-voy__line { margin: 0 0 8px; display: flex; align-items: center; gap: 10px; }
.ktc-voy__logo { height: 22px; width: auto; max-width: 110px; object-fit: contain; }
.ktc-voy__logo + .ktc-plate { display: none; }
.ktc-voy .ktc-plate { font-size: 12px; padding: 3px 9px; }
.ktc-voy .ktc-modal__title { margin-bottom: 6px; font-size: 20px; line-height: 1.15; }
.ktc-modal__title:focus { outline: none; } /* focus lands on the title when a voyage dialog opens, not on the close button */
.ktc-voy .ktc-modal__title small { display: block; font-size: 13px; font-weight: 600; color: var(--ktc-ink-3); margin-top: 2px; }
.ktc-voy__status { margin: 0 0 12px; }
.ktc-voy__dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px 16px; margin: 0; }
@media (max-width: 480px) { .ktc-voy__dl { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ktc-voy__dl dt { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-voy__dl dd { margin: 1px 0 0; font-size: 14px; font-weight: 600; }
.ktc-voy__dl dd.is-muted { color: var(--ktc-ink-3); font-weight: 450; }
.ktc-voy__note { margin: 12px 0 0; font-size: 12px; color: var(--ktc-ink-2); }

/* ---------- about index: each line links to its Services tile ---------- */
.ktc-ab-index li a { color: inherit; text-decoration: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ktc-ab-index li a::after { content: ""; flex: none; width: 12px; height: 12px; background: var(--ktc-ink-3); -webkit-mask: var(--ktc-ico-next) center / contain no-repeat; mask: var(--ktc-ico-next) center / contain no-repeat; } /* a rest-state affordance: the family chevron, grey */
.ktc-ab-index li a:hover::after, .ktc-ab-index li a:focus-visible::after { background: var(--ktc-acc-2); }
.ktc-ab-index li a:hover, .ktc-ab-index li a:focus-visible { color: var(--ktc-acc-2); text-decoration: underline; text-underline-offset: 3px; }
.ktc-svc[id] { scroll-margin-top: 90px; }

/* ---------- section "more" links: in the head on desktop, a foot row under the content on phones (one treatment with the notices card) ---------- */
.ktc-section__more--foot { display: none; }
@media (max-width: 640px) {
  .ktc-section__head--flex > .ktc-section__more { display: none; }
  .ktc-section__more--foot { display: block; text-align: right; margin-top: 10px; font-size: 13px; font-weight: 700; }
  .ktc-card > .ktc-section__more--foot { margin-top: 0; padding: 12px 16px; border-top: 1px solid var(--ktc-line); }
}

/* ---------- line-up: a column empty for every row collapses (the caption says ETD / berth come on arrival) ---------- */
.ktc-board--no-etd :is(.ktc-board__hd, .ktc-board__row) > :nth-child(4), .ktc-board--no-berth :is(.ktc-board__hd, .ktc-board__row) > :nth-child(5) { display: none; }
.ktc-board--no-etd :is(.ktc-board__hd, .ktc-board__row) { grid-template-columns: minmax(8.5rem, .9fr) minmax(11rem, 1.4fr) minmax(8.5rem, 1fr) 3rem minmax(11rem, 1fr); }
.ktc-board--no-berth :is(.ktc-board__hd, .ktc-board__row) { grid-template-columns: minmax(8.5rem, .9fr) minmax(11rem, 1.4fr) minmax(8.5rem, 1fr) minmax(8.5rem, 1fr) minmax(11rem, 1fr); }
.ktc-board--no-etd.ktc-board--no-berth :is(.ktc-board__hd, .ktc-board__row) { grid-template-columns: minmax(8.5rem, .9fr) minmax(11rem, 1.4fr) minmax(8.5rem, 1fr) minmax(11rem, 1fr); }
@media (max-width: 860px) { .ktc-board--no-etd .ktc-board__row, .ktc-board--no-berth .ktc-board__row, .ktc-board--no-etd.ktc-board--no-berth .ktc-board__row { grid-template-columns: minmax(0, 1fr) auto; } } /* the stacked row (from 860px) keeps its two columns */

/* ---------- timeline: the vessel name is a button too (owner 2026-09-11) ---------- */
.ktc-tl__label[role="button"] { cursor: pointer; }
.ktc-tl__label[role="button"]:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; }

/* the schedule says when it is showing a stale copy or nothing (feed outage) */
.ktc-sched-fresh.is-stale, .ktc-berths__also.is-stale { color: var(--ktc-tone-danger-ink); font-weight: 600; }

/* ---------- the brand face's stand-in: Arial sized and spaced to Schibsted Grotesk's metrics, so a cold visit never shifts (measured 2026-09-11) ---------- */
@font-face { font-family: "Schibsted Fallback"; src: local("Arial"), local("Helvetica"); size-adjust: 104%; ascent-override: 94%; descent-override: 25%; line-gap-override: 0%; }
body, button, input, select, textarea { font-family: "Schibsted Grotesk", "Schibsted Fallback", system-ui, -apple-system, "Segoe UI", sans-serif; }

/* ---------- motion with intent: dialogs rise and settle, swapped pages crossfade ---------- */
@keyframes ktc-dialog-in { from { opacity: 0; transform: translateY(8px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes ktc-fade-in { from { opacity: 0; } to { opacity: 1; } }
.ktc-modal[open] { animation: ktc-dialog-in .16s var(--ktc-ease); }
.ktc-modal[open]::backdrop { animation: ktc-fade-in .16s ease; }
main.ktc-swap-in { animation: ktc-fade-in .15s ease; }
@media (prefers-reduced-motion: reduce) { .ktc-modal[open], .ktc-modal[open]::backdrop, main.ktc-swap-in { animation: none; } }

/* ---------- interactive surfaces answer the pointer (one treatment: hairline darkens, one shadow step, no colour change) ---------- */
@media (hover: hover) {
  .ktc-notice:hover, .ktc-notice--row:hover, .ktc-sched-row:hover, .ktc-lu__row:hover, .ktc-board__row:hover, .ktc-cal__ev:hover, .ktc-vs__row[role="button"]:hover, .ktc-tl__label[role="button"]:hover { background: var(--ktc-w45); }
  .ktc-cal__ev:hover, .ktc-tl__bar:hover { filter: brightness(.97); }
}

/* ---------- quick actions: three cards that hand off to the portal with the action pre-selected ---------- */
.ktc-quick { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 14px; }
.ktc-quick__card { display: flex; flex-direction: column; gap: 4px; padding: 16px 18px; color: var(--ktc-ink); text-decoration: none; transition: border-color var(--ktc-dur), box-shadow var(--ktc-dur), transform var(--ktc-dur); }
.ktc-quick__title { font-size: 15px; font-weight: 700; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ktc-quick__title::after { content: ""; flex: none; width: 12px; height: 12px; background: var(--ktc-ink-3); -webkit-mask: var(--ktc-ico-next) center / contain no-repeat; mask: var(--ktc-ico-next) center / contain no-repeat; }
.ktc-quick__text { font-size: 13px; color: var(--ktc-ink-2); line-height: 1.45; }
.ktc-quick__card:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 2px; }
@media (hover: hover) { .ktc-quick__card:hover { border-color: var(--ktc-ink-3); box-shadow: var(--ktc-shadow-md); transform: translateY(-1px); text-decoration: none; } .ktc-quick__card:hover .ktc-quick__title::after { background: var(--ktc-acc-2); } }
@media (max-width: 640px) { .ktc-quick { grid-template-columns: 1fr; gap: 8px; } .ktc-quick__card { padding: 12px 14px; } }


/* Home: the line logos sit with the page's left edge (centred on the vessel page) */
.home .ktc-section--partners .ktc-partners__eyebrow { text-align: left; }
.home .ktc-section--partners .ktc-partners { justify-content: flex-start; }

/* ---------- 0.4.4 (2026-10-13): feel + polish from the design-engine audit (look 84, feel 80) ----------
   Every rule here is an enhancement in place: no layout, copy or content changes. */

/* a tap answers at once: a pressed state on everything tappable, and the page dims while the next one loads */
a, button, summary, [role="button"] { -webkit-tap-highlight-color: transparent; }
:is(.wp-element-button, .wp-block-button__link, .wp-block-file__button, .ktc-quick__card, .ktc-board__row, .ktc-vs__row, .ktc-vs__opt, .ktc-berth[role="button"], .ktc-sched-tab, .ktc-lu__btn, .ktc-tl__bar, .ktc-tl__label[role="button"], .ktc-sched-cal-ev, .ktc-modal__close, .ktc-lbx__close, .ktc-lbx__nav, .ktc-notice, .ktc-btn-ghost-link, .ktc-rail .wp-block-navigation-item__content, .ktc-rail .wp-block-navigation__responsive-container-open, .ktc-lu__departed > summary, .ktc-fold > summary):active { filter: brightness(.93); transition-duration: 0s; }
main :is(p, li, dd, td) a:not([class]):active, :is(.ktc-tel, .ktc-mail, .ktc-reach__tel, .ktc-reach__mail, .ktc-calling__tel, .ktc-calling__mail, .ktc-ab-desk__tel, .ktc-ab-desk__mail):active { opacity: .65; transition-duration: 0s; }
html.ktc-loading main { opacity: .72; transition: opacity .12s ease-out; }

/* links inside sentences are underlined, not told apart by colour alone (axe link-in-text-block) */
main :is(p, li, dd) a:not([class]), .ktc-modal :is(p, li) a:not([class]) { text-decoration: underline; text-decoration-color: color-mix(in srgb, var(--ktc-acc-2) 40%, transparent); text-underline-offset: 2px; }

/* one desk-contact treatment everywhere (it was built six ways at six sizes); the Contact page keeps its compact rows */
:is(.ktc-tel, .ktc-reach__tel, .ktc-calling__tel)[href] { font-size: 17px; font-weight: 700; letter-spacing: -.01em; color: var(--ktc-ink); }
:is(.ktc-mail, .ktc-reach__mail, .ktc-calling__mail)[href] { font-size: 14px; }

/* phones: 44 px targets (the contact links were 20-26 px tall and stacked; Menu, Search and the filters 36 px) */
@media (max-width: 720px) {
  :is(.ktc-tel, .ktc-mail, .ktc-reach__tel, .ktc-reach__mail, .ktc-calling__tel, .ktc-calling__mail, .ktc-ab-desk__tel, .ktc-ab-desk__mail)[href] { display: flex; align-items: center; min-height: 44px; margin-top: 0; margin-bottom: 0; }
  .ktc-btn-ghost-link { min-height: 44px; box-sizing: border-box; }
  .ktc-rail .wp-block-navigation__responsive-container-open { min-height: 44px; }
  .ktc-sched-bar .ktc-vs__input, .ktc-sched-bar .ktc-vs__btn, .ktc-sched-bar .ktc-lu__sel select, .ktc-sched-bar .ktc-lu__btn, .ktc-sched-tab { min-height: 44px; }
  .ktc-wide:has(#message) .ktc-field input, .ktc-wide:has(#message) .ktc-field select { min-height: 44px; }
  .ktc-foot__links a { display: inline-flex; align-items: center; min-height: 44px; }
}

/* a notice's table and file block follow the hairline system, not WordPress's black borders */
.wp-block-table table { border-collapse: collapse; width: 100%; }
.wp-block-table :is(th, td) { border: 1px solid var(--ktc-line); padding: 8px 10px; text-align: left; vertical-align: top; }
.wp-block-table thead { border-bottom: 0; }
.wp-block-table th { background: var(--ktc-w45); font-weight: 700; }
.ktc-page .wp-block-post-content .wp-block-file { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.ktc-page .wp-block-post-content .wp-block-file__button { margin-left: 0; }

/* line logos readable in the line-up rows (Evergreen was about 55 x 7 px) */
.ktc-board__line .ktc-board__logo, .ktc-board__line .ktc-board__dot { width: 72px; height: 20px; }

/* the line-up's ETD column collapses when no live vessel has one; departed rows keep their time with a label */
.ktc-board--no-etd-live > :is(.ktc-board__hd, .ktc-board__row) > :nth-child(4) { display: none; }
.ktc-board--no-etd-live > :is(.ktc-board__hd, .ktc-board__row) { grid-template-columns: minmax(8.5rem, .9fr) minmax(11rem, 1.4fr) minmax(8.5rem, 1fr) 3rem minmax(11rem, 1fr); }
.ktc-board--no-etd-live.ktc-board--no-berth > :is(.ktc-board__hd, .ktc-board__row) { grid-template-columns: minmax(8.5rem, .9fr) minmax(11rem, 1.4fr) minmax(8.5rem, 1fr) minmax(11rem, 1fr); }
@media (min-width: 861px) { .ktc-board--no-etd-live .ktc-lu__departed .ktc-board__when:nth-child(4):not(.is-tba)::before { content: "Departed "; font-size: 11px; font-weight: 700; letter-spacing: .06em; color: var(--ktc-ink-3); } }
@media (max-width: 860px) { .ktc-board--no-etd-live > .ktc-board__row, .ktc-board--no-etd-live.ktc-board--no-berth > .ktc-board__row { grid-template-columns: minmax(0, 1fr) auto; } } /* the combined selector out-ranks the desktop one above (jarvis 2026-10-13) */

/* the search says it is working (set by ktc.js after 300 ms) */
.ktc-vs__count.is-busy { color: var(--ktc-ink-3); }

/* a programmatically focused title (after a page swap or a sent message) needs no ring */
.ktc-banner__title:focus, main h1:focus, .ktc-msg__done:focus { outline: none; }

/* schedule views fade in when switched (150 ms, the swap's crossfade); dialogs fade out in 120 ms */
.ktc-sched-view.ktc-view-in { animation: ktc-fade-in .15s ease-out; }
@keyframes ktc-fade-out { from { opacity: 1; } to { opacity: 0; } }
.ktc-modal.is-closing, .ktc-modal.is-closing::backdrop { animation: ktc-fade-out .12s ease-out forwards; }
@media (prefers-reduced-motion: reduce) { .ktc-sched-view.ktc-view-in, .ktc-modal.is-closing, .ktc-modal.is-closing::backdrop { animation: none; } }

/* ---------- 0.5.0: X-ray check (Customers, patterns/xray-check.php; owner 2026-10-22) ---------- */
.ktc-xray__box { padding: 20px 24px; }
.ktc-xray__form { display: flex; flex-direction: column; gap: 6px; }
.ktc-xray__form .ktc-field > span { font-size: 13px; font-weight: 600; color: var(--ktc-ink-2); }
.ktc-xray__row { display: flex; flex-wrap: wrap; gap: 8px; }
.ktc-xray__row input { flex: 1 1 220px; min-width: 0; min-height: 44px; box-sizing: border-box; padding: 0 14px; font: inherit; font-size: 17px; letter-spacing: .04em; text-transform: uppercase; color: var(--ktc-ink); background: var(--ktc-card); border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-8); }
.ktc-xray__row input::placeholder { color: var(--ktc-ink-3); letter-spacing: .04em; }
.ktc-xray__row input:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; border-color: var(--ktc-acc); }
.ktc-xray__row .wp-element-button { min-height: 44px; padding: 0 24px; cursor: pointer; }
.ktc-xray__hint { margin: 0; font-size: 12px; color: var(--ktc-ink-3); }
.ktc-xray__ts:empty { display: none; }
.ktc-xray__nw { white-space: nowrap; }
/* 0.5.2: the result opens in the shared dialog (.ktc-modal.is-xray), portal look: chip with a dot, summary box, green van tiles */
.ktc-modal.is-xray { width: min(520px, calc(100vw - 32px)); }
.ktc-modal.is-xray .ktc-modal__bar { padding: 8px 10px 8px 18px; }
.ktc-modal.is-xray .ktc-modal__body { padding: 16px 18px 18px; }
.ktc-xm { display: flex; flex-direction: column; gap: 14px; }
.ktc-xm__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; }
.ktc-xm .ktc-modal__title { margin: 0; font-size: 20px; letter-spacing: .03em; }
.ktc-xm__chip { gap: 6px; padding: 3px 10px 3px 8px; font-size: 12px; font-weight: 650; }
.ktc-xm__chip::before { content: ""; width: 6px; height: 6px; border-radius: 999px; background: currentColor; }
.ktc-xm__sum { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; margin: 0; padding: 12px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-8); }
.ktc-xm__sum div { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ktc-xm__sum .ktc-xm__wide { grid-column: 1 / -1; }
.ktc-xm__sum dt { font-size: 11px; font-weight: 650; letter-spacing: .04em; text-transform: uppercase; color: var(--ktc-ink-2); }
.ktc-xm__sum dd { margin: 0; font-size: 15px; font-weight: 650; color: var(--ktc-ink); overflow-wrap: anywhere; }
.ktc-xm__sum .ktc-xm__n dd { font-size: 22px; line-height: 1.1; font-weight: 700; }
.ktc-xm__label { margin: 0 0 -6px; font-size: 13px; font-weight: 700; color: var(--ktc-ink); }
.ktc-xm__vans { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.ktc-xm__vans li { min-height: 44px; display: flex; align-items: center; justify-content: center; padding: 6px 8px; box-sizing: border-box; border-radius: var(--ktc-radius-8); border: 1px solid color-mix(in srgb, var(--ktc-tone-ok-ink) 30%, transparent); background: var(--ktc-tone-ok-bg); color: var(--ktc-tone-ok-ink); font-size: 14px; font-weight: 700; letter-spacing: .035em; overflow-wrap: anywhere; text-align: center; }
.ktc-xm__help, .ktc-xm__miss { margin: 0; font-size: 13px; line-height: 1.5; color: var(--ktc-ink-2); }
.ktc-xm__miss { font-size: 15px; margin-top: -8px; }
.ktc-xm__miss-title { margin: 0; font-size: 17px; font-weight: 600; color: var(--ktc-ink); }
.ktc-xm__help a, .ktc-xm__miss a { font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.ktc-xm__again { align-self: flex-start; min-height: 44px; padding: 0 20px; font: inherit; font-size: 15px; font-weight: 600; border-radius: var(--ktc-radius-pill); cursor: pointer; }
@media (max-width: 480px) { .ktc-xm__vans { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 720px) {
  .ktc-xray__box { padding: 16px; }
  .ktc-xray__row .wp-element-button { flex: 1 1 100%; }
}
/* ---------- 0.5.3 tabs: About KTC (Company / Services / Fleet) and Contact (Call a desk / Message / Visit us), owner 2026-10-23.
   The bar exists only with the script; without it every panel shows in order. ---------- */
.ktc-tabs__bar { display: flex; gap: 4px; margin-top: 28px; padding: 4px; background: var(--ktc-surface); border-radius: var(--ktc-radius-pill); }
.ktc-tabs__tab { flex: 1 1 0; min-width: 0; min-height: 44px; padding: 0 10px; font: inherit; font-size: 14px; font-weight: 600; color: var(--ktc-ink-2); background: transparent; border: 0; border-radius: var(--ktc-radius-pill); cursor: pointer; transition: background var(--ktc-dur) var(--ktc-ease), color var(--ktc-dur) var(--ktc-ease); }
.ktc-tabs__tab:hover { color: var(--ktc-ink); }
.ktc-tabs__tab[aria-selected="true"] { background: var(--ktc-card); color: var(--ktc-ink); box-shadow: var(--ktc-shadow-sm); }
.ktc-tabs.is-tabbed > [role="tabpanel"][hidden] { display: none !important; }
.ktc-tabs.is-tabbed > [role="tabpanel"] > .ktc-section:first-child, .ktc-tabs.is-tabbed > [role="tabpanel"] > :first-child.ktc-section { padding-top: 24px; }
.ktc-tabs [id] { scroll-margin-top: 90px; }
.ktc-ab-index a { display: inline-flex; align-items: center; min-height: 44px; margin: -12px 0; } /* a 44px tap target inside the 13px-padded row */
/* Contact: the two first moves, then a desk card per desk carrying its own hours */
.ktc-quick-contact { padding-top: 28px; }
.ktc-quick-contact .ktc-intro { margin: 0 0 14px; }
.ktc-quick-contact__row { display: flex; flex-wrap: wrap; gap: 8px; }
.ktc-quick-contact__row a { min-height: 48px; padding: 0 22px; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 600; border-radius: var(--ktc-radius-pill); }
.ktc-desks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; align-items: start; }
.ktc-desk { padding: 16px 18px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.ktc-desk > .ktc-eyebrow { margin: 0; }
.ktc-desks > .ktc-desk > h3 { margin: -6px 0 0; font-size: 17px; }
.ktc-desk__lines { display: flex; flex-direction: column; }
.ktc-desk__tel { font-size: 20px; font-weight: 700; min-height: 40px; display: flex; align-items: center; }
.ktc-desk__mail { font-size: 14px; min-height: 36px; display: flex; align-items: center; overflow-wrap: anywhere; }
.ktc-desk__hours { margin: 0; border-top: 1px solid var(--ktc-line); }
.ktc-desk__hours > div { display: grid; grid-template-columns: auto auto; justify-content: space-between; gap: 1px 10px; padding: 8px 0; border-bottom: 1px solid var(--ktc-line); font-size: 14px; }
.ktc-desk__hours > div:last-child { border-bottom: 0; }
.ktc-desk__hours dt { font-weight: 600; }
.ktc-desk__hours dd { margin: 0; text-align: right; white-space: nowrap; }
.ktc-desk__hours .ktc-desk__note { grid-column: 1 / -1; text-align: left; white-space: normal; font-size: 12px; color: var(--ktc-ink-3); }
@media (max-width: 860px) { .ktc-desks { grid-template-columns: 1fr; } }
@media (max-width: 560px) {
  .ktc-quick-contact__row a { flex: 1 1 0; padding: 0 14px; }
  .ktc-quick-contact__row a:first-child { flex-basis: 100%; }
  .ktc-tabs__tab { font-size: 13px; padding: 0 6px; }
}

/* ---------- 0.5.5: home tidy from the design-critic audit (81/100, 2026-10-25) ---------- */
/* tap targets: the hero address and the Directions/Call pair reach 44 px without changing the look */
.ktc-banner__loc a { display: inline-block; padding-block: 13px; margin-block: -13px; }
.ktc-loc__btns a { min-height: 44px; box-sizing: border-box; display: inline-flex; align-items: center; }

/* ---------- 0.5.6: Home as one calm list (owner picked draft A, 2026-10-25) ----------
   Every Home block is a card of rows: icon or thumbnail, a bold name, a muted line, then a chevron, a state or one orange button.
   Hairlines between rows, one accent (the X-ray Check button), two columns on desktop where a list is short. */
.ktc-nw { white-space: nowrap; } /* never "X-" / "ray" */
.home .ktc-section { padding-top: 28px; } /* + the 20 px block gap: 48 px between sections */
.home .ktc-home-top, .home main.wp-block-group > .ktc-home-top:first-child { padding-top: 10px; }
.home .ktc-section__head { margin-bottom: 10px; }
.home .ktc-section__head .wp-block-heading { font-size: 21px; letter-spacing: -.01em; margin: 0; }
.ktc-home-top__grid { display: grid; gap: 28px; }
@media (min-width: 900px) { /* 0.6.3 (owner 2026-10-25): How can we help? and Open right now? the same size, two equal columns, equal card heights */
  .ktc-home-top__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: stretch; }
  .ktc-home-top__grid > section { display: flex; flex-direction: column; }
  .ktc-home-top__grid > section > .ktc-card { flex: 1; display: flex; flex-direction: column; }
  .ktc-home-top__grid > section > .ktc-card > * { flex: 1; }
}

.ktc-rows { display: flex; flex-direction: column; }
.ktc-row { display: flex; align-items: center; gap: 14px; min-height: 60px; padding: 12px 16px; border: 0; border-top: 1px solid var(--ktc-line); background: none; color: var(--ktc-ink); font: inherit; text-align: left; text-decoration: none; box-sizing: border-box; width: 100%; }
.ktc-rows > .ktc-row:first-child { border-top: 0; }
button.ktc-row { cursor: pointer; }
:is(a, button).ktc-row:focus-visible, .ktc-row[role="button"]:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; border-radius: 0; }
@media (hover: hover) { :is(a, button).ktc-row:hover, .ktc-row[role="button"]:hover { background: color-mix(in srgb, var(--ktc-ink) 3%, var(--ktc-card)); text-decoration: none; } }
.ktc-row__i { flex: none; display: grid; color: var(--ktc-ink-2); }
.ktc-row__b { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.ktc-row__t { margin: 0; font-size: 16px; font-weight: 700; line-height: 1.25; letter-spacing: 0; }
.ktc-row__s { margin-top: 2px; font-size: 13px; line-height: 1.4; color: var(--ktc-ink-2); }
.ktc-row__s:empty { display: none; }
.ktc-row__k { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600; color: var(--ktc-ink-3); }
.ktc-row__t .ktc-row__k { display: inline; margin-left: 4px; font-weight: 500; }
.ktc-row__chev { flex: none; width: 14px; height: 14px; background: var(--ktc-ink-3); -webkit-mask: var(--ktc-ico-next) center / contain no-repeat; mask: var(--ktc-ico-next) center / contain no-repeat; }
.ktc-row__go { flex: none; display: inline-flex; align-items: center; height: 36px; padding: 0 16px; border-radius: var(--ktc-radius-8); background: var(--ktc-acc-fill); color: #fff; font-size: 14px; font-weight: 600; }
@media (hover: hover) { .ktc-row:hover .ktc-row__go { background: var(--ktc-acc-fill-hover); } }
/* a row with two doors (Helpdesk: the row messages, the button calls) */
.ktc-row--split { padding: 0 16px 0 0; gap: 0; }
.ktc-row__main { flex: 1 1 auto; min-width: 0; align-self: stretch; display: flex; align-items: center; gap: 14px; padding: 12px 12px 12px 16px; color: var(--ktc-ink); text-decoration: none; }
.ktc-row__main:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: -2px; border-radius: 0; }
.ktc-row__call { flex: none; position: relative; display: inline-flex; align-items: center; height: 36px; padding: 0 16px; border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-8); color: var(--ktc-ink); font-size: 14px; font-weight: 600; text-decoration: none; }
.ktc-row__call::after, .ktc-row--acts .ktc-row__go::after { content: ""; position: absolute; inset: -4px; } /* 44 px to tap, 36 px to look at */
/* a row with two buttons under its text (Helpdesk: File a ticket + Call) */
.ktc-row--acts { flex-wrap: wrap; row-gap: 10px; }
.ktc-row--acts > .ktc-row__b { flex: 1 1 0; } /* the text stays beside its icon; only the buttons take the next line */
.ktc-row__acts { flex: 1 1 100%; display: flex; flex-wrap: wrap; gap: 10px; padding-left: 38px; }
.ktc-row--acts .ktc-row__go { position: relative; text-decoration: none; }
@media (hover: hover) { .ktc-row--acts .ktc-row__go:hover { background: var(--ktc-acc-fill-hover); text-decoration: none; } }
@media (min-width: 900px) { .ktc-row--acts { flex-wrap: nowrap; } .ktc-row__acts { flex: none; padding-left: 0; } }
@media (hover: hover) { .ktc-row__main:hover { background: color-mix(in srgb, var(--ktc-ink) 3%, var(--ktc-card)); text-decoration: none; } .ktc-row__call:hover { border-color: var(--ktc-ink); text-decoration: none; } }
@media (min-width: 900px) {
  .ktc-rows--2 { display: grid; grid-template-columns: 1fr 1fr; }
  .ktc-rows--2 > .ktc-row:nth-child(2) { border-top: 0; }
  .ktc-rows--2 > .ktc-row:nth-child(odd) { border-right: 1px solid var(--ktc-line); }
}

/* Operating hours (Home) — the live state, the next opening, the week as a day / time list */
.ktc-hrs__now { display: inline-flex; align-items: center; gap: 8px; padding-top: 1px; font-size: 14px; font-weight: 700; white-space: nowrap; }
.ktc-hrs__now .ktc-status__v { font-size: inherit; font-weight: inherit; }
.ktc-hrs.is-open .ktc-hrs__now { color: var(--ktc-tone-ok-ink); }
.ktc-hrs.is-closed .ktc-hrs__now { color: var(--ktc-tone-danger-ink); }
.ktc-hrs__wk { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: 12px; margin-top: 2px; font-size: 13px; line-height: 1.5; color: var(--ktc-ink-2); } /* day | times */
.ktc-hrs__l { display: contents; }
.ktc-hrs__nw { white-space: nowrap; } /* a time range or a cut-off never splits */
.ktc-hrs__l b { font-weight: 600; color: var(--ktc-ink); }

/* Announcements: the memo's first page as a thumbnail */
.ktc-row__thumb { flex: none; width: 44px; height: 58px; border: 1px solid var(--ktc-line); border-radius: 6px; overflow: hidden; background: var(--ktc-surface); }
.ktc-row__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: top; }
.ktc-row.ktc-notice .ktc-row__t { font-size: 15px; font-weight: 600; margin-top: 2px; }

/* At berth: the line's colour as a hairline down the left */
.ktc-berth { box-shadow: inset 4px 0 0 var(--ktc-line-c); padding-left: 20px; }
.ktc-berth.is-open { box-shadow: inset 4px 0 0 var(--ktc-line); }
.ktc-berth.is-open .ktc-row__t { font-size: 15px; font-weight: 600; color: var(--ktc-ink-3); }
.ktc-berth[role="button"] { cursor: pointer; }
.ktc-berth__now { flex: none; display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.ktc-berth__st { font-size: 14px; font-weight: 700; }
.ktc-berths__also { margin: 8px 0 0; font-size: 12px; color: var(--ktc-ink-3); } /* "Also alongside…" and the feed-down line */

/* Services and Contact: the name is an h3, sized as a row */
.ktc-row h3.ktc-row__t { font-size: 15px; }
.ktc-lane { align-items: flex-start; }
.ktc-lane .ktc-row__k { margin-top: 8px; }

/* Getting here: photo, place, address, then Directions and Call as links */
.ktc-place { align-items: flex-start; }
.ktc-place__ph { flex: none; width: 88px; height: 66px; border-radius: var(--ktc-radius-8); overflow: hidden; }
.ktc-place__ph img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ktc-place__acts { display: flex; flex-wrap: wrap; gap: 0 18px; margin-top: 2px; }
.ktc-place__acts a { display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; font-weight: 700; }
@media (min-width: 900px) { .ktc-place__ph { width: 120px; height: 90px; } }

/* the X-ray popup: rises from the bottom on phones, centred on desktop */
.ktc-xd { box-sizing: border-box; width: 100%; max-width: 100%; max-height: 92vh; margin: auto auto 0; padding: 0; border: 0; border-radius: var(--ktc-radius) var(--ktc-radius) 0 0; background: var(--ktc-card); color: var(--ktc-ink); box-shadow: var(--ktc-shadow-lg); }
.ktc-xd::backdrop { background: rgba(12,15,22,.55); }
.ktc-xd[open] { animation: ktc-xd-up .22s var(--ktc-ease); }
@keyframes ktc-xd-up { from { transform: translateY(24px); opacity: 0; } }
.ktc-xd__in { display: flex; flex-direction: column; gap: 8px; padding: 16px 16px calc(20px + env(safe-area-inset-bottom)); }
.ktc-xd__bar { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 6px; }
.ktc-xd__t { margin: 2px 0 0; font-size: 19px; font-weight: 700; line-height: 1.25; }
.ktc-xd__t:focus { outline: none; } /* focus lands on the title when its first field is folded away, as on the voyage dialog (1.0.0) */
.ktc-xd .ktc-field > span { font-size: 13px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--ktc-ink-2); }
.ktc-xd input { box-sizing: border-box; width: 100%; min-height: 48px; padding: 0 14px; border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-8); background: var(--ktc-card); color: var(--ktc-ink); font: inherit; font-size: 17px; letter-spacing: .04em; }
.ktc-xd input::placeholder { color: var(--ktc-ink-3); }
.ktc-xd input:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; }
.ktc-xd .wp-element-button { width: 100%; min-height: 48px; margin-top: 4px; cursor: pointer; }
.ktc-xd .ktc-xray__status:empty { display: none; }
.ktc-xd__fine { margin: 0; font-size: 12px; color: var(--ktc-ink-3); }
.ktc-xd { overflow-y: auto; overscroll-behavior: contain; }
.ktc-xd__lede { margin: 0 0 6px; font-size: 14px; line-height: 1.5; color: var(--ktc-ink-2); }
.ktc-xd .ktc-msg__grid { grid-template-columns: 1fr; gap: 10px; }
.ktc-xd .ktc-field input, .ktc-xd .ktc-field select { min-height: 44px; }
.ktc-xd .ktc-field textarea { min-height: 110px; font-size: 16px; }
.ktc-xd .ktc-msg__foot .wp-element-button { width: 100%; min-height: 48px; }
.ktc-xd .ktc-msg__done { padding: 8px 0 4px; }
@media (min-width: 600px) {
  :root dialog.ktc-xd { width: min(440px, calc(100vw - 32px)); margin: auto; border-radius: var(--ktc-radius); }
  :root dialog.ktc-xd--wide { width: min(600px, calc(100vw - 32px)); }
  .ktc-xd .ktc-msg__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; } /* :root dialog.: outranks the block layout's ":root :where(.is-layout-constrained) > :last-child { margin-block-end: 0 }" */
  .ktc-xd__in { padding: 20px 24px 24px; }
}
@media (prefers-reduced-motion: reduce) { .ktc-xd[open] { animation: none; } }
@media (max-width: 640px) {
  .home .ktc-section { padding-top: 20px; } /* 40 px between sections */
  .home main.wp-block-group > .ktc-home-top:first-child { padding-top: 4px; }
  .home .ktc-section__more--foot { margin-top: 6px; }
  .ktc-place__acts { gap: 0 16px; }
  .ktc-place__ph { width: 72px; height: 54px; } /* leaves room for Directions and Call on one line */
  .home .ktc-section__head .wp-block-heading { font-size: 19px; }
  .ktc-row { padding: 12px 14px; gap: 12px; }
  .ktc-row--split { padding: 0 14px 0 0; gap: 0; }
  .ktc-row__main { padding: 12px 10px 12px 14px; gap: 12px; }
  .ktc-berth { padding-left: 18px; }
  .ktc-rows > .ktc-notice:nth-child(n+5) { display: none; } /* phones: the latest and three more; the rest is one tap away */
}

/* ---------- 0.6.0 Customer desk (owner 2026-10-25): X-ray | Helpdesk + Sheet, then the payment box (A), then the steps ---------- */
/* 0.6.1: one 2 x 2 grid, Helpdesk | X-ray check, New customers | Online portal; the cards in a row share a height */
.ktc-cd-top__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
.ktc-cd-top .ktc-section { margin: 0; padding: 20px 24px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); background: var(--ktc-card); box-shadow: var(--ktc-shadow-sm); }
:root .ktc-cd-top .ktc-section.has-global-padding { padding: 20px 24px; } /* beats WordPress's root-padding on the Helpdesk group */
.ktc-cd-top .ktc-section > * { max-width: none; margin-left: 0; margin-right: 0; }
.ktc-cd-top .ktc-xray > .ktc-card { border: 0; box-shadow: none; padding: 0; background: none; overflow: visible; } /* overflow: with no padding, the card's clip cut the "E" of "Entry number" and the input's focus ring (owner 2026-10-25) */
.ktc-cd-top .ktc-xray > .ktc-intro { margin-bottom: 14px; }
.ktc-cd-top .wp-block-heading { font-size: 20px; margin: 2px 0 6px; }
.ktc-cd-top .ktc-help .ktc-section__head { margin-bottom: 12px; }
.ktc-sheet__s { margin: 0; font-size: 14px; color: var(--ktc-ink-2); }
.ktc-sheet__fold { margin: 8px 0 12px; font-size: 14px; }
.ktc-sheet__fold summary { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; cursor: pointer; font-weight: 600; color: var(--ktc-ink); list-style: none; }
.ktc-sheet__fold summary::-webkit-details-marker { display: none; }
.ktc-sheet__fold summary::after { content: "+"; font-size: 17px; font-weight: 400; color: var(--ktc-ink-3); }
.ktc-sheet__fold[open] summary::after { content: "–"; }
.ktc-sheet__fold ul { margin: 0 0 4px; padding-left: 18px; color: var(--ktc-ink-2); }
.ktc-sheet__dl, .ktc-drop__b { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; box-sizing: border-box; border: 1px solid var(--ktc-acc-fill); border-radius: var(--ktc-radius-8); color: var(--ktc-acc-fill); background: var(--ktc-card); font-size: 14px; font-weight: 600; text-decoration: none; }
@media (hover: hover) { .ktc-sheet__dl:hover, .ktc-drop:hover .ktc-drop__b { background: rgb(var(--ktc-acc-rgb) / .08); text-decoration: none; } }

.ktc-pay { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); padding: 0; overflow: hidden; }
.ktc-pay__both { display: grid; gap: 14px; justify-items: start; } /* 0.6.2 (owner 2026-10-25): the bank details under the QR, one column, as in the popup */
.ktc-pay__both .ktc-pay__dl { justify-self: stretch; padding-top: 12px; border-top: 1px solid var(--ktc-line); }
.ktc-pay__cell { display: grid; align-content: start; gap: 8px; padding: 20px 24px; }
.ktc-pay__cell + .ktc-pay__cell { border-left: 1px solid var(--ktc-line); }
.ktc-pay__n, .ktc-pd__n { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ktc-ink-3); }
.ktc-pay h3 { margin: 0; font-size: 17px; }
.ktc-pay__s { margin: 0; font-size: 14px; color: var(--ktc-ink-2); }
.ktc-pay .ktc-onlinepay__qr { width: 180px; margin: 0; }
.ktc-pay__dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; font-size: 14px; }
.ktc-pay__dl dt { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); align-self: baseline; }
.ktc-pay__dl dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; user-select: all; }
.ktc-pay__go { justify-self: start; min-height: 44px; display: inline-flex; align-items: center; }
.ktc-pay__or { margin: 0; font-size: 13px; color: var(--ktc-ink-2); }
.ktc-pay__or a { color: var(--ktc-acc-2); font-weight: 600; }
.ktc-pay__need { margin: 10px 0 0; font-size: 14px; color: var(--ktc-ink-2); }

.ktc-pd__pay { margin: 4px 0 16px; padding: 14px; display: grid; gap: 8px; border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius-sm); background: var(--ktc-surface); }
/* 0.6.1 (owner: "make the qr enlarge on popup with the bank details at the bottom"): the QR big and centred, the account under it */
.ktc-pd__acct { display: grid; justify-items: center; gap: 12px; }
.ktc-pd__acct img { width: min(260px, 100%); height: auto; border-radius: var(--ktc-radius-8); background: #fff; }
.ktc-pd__acct .ktc-pay__dl { justify-self: stretch; padding-top: 12px; border-top: 1px solid var(--ktc-line); }
.ktc-pd__hint { margin: 0; font-size: 13px; color: var(--ktc-ink-2); }
.ktc-pd > .ktc-xd__in > .ktc-pd__n { margin-bottom: 8px; }
.ktc-drop { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 12px 14px; border: 1px dashed var(--ktc-edge-input); border-radius: var(--ktc-radius-sm); background: var(--ktc-surface); cursor: pointer; position: relative; }
.ktc-drop input[type="file"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; } /* the whole box takes the tap; keyboard focus shows on the box */
.ktc-drop:focus-within { outline: 2px solid var(--ktc-acc-2); outline-offset: 2px; }
.ktc-drop__h { font-size: 13px; color: var(--ktc-ink-3); overflow-wrap: anywhere; }

/* 0.6.1: one counter area, where to pay first, then what to bring */
/* 0.6.3 (owner 2026-10-25): one card, the two counters in two columns with their Directions, What to bring under them in the same card */
.ktc-counter__card { margin-top: 12px; padding: 0; overflow: hidden; }
.ktc-counter__where { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ktc-counter__at { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 20px 24px; }
.ktc-counter__at + .ktc-counter__at { border-left: 1px solid var(--ktc-line); }
.ktc-counter__at h3 { margin: 0; font-size: 17px; }
.ktc-counter__ph { display: block; align-self: stretch; margin: -20px -24px 10px; aspect-ratio: 16 / 7; overflow: hidden; background: var(--ktc-surface); } /* the place's photo across the top of its column (owner 2026-10-25: "add the picture to the where to pay"); a tap opens the map, like Directions */
.ktc-counter__ph img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ktc-counter__addr, .ktc-counter__same { margin: 0; font-size: 14px; color: var(--ktc-ink-2); }
.ktc-counter__hrs { margin: 4px 0 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; font-size: 14px; }
.ktc-counter__hrs dt { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); padding-top: 2px; }
.ktc-counter__hrs dd { margin: 0; font-weight: 700; }
.ktc-counter__hrs small { display: block; font-size: 13px; font-weight: 400; color: var(--ktc-ink-2); }
.ktc-counter__go { margin-top: auto; display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; box-sizing: border-box; border: 1px solid var(--ktc-edge-input); border-radius: var(--ktc-radius-8); color: var(--ktc-ink); font-size: 14px; font-weight: 600; text-decoration: none; }
.ktc-counter__hrs, .ktc-counter__same { margin-bottom: 6px; } /* the button sits at the foot of each column (margin-top: auto), never closer than this */
@media (hover: hover) { .ktc-counter__go:hover { border-color: var(--ktc-ink); text-decoration: none; } }
.ktc-counter__pay { margin: 0; padding: 12px 24px; border-top: 1px solid var(--ktc-line); background: var(--ktc-surface); font-size: 14px; color: var(--ktc-ink-2); }
.ktc-counter__bring { padding: 20px 24px 8px; border-top: 1px solid var(--ktc-line); }
.ktc-counter__bring h3 { margin: 0; font-size: 17px; }
.ktc-counter__all { margin: 6px 0 8px; font-size: 14px; font-weight: 600; color: var(--ktc-ink); }
.ktc-counter__bring .ktc-fold { margin: 0; border: 0; border-top: 1px solid var(--ktc-line); border-radius: 0; background: none; } /* folds as rows inside the card, not cards in a card */
.ktc-counter__bring .ktc-fold > summary { padding: 14px 0; }
.ktc-counter__bring .ktc-fold[open] > summary { border-bottom: 0; }
.ktc-counter__bring .ktc-fold--check .ktc-fold__body { padding: 0 0 12px; }
.ktc-counter__help { margin: 10px 0 0; font-size: 14px; color: var(--ktc-ink-2); }
@media (max-width: 760px) {
  .ktc-counter__where { grid-template-columns: minmax(0, 1fr); }
  .ktc-counter__at { padding: 16px; }
  .ktc-counter__ph { margin: -16px -16px 8px; }
  .ktc-counter__at + .ktc-counter__at { border-left: 0; border-top: 1px solid var(--ktc-line); }
  .ktc-counter__pay { padding: 12px 16px; }
  .ktc-counter__bring { padding: 16px 16px 4px; }
}

@media (max-width: 860px) {
  .ktc-pay { grid-template-columns: minmax(0, 1fr); }
  .ktc-pay__send { border-left: 0 !important; border-top: 1px solid var(--ktc-line); }
}
@media (max-width: 760px) {
  .ktc-cd-top__grid { grid-template-columns: minmax(0, 1fr); }
  .ktc-cd-top .ktc-section, :root .ktc-cd-top .ktc-section.has-global-padding { padding: 16px; }
  .ktc-pay { grid-template-columns: minmax(0, 1fr); }
  .ktc-pay__cell { padding: 16px; }
  .ktc-pay__cell + .ktc-pay__cell { border-left: 0; border-top: 1px solid var(--ktc-line); }
}
/* 0.6.0: the Customer desk's Helpdesk row has three buttons in a half-width card, so they sit under the text at every width */
.ktc-cd-top .ktc-row--acts { flex-wrap: wrap; }
.ktc-cd-top .ktc-row__acts { flex: 1 1 100%; padding-left: 38px; }
@media (max-width: 760px) { .ktc-cd-top .ktc-row__acts { padding-left: 0; } }

/* ---------- 0.6.5 The website guide (Customer Desk #guide; assets/js/ktc-guide.js plays it) ----------
   A one-minute demo in five scenes, then the questions customers ask most. Since 0.6.6 each scene is the real
   website as screens (assets/img/guide), in a browser frame on desk and a phone frame on a phone; every name and
   number in them is sample data. Scoped to .ktc-gd, keyframes prefixed ktcgd-. */
.ktc-gd .ktc-section__sub { margin: 6px 0 0; color: var(--ktc-ink-2); max-width: 62ch; }
.ktc-gd__pl { container-type: inline-size; background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius); box-shadow: var(--ktc-shadow-md); overflow: hidden; }
.ktc-gd__rail { display: flex; gap: 4px; padding: 12px 16px 0; }
.ktc-gd__seg { flex: 1; height: 4px; border-radius: 99px; background: var(--ktc-surface); overflow: hidden; }
.ktc-gd__seg b { display: block; height: 100%; width: 0; background: var(--ktc-acc); border-radius: 99px; }
.ktc-gd__seg.done b { width: 100%; }
.ktc-gd__seg.on b { animation: ktcgd-fill linear forwards; }
@keyframes ktcgd-fill { to { width: 100%; } }
.ktc-gd__stage { margin: 14px 16px 0; }
.ktc-gd__stage:empty { display: none; }
.ktc-gd__dev { box-sizing: border-box; background: var(--ktc-surface); border: 1px solid var(--ktc-line); border-radius: 12px; overflow: hidden; }
.ktc-gd__bar { display: flex; align-items: center; gap: 6px; padding: 7px 10px; }
.ktc-gd__bar i { width: 9px; height: 9px; border-radius: 50%; background: var(--ktc-line); flex: none; }
.ktc-gd__url { flex: 1; min-width: 0; margin-left: 6px; background: var(--ktc-card); border-radius: 7px; padding: 3px 10px; font-size: 12px; color: var(--ktc-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ktc-gd__url b { color: var(--ktc-ink); font-weight: 600; }
.ktc-gd__scr { position: relative; overflow: hidden; background: var(--ktc-canvas); aspect-ratio: 1280 / 760; }
.ktc-gd__dev.is-phone { width: min(100%, max(240px, calc((100svh - 300px) * 390 / 690))); margin: 0 auto; padding: 8px; border: 0; border-radius: 30px; background: #16181d; }
.ktc-gd__dev.is-phone .ktc-gd__scr { aspect-ratio: 390 / 690; border-radius: 23px; }
.ktc-gd__scr img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .4s ease; }
.ktc-gd__scr img.is-on { opacity: 1; }
.ktc-gd__dev.is-desk .ktc-gd__scr img.is-tap { animation: ktcgd-zoom 2s ease .3s both; } /* eases toward the tap so the small text reads */
@keyframes ktcgd-zoom { from { transform: none; } to { transform: scale(1.35); } }
.ktc-gd__ring { position: absolute; z-index: 4; width: 34px; height: 34px; margin: -17px 0 0 -17px; border-radius: 50%; border: 2px solid var(--ktc-acc); background: rgba(242,106,33,.22); opacity: 0; pointer-events: none; }
.ktc-gd__ring.is-tap { animation: ktcgd-ring .9s ease-out both; }
@keyframes ktcgd-ring { 0% { opacity: 0; transform: scale(1.7); } 35% { opacity: 1; transform: scale(1); } 60% { transform: scale(.8); } 100% { opacity: 0; transform: scale(1.5); } }
.ktc-gd__sample { position: absolute; top: 8px; right: 8px; z-index: 5; font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-3); background: var(--ktc-card); border: 1px solid var(--ktc-line); border-radius: 99px; padding: 1px 7px; }
.ktc-gd__cap { padding: 14px 18px 4px; min-height: 92px; }
.ktc-gd .ktc-gd__t { margin: 0; font-size: 17px; font-weight: 700; line-height: 1.3; }
.ktc-gd .ktc-gd__b { margin: 4px 0 0; color: var(--ktc-ink-2); font-size: 14px; max-width: 60ch; }
.ktc-gd__ctl { display: flex; align-items: center; gap: 8px; padding: 10px 16px 16px; }
.ktc-gd__btn2 { width: 40px; height: 40px; display: grid; place-items: center; padding: 0; border-radius: 99px; border: 1px solid var(--ktc-line); background: var(--ktc-card); color: var(--ktc-ink); cursor: pointer; flex: none; }
.ktc-gd__btn2:disabled { opacity: .4; cursor: default; }
.ktc-gd__btn2[hidden], .ktc-gd__btn2:empty, .ktc-gd__n:empty { display: none; }
.ktc-gd__n { font-size: 13px; color: var(--ktc-ink-3); margin: 0 4px; }
.ktc-gd__btn { flex: 1; height: 40px; border: 0; border-radius: 99px; background: var(--ktc-acc-fill); color: #fff; font-family: inherit; font-size: 14px; font-weight: 600; line-height: 1; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.ktc-gd__btn:hover { background: var(--ktc-acc-fill-hover); }
.ktc-gd__btn:focus-visible, .ktc-gd__btn2:focus-visible { outline: 2px solid var(--ktc-acc-2); outline-offset: 2px; }
.ktc-gd__pl:not([data-gd-ready]) .ktc-gd__ctl { display: none; } /* no script: the caption says the questions cover it */
.ktc-gd__pl.is-paused .ktc-gd__stage *, .ktc-gd__pl.is-paused .ktc-gd__stage *::before, .ktc-gd__pl.is-paused .ktc-gd__stage *::after { animation-play-state: paused !important; }
.ktc-gd__qh { margin: 26px 0 0; }
.ktc-gd__faq .ktc-fold { margin-top: 10px; }
.ktc-gd__faq .ktc-fold > summary .ktc-fold__title { color: var(--ktc-ink); font-size: 15px; font-weight: 700; } /* the site greys a summary span as a subtitle; here it is the question */
.ktc-gd__faq .ktc-fold__body p { margin: 0; color: var(--ktc-ink-2); max-width: 62ch; }

/* phone width: after the base rules, so they win */
@container (max-width: 420px) {
  .ktc-gd__stage { margin: 12px 12px 0; }
  .ktc-gd__cap { padding: 12px 14px 4px; }
  .ktc-gd__ctl { padding: 10px 12px 14px; }
}
/* reduced motion: nothing plays on its own; each scene shows its result screen, no zoom, no ring */
@media (prefers-reduced-motion: reduce) {
  .ktc-gd__scr img { transition: none; }
  .ktc-gd__scr img.is-tap, .ktc-gd__ring.is-tap { animation: none; }
}

/* ---------- 0.6.5 Home: the "New website" note, just under the menu (owner 2026-10-26: "only on home") ---------- */
main.wp-block-group:has(> .ktc-gnote:not([hidden])) { padding-top: 0 !important; }
main > .ktc-gnote:not([hidden]) + * { padding-top: 22px !important; margin-top: 0 !important; }
.ktc-gnote { max-width: var(--wp--style--global--content-size, 1080px); margin: 0 auto !important; box-sizing: border-box; font-size: 14px; font-weight: 600; line-height: 1.35; }
.ktc-gnote__in { display: flex; align-items: center; gap: 10px; background: color-mix(in srgb, var(--ktc-acc) 7%, var(--ktc-card)); border: 1px solid color-mix(in srgb, var(--ktc-acc) 22%, var(--ktc-card)); border-radius: 12px; padding: 3px 6px 3px 14px; }
.ktc-gnote a { color: var(--ktc-ink); text-decoration: none; flex: 1; min-width: 0; display: flex; align-items: center; gap: 9px; min-height: 40px; }
.ktc-gnote a:focus-visible .ktc-gnote__go { text-decoration: underline; }
@media (hover: hover) { .ktc-gnote a:hover .ktc-gnote__go { text-decoration: underline; } }
.ktc-gnote a b { color: var(--ktc-ink); } /* 1.1.2: a label, so ink (rule 1); "Watch" is the one orange */
.ktc-gnote__go { color: var(--ktc-acc-2); margin-left: auto; white-space: nowrap; }
.ktc-gnote__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ktc-acc); flex: none; box-shadow: 0 0 0 4px rgb(var(--ktc-acc-rgb) / .15); }
.ktc-gnote button { width: 36px; height: 36px; padding: 0; border: 0; background: none; color: var(--ktc-ink-3); font-size: 19px; line-height: 1; cursor: pointer; border-radius: 99px; flex: none; }
@media (hover: hover) { .ktc-gnote button:hover { background: var(--ktc-w45); color: var(--ktc-ink); } }
@media (max-width: 640px) { .ktc-gnote { font-size: 13px; } .ktc-gnote__go { display: none; } }

/* ---------- 0.6.7: X-ray search by entry or container (owner 2026-10-27: "two tabs"). The tabs wear the About/Contact tab bar look ---------- */
.ktc-xray__kind { display: flex; gap: 4px; margin: 0 0 4px; padding: 4px; border: 0; background: var(--ktc-surface); border-radius: var(--ktc-radius-pill); min-width: 0; }
.ktc-xray__kind label { flex: 1 1 0; min-width: 0; position: relative; cursor: pointer; }
.ktc-xray__kind input { position: absolute; inset: 0; width: auto; min-height: 0; margin: 0; padding: 0; border: 0; opacity: 0; cursor: pointer; } /* beats .ktc-xd input (Home popup) */
.ktc-xray__kind label > span { display: block; min-height: 44px; line-height: 44px; overflow: hidden; padding: 0 6px; font-size: 13px; white-space: nowrap; font-weight: 600; color: var(--ktc-ink-2); border-radius: var(--ktc-radius-pill); text-align: center; transition: background var(--ktc-dur) var(--ktc-ease), color var(--ktc-dur) var(--ktc-ease); }
.ktc-xray__kind label:hover > span { color: var(--ktc-ink); }
.ktc-xray__kind input:checked + span { background: var(--ktc-card); color: var(--ktc-ink); box-shadow: var(--ktc-shadow-sm); }
.ktc-xray__kind input:focus-visible + span { outline: 2px solid var(--ktc-acc-2); outline-offset: 1px; }
.ktc-xray__form .screen-reader-text, .ktc-xd .screen-reader-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.ktc-xm__sum .ktc-xm__on dd { font-size: 24px; line-height: 1.1; font-weight: 700; }
@media (max-width: 380px) { .ktc-xray__kind .ktc-xray__kw { display: none; } } /* 320 px phones: the tabs read Entry | Container (the box keeps its full hidden label) */

/* ---------- 0.7.0 Suggestions and complaints (inc/feedback.php): the Customer Desk popup #ktc-fb and the /feedback/ page the counter-card QR opens ---------- */
.ktc-fb__where { display: flex; flex-direction: column; gap: 2px; margin: 0 0 14px; padding: 10px 12px; border-left: 3px solid var(--ktc-accent-fill, #c45310); background: var(--ktc-surface, #ecedf2); }
.ktc-fb__where span { font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--ktc-ink-2); } /* ink-3 on surface failed contrast (axe, 1.0.0) */
.ktc-fb__where strong { font-size: 18px; color: var(--ktc-ink); }
.ktc-fb__lede { margin: 0 0 14px; font-size: 15px; line-height: 1.5; color: var(--ktc-ink-2); }
.ktc-fb .ktc-field > span { font-size: 15px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--ktc-ink-2); }
.ktc-fb__who { margin-top: 14px; border-top: 1px solid var(--ktc-line); padding-top: 12px; }
.ktc-fb__who summary { cursor: pointer; font-weight: 700; font-size: 15px; min-height: 28px; list-style: none; display: flex; align-items: center; gap: 6px; }
.ktc-fb__who summary::-webkit-details-marker { display: none; }
.ktc-fb__who summary::after { content: "+"; margin-left: auto; font-size: 17px; font-weight: 400; line-height: 1; color: var(--ktc-ink-3); }
.ktc-fb__who[open] summary::after { content: "–"; }
.ktc-fb__who[open] summary { margin-bottom: 10px; }
.ktc-fb__who summary small { font-weight: 600; color: var(--ktc-ink-3); margin-left: 4px; }
.ktc-fb__other { margin: 0 0 14px; font-size: 14px; color: var(--ktc-ink-3); }
.ktc-fb__anon { margin: 8px 0 0; font-size: 13px; color: var(--ktc-ink-3); }
.ktc-fb__done p { margin: 0 0 10px; color: var(--ktc-ink-2); font-size: 15px; }
.ktc-fb__close { margin-top: 18px !important; padding-top: 14px; border-top: 1px solid var(--ktc-line); font-weight: 700; color: var(--ktc-ink) !important; text-align: center; }
.ktc-fbp-body { margin: 0; background: var(--ktc-canvas, #f1f2f5); }
.ktc-fbp { max-width: 560px; margin: 0 auto; padding: 16px 16px calc(24px + env(safe-area-inset-bottom)); box-sizing: border-box; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; gap: 14px; }
.ktc-fbp__top { padding: 4px 4px 0; }
.ktc-fbp__top img { height: 40px; width: auto; display: block; }
.ktc-fbp__card { background: var(--ktc-card, #fff); border: 1px solid var(--ktc-line); border-radius: var(--ktc-radius, 12px); padding: 20px 18px 22px; }
.ktc-fbp__t { margin: 2px 0 4px; font-size: 26px; line-height: 1.15; font-weight: 700; }
.ktc-fbp .ktc-msg__foot { flex-direction: column-reverse; align-items: stretch; }
.ktc-fbp .ktc-msg__foot .wp-element-button { width: 100%; text-align: center; }
.ktc-fb .ktc-msg__foot .wp-element-button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; }
.ktc-fbp .ktc-msg__consent { max-width: none; }
.ktc-fbp__foot { margin-top: auto; text-align: center; font-size: 12px; color: var(--ktc-ink-3); }
.ktc-fbp__foot a { text-decoration: underline; text-underline-offset: 2px; } /* a link inside a sentence is told apart by more than colour (axe, 1.0.0) */
.ktc-fbp .ktc-fb__done h3 { font-size: 22px; }
@media (min-width: 700px) { .ktc-fbp { padding-top: 40px; } .ktc-fbp__card { padding: 28px 32px 30px; } }
