/* Partners page. Loads after onboarding.css and borrows its shell: topbar, hero, control panel, modal, detail
   sections, timeline and placed results. What is here is only what Partners adds: the view and type rows, the
   board columns, the court and calendar lists, the confidentiality chips, the record summary and its action bar.
   Every control is 44px or taller, and nothing scrolls sideways at 390px. */
.partners-hero-actions{--tiles:3}
/* The three hero tiles take the activation desk's glass treatment (onboarding.css), each in its own hue: New
   partner in the primary teal, Customers in the support blue, Fleet in the inventory lime. */
.partners-hero-actions.partners-hero-actions > #customersButton{--hue:#38bdf8;--chip-ink:#04263a;--ring:#7dd3fc;color:#e6f6ff}
.partners-hero-actions.partners-hero-actions > #fleetButton{--hue:#a3e635;--chip-ink:#1a2e05;--ring:#bef264;color:#f4ffe0}
.partners-hero-actions.partners-hero-actions:has(> a:not([hidden])){grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1100px){.partners-hero-actions.partners-hero-actions:has(> a:not([hidden])){grid-template-columns:1fr 1fr}.partners-hero-actions.partners-hero-actions > #newPartnerButton{grid-column:1/-1}.partners-hero-actions.partners-hero-actions > a:last-child:nth-child(odd){grid-column:auto}}

/* Sticky control rows: views, types and search stay under the topbar while a long board scrolls. */
.partners-panel{overflow:visible}
.partners-controls{position:sticky;top:0;z-index:4;display:grid;gap:10px;padding:14px;border-bottom:1px solid var(--line-soft);background:rgba(7,23,36,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-radius:var(--radius) var(--radius) 0 0}
.partners-views,.partner-types{display:flex;flex-wrap:wrap;gap:8px}
.partners-view,.partner-type{min-height:44px;padding:0 16px;border-radius:999px;border:1px solid #264257;background:#0d2232;color:#cae0ee;font:inherit;font-weight:750;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.partners-view[aria-pressed="true"],.partner-type[aria-pressed="true"]{background:rgba(55,212,197,.16);border-color:#37d4c5;color:#ebfbff}
.partner-type b{min-width:22px;height:22px;padding:0 7px;border-radius:999px;display:inline-grid;place-items:center;background:#153a48;border:1px solid #23566b;font-size:11px;color:#dff9f6}
.partners-search{min-width:0}
.partners-search input{min-height:44px}
.partners-key{margin:0;color:#6f879a;font-size:11px;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
#partnersNotice{margin:14px}
#partnersNotice[hidden],[data-view-panel][hidden]{display:none}
#partnerTypes[hidden]{display:none}
@media(max-width:720px){.partners-controls{padding:12px}.partners-view,.partner-type{flex:1 1 auto;justify-content:center;padding:0 12px}}

/* Confidentiality chips: one helper draws them on cards, rows, the dialog head and the summary. */
.conf-flags{display:flex;flex-wrap:wrap;gap:5px;margin:4px 0}
.conf-chip{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border-radius:999px;border:1px solid #3e5468;background:#0f2334;color:#b9cbd8;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.conf-chip[data-flag="never-name"]{border-color:#7a3b4a;background:rgba(122,59,74,.22);color:#ffb3c0}
.conf-chip[data-flag="zero-attribution"]{border-color:#6a5222;background:rgba(106,82,34,.22);color:#f3cf8a}
.conf-chip[data-flag="may-name"]{border-color:#256249;background:rgba(25,93,66,.22);color:#8af0c4;text-transform:none;letter-spacing:0;white-space:normal}
.conf-chip[data-flag="demo"]{border-color:#4b5563;background:rgba(75,85,99,.25);color:#d1d5db}
.status-badge.tone-ok{color:#81ebbf;border-color:#256249;background:rgba(25,93,66,.2)}
.status-badge.tone-warn{color:#f4c575;border-color:#68522a;background:rgba(96,70,26,.18)}
.status-badge.tone-bad{color:#ff9db0;border-color:#6d2f3d;background:rgba(109,47,61,.2)}
.status-badge.tone-neutral{color:#9fb3c3}

/* The board: one column per stage, left to right. Columns shrink to fit the board, so nothing scrolls sideways
   at a desktop width; when six stages will not fit a row they wrap to a second. At 900px and under the columns
   stack and fold. */
.partners-board{display:flex;flex-wrap:wrap;gap:10px;padding:14px;overflow:hidden;min-height:360px}
.partner-col{flex:1 1 180px;min-width:0;border:1px solid #1a3348;border-radius:14px;background:color-mix(in srgb,#0b1b2a 88%,#06121f);display:flex;flex-direction:column;min-height:0}
.partner-col-head{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:44px;padding:10px 12px;border:0;border-bottom:1px solid #1a3348;border-radius:14px 14px 0 0;background:transparent;color:#e3f0f7;font:inherit;font-weight:700;font-size:13px;text-align:left;cursor:default}
.partner-col-head span{font-size:11px;color:#8ba2b4;font-variant-numeric:tabular-nums}
.partner-col-body{display:flex;flex-direction:column;gap:8px;padding:8px;max-height:calc(100vh - 320px);overflow:auto}
.partner-col-body .detail-empty{padding:10px;font-size:10px}
.partner-card{display:block;padding:11px 12px;border:1px solid #183449;background:#071824;border-radius:11px;cursor:pointer;color:#cde0ea;box-shadow:0 6px 18px rgba(0,0,0,.12)}
.partner-card:hover,.partner-card:focus-visible{border-color:#2a566b;outline:none;box-shadow:0 0 0 2px rgba(55,212,197,.25)}
.partner-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.partner-card-name{font-size:13px;color:#e9f6fc;overflow-wrap:anywhere}
.partner-card-ball{flex:none;padding:2px 8px;border-radius:999px;font-size:10px;font-weight:850;letter-spacing:.04em;border:1px solid #2e5c72;background:#123246;color:#8ee9df;white-space:nowrap}
.partner-card-ball[data-court="them"]{border-color:#5d4a28;background:rgba(103,74,24,.2);color:#f3cf8a}
.partner-card-contact,.partner-card-next{display:block;font-size:11px;color:#91a5b4;margin-top:3px;overflow-wrap:anywhere}
.partner-card-contact.is-empty{color:#657f92}
.partner-card-next.is-overdue,.court-row-next.is-overdue,.is-overdue{color:#ff9db0}
.partner-card-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}
.partner-card-chips .status-badge{padding:3px 7px;font-size:9px}
.partner-card-chips .asset-number{align-self:center}
@media(max-width:900px){
  .partners-board{flex-direction:column;overflow:visible;padding:12px;min-height:0}
  .partner-col{flex:none;min-width:0;width:100%}
  .partner-col-head{cursor:pointer}
  .partner-col-head::after{content:"";width:8px;height:8px;border-right:2px solid #8ba2b4;border-bottom:2px solid #8ba2b4;transform:rotate(45deg);margin-left:auto;margin-right:4px;transition:transform .15s}
  .partner-col-head span{margin-left:auto}
  .partner-col[data-folded="1"] .partner-col-head::after{transform:rotate(-45deg)}
  .partner-col[data-folded="1"] .partner-col-body{display:none}
  .partner-col[data-folded="1"] .partner-col-head{border-bottom:0;border-radius:14px}
  .partner-col-body{max-height:none;overflow:visible}
}

/* Ball in our court: oldest first. */
.court-list,.renewal-calendar{padding:14px;display:grid;gap:10px}
.court-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 14px;align-items:start;padding:12px 14px;border:1px solid #183449;background:#071824;border-radius:12px}
.court-row-main{min-width:0;display:grid;gap:3px}
.court-row-name{font-size:14px;color:#e9f6fc}
.court-row-type{font-size:10px;color:#6f879a;text-transform:uppercase;letter-spacing:.06em}
.court-row-days{font-size:13px;color:#f3cf8a}
.court-row-next{font-size:12px;color:#91a5b4;overflow-wrap:anywhere}
.court-row-actions{display:flex;flex-direction:column;gap:8px}
.court-row > .placed-slot{grid-column:1/-1;min-width:0}
.court-row > .placed-slot:empty{display:none}
.court-row-actions .secondary-button{min-height:44px;white-space:nowrap}
@media(max-width:720px){.court-row{grid-template-columns:1fr}.court-row-actions{flex-direction:row}.court-row-actions .secondary-button{flex:1}}

/* Calendar: next 180 days, by month, overdue first. */
.calendar-month{display:grid;gap:8px}
.calendar-month h3{margin:6px 0 0;font-size:12px;color:#8ba2b4;text-transform:uppercase;letter-spacing:.08em}
.calendar-row{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:start;min-height:44px;padding:10px 12px;border:1px solid #183449;background:#071824;border-radius:11px;cursor:pointer}
.calendar-row:hover,.calendar-row:focus-visible{border-color:#2a566b;outline:none}
.calendar-row.is-overdue{border-color:#6d2f3d}
.calendar-day{font-size:13px;color:#8ee9df;font-variant-numeric:tabular-nums}
.calendar-row.is-overdue .calendar-day{color:#ff9db0}
.calendar-row div b{display:block;font-size:13px;color:#e9f6fc}
.calendar-row div span{display:block;font-size:11px;color:#91a5b4}

/* The record. The summary is the one screen DJ opens on his phone: five short lines that fit inside 844px
   with the action bar; everything else is below it, in the order the work is done. */
.partner-modal .modal-head{align-items:flex-start}
#closePartnerDialog,#closeCreatePartnerDialog{flex:none;width:44px;height:44px;min-width:44px;min-height:44px;padding:0;display:inline-grid;place-items:center;line-height:1}
.partner-modal .modal-head h2{font-size:21px;overflow-wrap:anywhere}
.partner-modal .modal-head .conf-flags{margin:6px 0 0}
.partner-summary{display:grid;gap:6px;padding:10px 12px;border:1px solid #1d394d;background:#071724;border-radius:12px}
.partner-summary > div{display:grid;grid-template-columns:52px minmax(0,1fr);gap:8px;align-items:baseline;min-height:22px}
.partner-summary > div small{color:#6f879a;font-size:9px;text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.partner-summary > div b{font-size:13px;line-height:1.4;color:#e3f0f7;font-weight:600;overflow-wrap:anywhere}
.partner-summary > div[data-summary="court"] b{color:#f3cf8a}
.partner-summary .asset-number{font-size:11px;color:#8ee9df}
.partner-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:12px 0 0}
.partner-actions .secondary-button{min-height:44px;padding:0 6px;font-size:13px;white-space:nowrap}
/* On a phone the four presses stay pinned over the dialog's bottom edge while the record scrolls under them
   (a sticky bar drawn after the summary would scroll off the top), and the shell leaves room beneath the last
   section so nothing is covered. The dialog is 16px in from each side, so the bar sits exactly on its edge. */
@media(max-width:720px){
  .partner-modal[open] .partner-actions{position:fixed;left:16px;right:16px;bottom:16px;z-index:6;margin:0;padding:10px 12px 12px;border-top:1px solid #1d394d;border-radius:0 0 18px 18px;background:linear-gradient(180deg,rgba(9,26,40,.86),#091a28 45%)}
  .partner-modal .case-dialog-shell{padding-bottom:100px}
  .partner-summary{padding:8px 10px;gap:4px}.partner-summary > div{grid-template-columns:46px minmax(0,1fr)}.partner-summary > div b{font-size:12.5px;line-height:1.35}
}
.partner-modal .detail-section{margin-top:22px}
.partner-modal .detail-section-head{align-items:flex-start;gap:10px;flex-wrap:wrap}
.partner-modal .detail-section-head span{text-transform:none;letter-spacing:0;font-size:11px;color:#8ba2b4;overflow-wrap:anywhere}
.partner-modal .detail-section-head span a{color:#8ee9df}
.next-now{padding:11px 12px;border:1px solid #183449;background:#071824;border-radius:10px;margin-bottom:8px}
.next-now b{display:block;font-size:13px;color:#e9f6fc}
.next-now span{display:block;font-size:11px;color:#91a5b4;margin-top:2px}
.next-now em{font-style:normal;font-weight:800}
.inline-fold{border:1px solid #1d394d;border-radius:10px;margin-top:8px;background:rgba(7,23,36,.6)}
.inline-fold-summary{list-style:none;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:8px;padding:10px 12px;font-size:12px;font-weight:800;color:#cae0ee}
.inline-fold-summary::-webkit-details-marker{display:none}
.inline-fold-summary::before{content:"+";display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;background:#153a48;border:1px solid #23566b;color:#8ee9df;font-size:12px}
.inline-fold[open] > .inline-fold-summary::before{content:"−"}
.inline-fold > .inline-form{padding:0 12px 12px}
.inline-form label{display:block;margin-top:8px}
.inline-form input,.inline-form select,.inline-form textarea{min-height:44px}
.inline-form textarea{min-height:64px}
.inline-form .form-grid{margin-top:4px}
.inline-form .form-grid label{margin-top:0}
.inline-form .check-line{display:flex;margin:12px 0 0}
.inline-form .form-error{margin:8px 0 0}
.inline-form-actions{display:flex;gap:8px;margin-top:6px}
.inline-form-actions .primary-button,.inline-form-actions .secondary-button{min-height:44px;flex:1 1 auto}
.ball-pair .primary-button:disabled,.ball-pair .secondary-button:disabled{opacity:.45;cursor:not-allowed}
.fact-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border:1px solid #1d394d;border-radius:11px;overflow:hidden;background:#173145}
.fact-grid > div{padding:10px 12px;background:#071724;min-width:0}
.fact-grid small{display:block;color:#6f879a;font-size:9px;text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}
.fact-grid b{display:block;color:#e3f0f7;font-size:12px;overflow-wrap:anywhere}
@media(max-width:720px){.fact-grid{grid-template-columns:1fr 1fr}}
.terms-text{margin:8px 0 0;color:#9fb8c6;font-size:12px;line-height:1.5;overflow-wrap:anywhere}
.cert-now,.conf-now{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}
.cert-dates,.cert-reason,.conf-now small{font-size:11px;color:#91a5b4}
.agreement-list{display:grid;gap:8px}
.partner-agreement{padding:11px 12px;border:1px solid #183449;background:#071824;border-radius:10px}
.partner-agreement .agreement-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;flex-wrap:wrap}
.partner-agreement b{font-size:12px;color:#def0f7}
.partner-agreement b small{color:#8ba2b4;font-weight:600}
.partner-agreement > span{display:block;font-size:10px;color:#91a5b4;margin:3px 0}
.party-marks{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.party-mark{font-size:11px;color:#91a5b4;padding:3px 8px;border:1px solid #1d394d;border-radius:999px}
.party-mark.is-signed{color:#81ebbf;border-color:#256249}
.agreement-link{display:inline-flex;align-items:center;min-height:44px;font-size:12px;font-weight:800}
.partner-box b,.partner-document b,.partner-contact b{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.partner-box .secondary-button{margin-top:8px;min-height:44px}
.partner-timeline{grid-template-columns:1fr;margin-top:8px}
.partner-timeline b{text-transform:none;font-size:12px}
.partner-timeline span{font-size:10px}
.partner-timeline small{display:block;font-size:11px;color:#9fb8c6;margin-top:3px;white-space:pre-wrap}
.partner-modal .placed-result{scroll-margin-bottom:120px}

/* The channel partner record (25 Oct 2026): a tab row that wraps to a second line at phone width, each tab a
   44px chip, never a sideways scroll; one panel showing at a time. The tabs' sections borrow every rule above. */
.partner-tabs{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 4px;padding:0}
.partner-tab{min-height:44px;padding:0 14px;border-radius:999px;border:1px solid #264257;background:#0d2232;color:#cae0ee;font:inherit;font-weight:750;font-size:12px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;max-width:100%;overflow-wrap:anywhere}
.partner-tab[aria-selected="true"]{background:rgba(55,212,197,.16);border-color:#37d4c5;color:#ebfbff}
.partner-tab b{min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-grid;place-items:center;background:#153a48;border:1px solid #23566b;font-size:10px;color:#dff9f6}
.partner-tab-panel[hidden]{display:none}
.partner-tab-panel > .detail-section:first-child{margin-top:12px}
.health-facts{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.health-fact{display:grid;grid-template-columns:12px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border:1px solid #183449;background:#071824;border-radius:10px;font-size:12.5px;line-height:1.45;color:#dbe8f0;overflow-wrap:anywhere}
.health-fact i{width:10px;height:10px;border-radius:50%;margin-top:5px;background:#8a99a5}
.health-fact.tone-ok i{background:#1f9d55}.health-fact.tone-warn i{background:#d98b0b}.health-fact.tone-bad i{background:#c8412f}
.partner-step,.order-form-row,.partner-deployment,.partner-key,.partner-invoice,.end-customer,.kit-item{padding:11px 12px;border:1px solid #183449;background:#071824;border-radius:10px}
.partner-step b,.order-form-row b,.partner-deployment b,.partner-key b,.partner-invoice b,.end-customer b,.kit-item b{font-size:12px;color:#def0f7;overflow-wrap:anywhere}
.partner-step > span,.order-form-row > span,.partner-deployment > span,.partner-key > span,.partner-invoice > span,.end-customer > span,.kit-item > span{display:block;font-size:11px;color:#91a5b4;margin:3px 0;overflow-wrap:anywhere}
.partner-step small,.order-form-row small,.partner-deployment small,.partner-key small,.partner-invoice small,.end-customer small,.kit-item small{display:block;font-size:11px;color:#9fb8c6;margin-top:3px;overflow-wrap:anywhere}
.step-number{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#153a48;border:1px solid #23566b;color:#8ee9df;font-size:11px;margin-right:4px}
.step-presses{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.step-presses .secondary-button,.partner-deployment > .secondary-button,.partner-key > .secondary-button,.end-customer > .secondary-button{min-height:44px;margin-top:8px}
.party-row{margin-top:6px;padding-top:6px;border-top:1px dashed #1d394d}
.margin-line{color:#f3cf8a}
.ladder-totals{margin-top:10px}
.sub-head{margin:14px 0 6px;font-size:11px;color:#8ba2b4;text-transform:uppercase;letter-spacing:.08em}
.counts-note{white-space:pre-wrap}
.kit-item code,.partner-key code{font-size:11px;color:#8ee9df;overflow-wrap:anywhere}
.kit-choices{display:grid;gap:4px;margin-top:8px}
.kit-choices .check-line{margin:0;min-height:44px;align-items:center}
.partner-modal .microcopy{margin:6px 0 0;font-size:11px;color:#6f879a}
.partner-modal [data-row-error]:empty{display:none}
