/* FCI Parts Tracker v1.4 — customer-facing tracker.
   Every rule is scoped under .fci-t so the host theme cannot reach in and
   this cannot reach out. The block immediately below undoes the handful of
   theme defaults (Impreza) that would otherwise show through: link colour
   and underlines, button fonts, table spacing. Everything after it is the
   approved design. */
.fci-t,.fci-t *,.fci-t *::before,.fci-t *::after{box-sizing:border-box}
.fci-t a{background:none;border:0;box-shadow:none;color:inherit;text-decoration:none}
.fci-t a:hover,.fci-t a:focus{box-shadow:none;text-decoration:none}
.fci-t button,.fci-t input{font-family:inherit;letter-spacing:normal;text-transform:none}
.fci-t table{border-collapse:collapse;border-spacing:0;margin:0;width:100%}
.fci-t th,.fci-t td{background:none;vertical-align:middle}
.fci-t ul,.fci-t ol,.fci-t li{list-style:none;margin:0;padding:0}
.fci-t p{margin:0}
.fci-t h1,.fci-t h3,.fci-t h4{font-weight:400;margin:0}
.fci-t img{display:block;max-width:100%}
.fci-t details summary{cursor:pointer;list-style:none}
.fci-t details summary::-webkit-details-marker{display:none}
.fci-t .fci-sr{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}
.fci-t .morewrap{padding:10px 14px 12px;text-align:center}
.fci-t .more{font-size:.78rem}
.fci-t .msg{background:var(--card);border:1px solid var(--bd);border-radius:9px;box-shadow:var(--sh);
  color:var(--mut);padding:22px 18px;text-align:center}

.fci-t{
  --pg:#eef3f6; --fg:#1b2430; --mut:#71808f; --faint:#9aa7b4;
  --card:#ffffff; --bd:#e4e9ee; --rule:#eff2f5; --soft:#f7f9fb;
  --or:#FFA633; --or-d:#b86600; --ink:#141922;
  --am:#b45309; --am-bg:#fff8ec; --am-bd:#f6ddb4;
  --gn:#047857; --gn-bg:#edfaf3; --gn-bd:#bfe6d3;
  --rd:#b42318; --rd-bg:#fdf0ee; --rd-bd:#f3ccc7;
  --bar:#e9edf1;
  --fill-am:#FFA633; --fill-gn:#047857; --fill-rd:#b42318;
  --sh:0 1px 2px rgba(16,24,40,.04),0 6px 20px rgba(16,24,40,.05);
}
.fci-t{background:var(--pg);border:1px solid var(--bd);border-radius:13px;overflow:hidden;box-shadow:var(--sh)}
.fci-t .appbody{padding:15px 15px 18px}
.fci-t .hcard{align-items:center;background:var(--card);border:1px solid var(--bd);border-radius:11px;box-shadow:var(--sh);display:flex;flex-wrap:wrap;gap:10px 14px;justify-content:space-between;margin-bottom:11px;padding:12px 15px}
.fci-t .hcard .ttl{align-items:center;display:flex;gap:12px}
.fci-t .hcard .ttl .div{background:var(--bd);flex:none;height:26px;width:1px}
.fci-t .lgw{--lgh:32px;--lgw:76px;display:block;flex:none;height:var(--lgh);position:relative;width:var(--lgw);
  transition:transform .25s cubic-bezier(.2,.8,.3,1)}
.fci-t .hcard .ttl:hover .lgw{transform:translateY(-1px) scale(1.03)}
.fci-t .lgw .lg{display:block;height:100%;width:auto}
.fci-t .lgw.fly .lg{animation:lgwipe 1.05s cubic-bezier(.34,.02,.2,1) .12s both}

@keyframes lgwipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}.fci-t .lgplane{fill:#a5291c;height:13px;left:0;opacity:0;position:absolute;top:46%;width:13px}
.fci-t .lgw.fly .lgplane{animation:lgfly 1.05s cubic-bezier(.34,.02,.2,1) .12s both}

@keyframes lgfly{
  0%{opacity:0;transform:translate(-15px,-50%) scale(.82)}
  10%{opacity:1}
  78%{opacity:1;transform:translate(calc(var(--lgw) - 12px),-50%) scale(1)}
  100%{opacity:0;transform:translate(calc(var(--lgw) - 4px),-50%) scale(1)}}.fci-t .hcard .ttl h3{color:var(--fg);font-family:Alata,sans-serif;font-size:1.06rem;line-height:1.2;margin:0}
.fci-t .hcard .ttl span{color:var(--faint);display:block;font-size:.73rem;font-weight:600}
.fci-t .hcard .right{align-items:center;display:flex;flex:1 1 420px;flex-wrap:wrap;gap:9px;justify-content:flex-end;min-width:0}
.fci-t .hcard .searchrow{flex:1 1 290px;margin:0}


@media (max-width:1040px){
.fci-t .hcard{gap:10px 12px}
.fci-t .hcard .ttl{flex:1 1 100%}
.fci-t .hcard .right{flex:1 1 100%;justify-content:flex-start}
.fci-t .hcard .searchrow{flex:1 1 240px}
}

@media (max-width:560px){
.fci-t .hcard .right{gap:8px}
.fci-t .hcard .seg{flex:1 1 100%}
.fci-t .hcard .seg button{flex:1;justify-content:center}
.fci-t .hcard .searchrow{flex:1 1 100%}
.fci-t .hcard .searchrow .btn{flex:1 1 100%}
}
.fci-t .seg,
.fci-t .vt{align-items:center;background:var(--soft);border:1px solid var(--bd);border-radius:9px;display:inline-flex;flex:none;gap:2px;height:42px;padding:3px}
.fci-t .seg button,
.fci-t .seg a,
.fci-t .vt button,
.fci-t .vt a{align-items:center;background:none;border:0;border-radius:7px;color:var(--mut);cursor:pointer;display:inline-flex;font:600 .77rem "Noto Sans",sans-serif;height:100%;padding:0 14px;white-space:nowrap}
.fci-t .seg button:hover,
.fci-t .seg a:hover,
.fci-t .vt button:hover,
.fci-t .vt a:hover{color:var(--fg)}
.fci-t .seg button[aria-selected="true"],
.fci-t .seg a[aria-selected="true"],
.fci-t .vt button[aria-pressed="true"],
.fci-t .vt a[aria-pressed="true"]{background:var(--or);color:#141922;font-weight:700}
.fci-t .searchrow{align-items:center;display:flex;flex-wrap:wrap;gap:9px}
.fci-t .fld{align-items:center;background:var(--card);border:1px solid var(--bd);border-radius:9px;display:flex;flex:1 1 230px;gap:9px;height:42px;min-width:0;padding:0 13px}
.fci-t .fld svg{flex:none;fill:none;height:15px;stroke:var(--faint);stroke-width:2;width:15px}
.fci-t .fld input{background:none;border:0;color:var(--fg);flex:1;font:700 .86rem "Noto Sans",sans-serif;letter-spacing:.04em;min-width:0;outline:none;text-transform:uppercase}
.fci-t .fld.plain input{font-weight:600;letter-spacing:0;text-transform:none}
.fci-t .btn{background:var(--or);border:0;border-radius:9px;color:#141922;cursor:pointer;font:700 .79rem "Noto Sans",sans-serif;height:42px;padding:0 18px;white-space:nowrap}
.fci-t .btn:hover{background:var(--or-d);color:#fff}
.fci-t .crumb{color:var(--faint);font-size:.74rem;font-weight:600;margin:0 0 8px}
.fci-t .lnk{background:none;border:0;color:var(--or-d);cursor:pointer;font:700 .8rem "Noto Sans",sans-serif;padding:0;text-decoration:underline;text-underline-offset:3px}
.fci-t .prof{align-items:center;background:var(--card);border:1px solid var(--bd);border-radius:11px;box-shadow:var(--sh);display:flex;flex-wrap:wrap;gap:12px;margin-bottom:10px;padding:13px 15px}
.fci-t .prof .who{align-items:center;display:flex;gap:13px;min-width:0}
.fci-t .av{border-radius:50%;color:var(--ink);display:grid;flex:none;font-family:Alata,sans-serif;font-size:.88rem;
  height:44px;isolation:isolate;letter-spacing:.03em;place-items:center;position:relative;width:44px;
  animation:avin .45s cubic-bezier(.2,.8,.3,1) both}
.fci-t .av::before{animation:avspin 7s linear infinite;background:conic-gradient(from 0deg,var(--or),#ffe0ad,var(--or-d),#ffcf85,var(--or));
  border-radius:50%;content:"";inset:-1.5px;position:absolute;z-index:-2}
.fci-t .av::after{background:linear-gradient(150deg,#fffaf3,#ffefd9);border-radius:50%;content:"";inset:0;position:absolute;z-index:-1}

@keyframes avspin{to{transform:rotate(1turn)}}
@keyframes avin{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
.fci-t .av,
.fci-t .av::before,
.fci-t .lgw,
.fci-t .lgw .lg,
.fci-t .lgplane{animation:none!important;transition:none!important}
.fci-t .lgplane{opacity:0}
}
.fci-t .prof .nm h3{font-family:Alata,sans-serif;font-size:1.12rem;line-height:1.25;margin:0 0 1px}
.fci-t .prof .nm span{color:var(--mut);font-size:.73rem;font-weight:600}
.fci-t .prof .nm span b{color:var(--fg)}
.fci-t .stats{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));margin-bottom:11px}
.fci-t .stat{background:var(--card);border:1px solid var(--bd);border-radius:9px;box-shadow:var(--sh);padding:9px 12px}
.fci-t .stat .k{color:var(--mut);display:block;font-size:.67rem;font-weight:600;margin-bottom:1px}
.fci-t .stat .n{font-family:Alata,sans-serif;font-size:1.24rem;line-height:1.1}
.fci-t .stat.am .n{color:var(--am)}
.fci-t .stat.gn .n{color:var(--gn)}
.fci-t .stat.rd .n{color:var(--rd)}
.fci-t .toolbar{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.fci-t .grp{background:var(--card);border:1px solid var(--bd);border-radius:9px;box-shadow:var(--sh);margin-bottom:8px;overflow:hidden}
.fci-t .grp > summary{align-items:center;cursor:pointer;display:flex;gap:9px;list-style:none;padding:10px 14px}
.fci-t .grp > summary::-webkit-details-marker{display:none}
.fci-t .grp > summary:hover{background:var(--soft)}
.fci-t .gname{font-size:.79rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.fci-t .gname.am{color:var(--am)}
.fci-t .gname.gn{color:var(--gn)}
.fci-t .gname.rd{color:var(--rd)}
.fci-t .gcount{background:var(--soft);border:1px solid var(--bd);border-radius:999px;color:var(--mut);font-size:.69rem;font-weight:600;padding:2px 9px}
.fci-t .chev{color:var(--faint);flex:none;height:16px;margin-left:auto;transition:transform .18s;width:16px}
.fci-t .chev svg{fill:none;height:100%;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.2;width:100%}
.fci-t .grp[open] > summary{border-bottom:1px solid var(--rule)}
.fci-t .grp[open] > summary .chev{transform:rotate(180deg)}
.fci-t .slist{display:block}
.fci-t .metawrap{display:contents}
.fci-t .scols,
.fci-t .srow > summary{align-items:center;display:grid;gap:10px;
  grid-template-columns:minmax(160px,1.5fr) minmax(100px,1fr) 92px 144px 120px 16px;padding:7px 12px}
.fci-t .scols{border-bottom:1px solid var(--rule);color:var(--faint);font-size:.65rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.fci-t .scols > span{justify-self:start;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}
.fci-t .scols > span:first-child{padding-left:33px}
.fci-t .srow{border-bottom:1px solid var(--rule)}
.fci-t .srow:last-child{border-bottom:0}
.fci-t .srow > summary{cursor:pointer;list-style:none}
.fci-t .srow > summary::-webkit-details-marker{display:none}
.fci-t .srow > summary:hover{background:var(--soft)}
.fci-t .srow[open] > summary{background:var(--soft)}
.fci-t .srow[open] .chev{transform:rotate(180deg)}
.fci-t .srow .chev{margin-left:0}
.fci-t .idcell{align-items:center;display:flex;gap:9px;min-width:0}
.fci-t .ic{background:var(--soft);border:1px solid var(--bd);border-radius:7px;color:var(--or-d);display:grid;flex:none;height:27px;place-items:center;width:27px}
.fci-t .ic svg{fill:none;height:14px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:14px}
.fci-t .idcell .tx{min-width:0}
.fci-t .idcell .tx b{display:block;font-size:.82rem;font-weight:700;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fci-t .idcell .tx span{color:var(--faint);display:block;font-size:.7rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fci-t .cdim{color:var(--mut);font-size:.82rem;justify-self:start;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:nowrap}
.fci-t .cnum{color:var(--mut);font-size:.8rem;font-variant-numeric:tabular-nums;justify-self:start;text-align:left;white-space:nowrap}
.fci-t .cst{justify-self:start;text-align:left}
.fci-t .chip{border-radius:999px;display:inline-block;font-size:.67rem;font-weight:700;padding:3px 9px;white-space:nowrap}
.fci-t .chip.am{background:var(--am-bg);border:1px solid var(--am-bd);color:var(--am)}
.fci-t .chip.gn{background:var(--gn-bg);border:1px solid var(--gn-bd);color:var(--gn)}
.fci-t .chip.rd{background:var(--rd-bg);border:1px solid var(--rd-bd);color:var(--rd)}
.fci-t .pb{align-items:center;display:flex;gap:8px;min-width:0}
.fci-t .pb .track{background:var(--bar);border-radius:99px;display:block;flex:1;height:5px;min-width:0;overflow:hidden}
.fci-t .pb .fill{border-radius:99px;display:block;height:5px}
.fci-t .pb .pct{color:var(--mut);flex:none;font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;width:30px}
.fci-t .srow-body{background:var(--soft);border-top:1px solid var(--rule);padding:11px 14px 13px}
.fci-t .srow-body .plbl{color:var(--faint);font-size:.64rem;font-weight:700;letter-spacing:.06em;margin:0 0 7px;text-transform:uppercase}
.fci-t .mini{border-collapse:collapse;width:100%}
.fci-t .mini th{color:var(--faint);font-size:.63rem;font-weight:700;letter-spacing:.05em;padding:0 10px 6px 0;text-align:left;text-transform:uppercase}
.fci-t .mini td{border-top:1px solid var(--rule);font-size:.82rem;padding:7px 10px 7px 0;vertical-align:top}
.fci-t .mini td:last-child,
.fci-t .mini th:last-child{padding-right:0}
.fci-t .mini .pn{font-weight:700;white-space:nowrap}
.fci-t .srow-body .go{display:inline-block;margin-top:11px}
.fci-t .bigwrap{background:var(--card);border:1px solid var(--bd);border-radius:9px;box-shadow:var(--sh);overflow:hidden}
.fci-t .bighead{align-items:center;border-bottom:1px solid var(--rule);display:flex;gap:9px;justify-content:space-between;padding:11px 14px}
.fci-t .bighead h4{align-items:center;display:flex;font-size:.79rem;font-weight:700;gap:8px;margin:0}
.fci-t .bighead h4 svg{fill:none;height:15px;stroke:var(--or-d);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:15px}
.fci-t .tsc{overflow-x:auto;-webkit-overflow-scrolling:touch}
.fci-t table.big{border-collapse:collapse;width:100%;min-width:720px}
.fci-t table.big thead th{background:var(--soft);border-bottom:1px solid var(--bd);color:var(--faint);font-size:.65rem;font-weight:700;letter-spacing:.05em;padding:0;position:sticky;text-align:left;top:0;text-transform:uppercase;z-index:2}
.fci-t .sortbtn{background:none;border:0;color:inherit;cursor:pointer;display:flex;font:inherit;gap:5px;
  justify-content:flex-start;letter-spacing:inherit;padding:9px 14px;text-align:left;
  text-transform:inherit;white-space:nowrap;width:100%}
.fci-t .sortbtn:hover{color:var(--fg)}
.fci-t .sortbtn.on{color:var(--or-d)}
.fci-t .sortbtn .ar{font-size:.6em;line-height:1.9}
.fci-t .sortnote{font-size:.74rem;margin-left:auto;white-space:nowrap}
.fci-t .bighead h4{white-space:nowrap}
.fci-t .bighead .gcount{margin-left:auto;white-space:nowrap}
.fci-t .bighead .sortnote + .gcount{margin-left:9px}
.fci-t table.big td{border-bottom:1px solid var(--rule);font-size:.82rem;padding:9px 14px;vertical-align:middle}
.fci-t table.big tbody tr:hover{background:var(--soft)}
.fci-t table.big .pn{font-weight:700;white-space:nowrap}
.fci-t table.big .mono{font-variant-numeric:tabular-nums;white-space:nowrap}
.fci-t .rowlink{cursor:pointer}
.fci-t .shiplink{border-bottom:1px solid rgba(184,102,0,.35);color:var(--or-d);font-weight:700}
.fci-t tr:hover .shiplink{border-bottom-color:var(--or-d)}
.fci-t .na{color:var(--faint);font-style:italic}
.fci-t .flash,
.fci-t .flash > summary,
.fci-t .flash > td{animation:flashbg 1.8s ease}

@keyframes flashbg{0%,35%{background:var(--am-bg)}100%{background:transparent}}.fci-t .loading{align-items:center;color:var(--faint);display:flex;font-size:.78rem;font-weight:600;gap:9px;justify-content:center;padding:16px}
.fci-t .spin{animation:sp .7s linear infinite;border:2px solid var(--bd);border-radius:50%;border-top-color:var(--or);height:14px;width:14px}

@keyframes sp{to{transform:rotate(360deg)}}.fci-t .empty{color:var(--mut);font-size:.86rem;font-weight:600;padding:24px 4px;text-align:center}
.fci-t .endcap{color:var(--faint);font-size:.75rem;padding:12px;text-align:center}
.fci-t .stack{display:grid;gap:10px}
.fci-t .card{background:var(--card);border:1px solid var(--bd);border-radius:9px;box-shadow:var(--sh);overflow:hidden}
.fci-t .card-h{align-items:center;border-bottom:1px solid var(--rule);display:flex;gap:9px;justify-content:space-between;padding:10px 14px}
.fci-t .card-h h4{align-items:center;display:flex;font-size:.79rem;font-weight:700;gap:8px;margin:0}
.fci-t .card-h h4 svg{fill:none;height:15px;stroke:var(--or-d);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7;width:15px}
.fci-t .grid6{display:grid;grid-template-columns:repeat(3,1fr);list-style:none;margin:0;padding:0}
.fci-t .grid6 > li{border-bottom:1px solid var(--rule);border-right:1px solid var(--rule);display:grid;gap:2px;padding:10px 14px}
.fci-t .grid6 > li:nth-child(3n){border-right:0}
.fci-t .grid6 > li:nth-child(n+4){border-bottom:0}
.fci-t .grid6 .k{color:var(--mut);font-size:.68rem;font-weight:600}
.fci-t .grid6 .v{font-size:.84rem;font-weight:700;line-height:1.35;overflow-wrap:anywhere}
.fci-t .grid6 .v a{border-bottom:1px solid rgba(184,102,0,.35);color:var(--or-d);text-decoration:none}
.fci-t .grid6 .v.na{color:var(--faint);font-weight:600}
.fci-t .pbar{border-bottom:1px solid var(--rule);padding:13px 14px}
.fci-t .pbar-track{background:var(--bar);border-radius:99px;height:5px;overflow:hidden}
.fci-t .pbar-fill{border-radius:99px;height:100%}
.fci-t .stages{display:grid;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}
.fci-t .stages li{align-items:center;border-bottom:1px solid var(--rule);border-right:1px solid var(--rule);box-shadow:inset 3px 0 0 transparent;display:flex;gap:10px;padding:9px 14px}
.fci-t .stages li:nth-child(2n){border-right:0}
.fci-t .stages li:nth-child(n+5){border-bottom:0}
.fci-t .stages li.cur{box-shadow:inset 3px 0 0 var(--am);background:var(--am-bg)}
.fci-t .stages li.cur.gn{box-shadow:inset 3px 0 0 var(--gn);background:var(--gn-bg)}
.fci-t .stages li.cur.rd{box-shadow:inset 3px 0 0 var(--rd);background:var(--rd-bg)}
.fci-t .stages .dot{background:var(--card);border:2px solid var(--bd);border-radius:50%;display:grid;flex:none;height:17px;place-items:center;width:17px}
.fci-t .stages .dot svg{fill:none;height:9px;opacity:0;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-width:3.4;width:9px}
.fci-t .stages li.done .dot{background:#aeb8c5;border-color:#aeb8c5}
.fci-t .stages li.done .dot svg{opacity:1}
.fci-t .stages li.cur .dot{background:var(--am);border-color:var(--am)}
.fci-t .stages li.cur.gn .dot{background:var(--gn);border-color:var(--gn)}
.fci-t .stages li.cur.gn .dot svg{opacity:1}
.fci-t .stages li.cur.rd .dot{background:var(--rd);border-color:var(--rd)}
.fci-t .stages .tx b{display:block;font-size:.79rem;font-weight:700;line-height:1.3}
.fci-t .stages li.done .tx b{color:var(--mut);font-weight:600}
.fci-t .stages li.todo .tx b{color:var(--faint);font-weight:600}
.fci-t .stages li.cur .tx b{color:var(--am)}
.fci-t .stages li.cur.gn .tx b{color:var(--gn)}
.fci-t .stages li.cur.rd .tx b{color:var(--rd)}
.fci-t .stages .tx time{color:var(--faint);display:block;font-size:.69rem;font-variant-numeric:tabular-nums}
.fci-t .stages .tx em{color:var(--rd);display:block;font-size:.69rem;font-style:normal;font-weight:700}
.fci-t .msg{background:var(--card);border:1px solid var(--bd);border-left:3px solid var(--or);border-radius:0 9px 9px 0;font-size:.88rem;font-weight:600;padding:16px 19px}
.fci-t .panel{transition:opacity .16s}
.fci-t .panel.busy{opacity:.35}
.fci-t code{background:rgba(127,127,127,.14);border-radius:4px;font-size:.85em;padding:2px 6px}
.fci-t .chg{border-collapse:collapse;font-size:.88rem;width:100%}
.fci-t .chg td{border-bottom:1px solid var(--bd);padding:11px 12px;vertical-align:top}
.fci-t .chg td:first-child{color:var(--mut);font-weight:600;white-space:nowrap;width:1%}
.fci-t .chg tr:last-child td{border-bottom:0}
.fci-t .appbody{padding:11px 11px 13px}
.fci-t .hcard{margin-bottom:9px;padding:10px 12px}
.fci-t .lgw{--lgh:27px;--lgw:64px}
.fci-t .hcard .ttl h3{font-size:.98rem}
.fci-t .prof{margin-bottom:8px;padding:10px 12px}
.fci-t .av{font-size:.8rem;height:38px;width:38px}
.fci-t .prof .nm h3{font-size:1.04rem}
.fci-t .stats{gap:7px;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));margin-bottom:9px}
.fci-t .stat{padding:7px 10px}
.fci-t .stat .k{font-size:.65rem}
.fci-t .stat .n{font-size:1.12rem}
.fci-t .toolbar{gap:7px;margin-bottom:8px}
.fci-t .grp{margin-bottom:7px}
.fci-t .grp > summary{gap:8px;padding:8px 12px}
.fci-t .gname{font-size:.75rem}
.fci-t .gcount{font-size:.67rem;padding:2px 8px}
.fci-t .scols{padding-top:6px;padding-bottom:6px}
.fci-t .idcell{gap:8px}
.fci-t .ic{height:25px;width:25px;border-radius:6px}
.fci-t .ic svg{height:13px;width:13px}
.fci-t .idcell .tx b{font-size:.79rem}
.fci-t .idcell .tx span{font-size:.68rem}
.fci-t .cdim{font-size:.79rem}
.fci-t .cnum{font-size:.77rem}
.fci-t .chip{font-size:.65rem;padding:2px 8px}
.fci-t .srow-body{padding:9px 12px 11px}
.fci-t .mini td{padding:6px 10px 6px 0;font-size:.8rem}
.fci-t table.big td{padding:7px 12px;font-size:.8rem}
.fci-t table.big thead th{padding:0}
.fci-t table.big thead th.plain{padding:7px 12px}
.fci-t table.big .sortbtn{padding:7px 12px}
.fci-t .bighead{padding:9px 12px}
.fci-t .card-h{padding:9px 12px}
.fci-t .grid6 > li{padding:8px 12px}
.fci-t .stages li{padding:8px 12px}
.fci-t .pbar{padding:11px 12px}
.fci-t .stack{gap:8px}
.fci-t .loading{padding:12px}
.fci-t .endcap{padding:9px}


@media (max-width:880px){
.fci-t .grid6{grid-template-columns:repeat(2,1fr)}
.fci-t .grid6 > li{border-right:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.fci-t .grid6 > li:nth-child(2n){border-right:0}
.fci-t .grid6 > li:nth-child(n+5){border-bottom:0}
}

@media (max-width:760px){
.fci-t .scols{display:none}
.fci-t .srow > summary{grid-template-columns:1fr 16px;gap:0 8px;padding:4px 12px 10px}
.fci-t .srow > summary .idcell{align-items:center;grid-column:1;grid-row:1;min-height:44px}
.fci-t .srow > summary .chev{align-self:center;grid-column:2;grid-row:1}
.fci-t .metawrap{align-items:center;border-top:1px solid var(--rule);display:grid;gap:8px;
    grid-column:1/-1;grid-row:2;grid-template-columns:minmax(0,1fr) minmax(0,.82fr) minmax(0,1.38fr);
    min-height:36px;padding-top:2px}
.fci-t .metawrap > *{min-width:0;max-width:100%}
.fci-t .metawrap .cdim{justify-self:start;text-align:left}
.fci-t .metawrap .cnum{justify-self:center;text-align:center}
.fci-t .metawrap .cst{justify-self:end;text-align:right}
.fci-t .align-b .metawrap .cnum{justify-self:start;text-align:left}
.fci-t .align-c .metawrap .cnum{justify-self:end;text-align:right}
.fci-t .metawrap .cdim,
.fci-t .metawrap .cnum{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fci-t .metawrap .cdim::after,
.fci-t .metawrap .cnum::after{content:none}
.fci-t .metawrap .chip{line-height:1.3;text-align:center;white-space:normal}
.fci-t .srow > summary .pb{align-items:center;grid-column:1/-1;grid-row:3;min-height:30px}
.fci-t .srow > summary .pb .pct{width:34px}
}
.fci-t .bigwrap .tsc{position:relative}
.fci-t table.big td:first-child,
.fci-t table.big thead th:first-child{
  background:var(--card);left:0;position:sticky;z-index:1}
.fci-t table.big thead th:first-child{background:var(--soft);z-index:3}
.fci-t table.big tbody tr:hover td:first-child{background:var(--soft)}
.fci-t table.big td:first-child::after,
.fci-t table.big thead th:first-child::after{
  bottom:0;box-shadow:6px 0 8px -6px rgba(16,24,40,.25);content:"";
  pointer-events:none;position:absolute;right:-6px;top:0;width:6px}

@media (min-width:820px){
.fci-t table.big td:first-child::after,
.fci-t table.big thead th:first-child::after{display:none}
}

@media (max-width:700px){
.fci-t table.big{min-width:780px}
.fci-t table.big td,
.fci-t table.big .sortbtn,
.fci-t table.big thead th.plain{padding-left:11px;padding-right:11px}
.fci-t table.big td:nth-child(2){color:var(--mut)}
}


@media (max-width:470px){
.fci-t .metawrap{gap:5px}
.fci-t .metawrap .chip{font-size:.61rem;padding:2px 7px}
.fci-t .metawrap .cdim{font-size:.74rem}
.fci-t .metawrap .cnum{font-size:.72rem}
}

@media (max-width:600px){
.fci-t .appbody{padding:13px 12px 16px}
.fci-t .grid6,
.fci-t .stages{grid-template-columns:1fr}
.fci-t .grid6 > li,
.fci-t .stages li{border-right:0;border-bottom:1px solid var(--rule)}
.fci-t .grid6 > li:last-child,
.fci-t .stages li:last-child{border-bottom:0}
.fci-t .hcard .right{justify-content:flex-start}
.fci-t .chg td:first-child{white-space:normal}
}
.fci-t .dl{align-items:center;background:var(--card);border:1px solid var(--bd);border-radius:8px;color:var(--fg);
    cursor:pointer;display:inline-flex;font:700 .74rem "Noto Sans",sans-serif;gap:6px;padding:6px 11px;white-space:nowrap}
.fci-t .dl:hover{background:var(--soft);border-color:var(--or);color:var(--or-d)}
.fci-t .dl svg{fill:none;height:14px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;width:14px}
.fci-t .bighead .dl{margin-left:2px}
.fci-t .card-h .dl{margin:-3px 0}
.fci-t .dhead{align-items:center;display:flex;gap:10px;justify-content:space-between;margin:0 0 9px}
.fci-t .dhead .crumb{margin:0}
.fci-t .prhead{display:none}

@media (max-width:600px){
.fci-t .bighead{flex-wrap:wrap}
.fci-t .dl span{display:none}
.fci-t .dl{padding:6px 9px}
}


@media print{

  @page{size:A4;margin:12mm}.fci-t{--pg:#fff;--fg:#1b2430;--mut:#5f6d7c;--faint:#8d9aa8;--card:#fff;--bd:#dbe2e8;
        --rule:#eef1f4;--soft:#f7f9fb;--bar:#e9edf1;--am:#b45309;--gn:#047857;--rd:#b42318;
        --am-bg:#fff8ec;--gn-bg:#edfaf3;--rd-bg:#fdf0ee;--sh:none;
        --fill-am:#FFA633;--fill-gn:#047857;--fill-rd:#b42318}
.fci-t *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
.fci-t .no-print{display:none!important}
.fci-t{background:none!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:visible!important}
.fci-t .appbody{padding:0!important}
.fci-t .prhead{align-items:center;background:var(--card);border:1px solid var(--bd);border-radius:11px;
          display:flex!important;gap:14px;justify-content:space-between;margin:0 0 10px;padding:12px 15px}
.fci-t .prhead .pb{align-items:center;display:flex;gap:12px}
.fci-t .prhead .lg{display:block;height:30px;width:auto}
.fci-t .lg-l{display:block!important}
.fci-t .prhead .div{background:var(--bd);flex:none;height:26px;width:1px}
.fci-t .prhead h1{color:var(--fg);font-family:Alata,sans-serif;font-size:1.04rem;font-weight:400;line-height:1.2;margin:0}
.fci-t .prhead h1 span{color:var(--faint);display:block;font-family:"Noto Sans",sans-serif;font-size:.72rem;font-weight:600}
.fci-t .prhead .pm{color:var(--mut);font-size:.71rem;line-height:1.55;text-align:right}
.fci-t .prhead .pm b{color:var(--fg);display:block;font-size:.9rem;letter-spacing:.02em}
.fci-t .card{box-shadow:none!important;break-inside:avoid}
.fci-t .tsc{overflow:visible!important}
.fci-t thead{display:table-header-group}
.fci-t tr{break-inside:avoid}
}

/* Stage lines with no timestamp behind them yet. Until the Events log has a
   few weeks of history, only the current stage can carry a real time, so the
   others say which kind of blank they are rather than showing nothing. */
.fci-t .stages .pend{color:var(--faint);display:block;font-size:.74rem;font-style:italic}
.fci-t .stages .todo .pend{color:var(--faint)}

/* When the customer prints a shipment, keep the results panel and its
   ancestors and drop everything else on the page — theme header, menu,
   footer, the lookup card. Scoping this one rule to .fci-t is impossible
   by definition: it has to reach the elements outside the tracker. */
@media print{
  html,body{background:#fff!important}
  body *:not(:has(#fci-panel)):not(#fci-panel):not(#fci-panel *){display:none!important}
  #fci-panel{margin:0!important;padding:0!important}
  .fci-t{border:0!important;background:none!important;box-shadow:none!important}
  .fci-t .appbody{padding:0!important}
  .fci-t .crumb,.fci-t .no-print{display:none!important}
}

/* ---------------------------------------------------------------------
   Impreza push-back.
   Three theme rules out-specify the ones above and reach inside the
   tracker: it forces uppercase, its own face and a larger size onto submit
   buttons via button[type="submit"]:not(.w-btn), and an inherited uppercase
   onto the status chips. These are the only properties it wins, so they are
   the only ones forced back. Verified against the live page rather than
   guessed at.
   --------------------------------------------------------------------- */
.fci-t button.btn,
.fci-t .btn{
  font:700 .79rem "Noto Sans",Arial,sans-serif !important;
  letter-spacing:normal !important;
  text-transform:none !important;
}
.fci-t .chip,
.fci-t .cst .chip{text-transform:none !important}

/* ---------------------------------------------------------------------
   Typography and column alignment, after looking at it on the live site.

   1. Impreza loads Noto Sans at 400 and 700 only. Everything the design
      asks for at 600 was therefore resolving *up* to 700, which is why the
      small labels read heavy and slightly smeared while the Alata title
      looked weak beside them. The plugin now loads its own 600.

   2. The description column is lined up with the column above it: with
      Destination in the shipment list, and with Air waybill / Est. arrival
      on a shipment page. Both are worked out from the grid either side of
      it rather than eyeballed, so they hold as the container resizes.
   --------------------------------------------------------------------- */

/* A title that has to hold its own next to 700-weight controls. Alata ships
   in one weight, so this is size and fit rather than weight. */
.fci-t .hcard .ttl h3{font-size:1.2rem;letter-spacing:-.015em}

/* Shipment page: No + Part number add up to exactly the width of one column
   of the information grid above, so the description starts under Air waybill
   and Est. arrival. The widths are inline on the <th> in both renderers,
   hence !important. The grid drops to two columns at 880px and one at 600px,
   so the target moves with it. */
.fci-t .card table.big{table-layout:fixed}
.fci-t .card table.big thead th:first-child{width:4.5% !important}
.fci-t .card table.big thead th:nth-child(2){width:28.833% !important}

@media (max-width:880px){
  .fci-t .card table.big thead th:nth-child(2){width:45.5% !important}
}

@media (max-width:600px){
  /* One column above means nothing to line up with. */
  .fci-t .card table.big{table-layout:auto}
  .fci-t .card table.big thead th:first-child,
  .fci-t .card table.big thead th:nth-child(2){width:auto !important}
}

/* Expanded shipment row: line the description up under Destination.
   The parts table is given the same grid as the row above it. Both the row
   summary and .srow-body are padded 12px, so their content boxes start at
   the same x and are the same width; reusing the template therefore lands
   the second column on exactly the same pixel at every width, with no
   percentage to drift. Below 760px the row restacks into three bands and
   there is nothing above to line up with, so it goes back to a table. */
.fci-t .srow-body .mini,
.fci-t .srow-body .mini thead,
.fci-t .srow-body .mini tbody{display:block}
.fci-t .srow-body .mini tr{
  align-items:baseline;
  display:grid;
  gap:10px;
  grid-template-columns:minmax(160px,1.5fr) minmax(100px,1fr) 92px 144px 120px 16px;
}
.fci-t .srow-body .mini th:nth-child(2),
.fci-t .srow-body .mini td:nth-child(2){grid-column:2 / -1}
.fci-t .srow-body .mini th,
.fci-t .srow-body .mini td{padding-left:0;padding-right:0}

@media (max-width:760px){
  .fci-t .srow-body .mini,
  .fci-t .srow-body .mini thead,
  .fci-t .srow-body .mini tbody{display:table}
  .fci-t .srow-body .mini thead{display:table-header-group}
  .fci-t .srow-body .mini tbody{display:table-row-group}
  .fci-t .srow-body .mini tr{display:table-row}
  .fci-t .srow-body .mini th,
  .fci-t .srow-body .mini td{display:table-cell;padding-right:10px}
  .fci-t .srow-body .mini th:last-child,
  .fci-t .srow-body .mini td:last-child{padding-right:0}
}

/* ---------------------------------------------------------------------
   More Impreza push-back, measured off the live page rather than guessed.

   The search field is a bordered .fld wrapper with a bare <input> inside.
   The theme was styling that input as a standalone form control: 43.86px
   tall inside a 42px wrapper, its own 4.4px corner radius inside a 9px one,
   its own 14.6px padding on top of the wrapper's 13px, and a drop shadow.
   That is the second box you can see poking out of the first.

   The button was the same story: the theme was overriding the near-black
   label the design specifies with white, flattening the corners to 2.7px
   and adding a shadow.
   --------------------------------------------------------------------- */
.fci-t .fld input{
  border-radius:0 !important;
  box-shadow:none !important;
  height:auto !important;
  line-height:1.3 !important;
  min-height:0 !important;
  padding:0 !important;
}
.fci-t .fld input:focus{box-shadow:none !important;outline:none !important}

.fci-t button.btn,
.fci-t .btn{
  background:var(--or) !important;
  border-radius:9px !important;
  box-shadow:none !important;
  color:#141922 !important;
  height:42px !important;
  padding:0 18px !important;
}
.fci-t button.btn:hover,
.fci-t .btn:hover{background:var(--or-d) !important;color:#fff !important}

/* HANDOFF is explicit that placeholders are light grey and italic. The rule
   lived on a bare ::placeholder selector in the mockup and was dropped along
   with the demo page chrome when the stylesheet was scoped. Restored, and
   scoped this time. */
.fci-t ::placeholder{color:var(--faint);font-style:italic;font-weight:400;opacity:.72}
.fci-t input::placeholder{text-transform:none}

/* ---------------------------------------------------------------------
   Printing in black and white.

   Background colours are a setting in the print dialogue ("Background
   graphics") and it is off by default, which is why the progress bar, the
   highlighted stage and the filled dots all came out blank on the first
   real PDF. Rather than tell customers to change a browser setting, nothing
   in the printed document depends on a fill any more: borders, type weight
   and words carry the meaning, and colour is a bonus when it happens to be
   switched on. That is also the right call for a document that will be
   printed, filed, photocopied and faxed.
   --------------------------------------------------------------------- */
@media print{
  /* A bar drawn with a border prints; a bar drawn with a background does not. */
  .fci-t .pbar-track{background:none !important;border:1px solid #b9c2cc;height:9px}
  .fci-t .pbar-fill{background:none !important;border-top:7px solid #1b2430;height:0}

  /* The current stage is marked by a rule down its left edge instead of a
     tinted band. Every row carries a transparent one so nothing shifts. */
  .fci-t .stages li{border-left:3px solid transparent;box-shadow:none !important}
  .fci-t .stages li.cur,
  .fci-t .stages li.cur.gn,
  .fci-t .stages li.cur.rd{background:none !important;border-left-color:#1b2430}

  /* Dots were a white tick on a coloured fill, so without the fill they were
     empty rings. Now: a ring for everything, a dark tick where it applies. */
  .fci-t .stages .dot{background:none !important;border-color:#8d9aa8}
  .fci-t .stages li.done .dot,
  .fci-t .stages li.cur .dot{background:none !important;border-color:#1b2430}
  .fci-t .stages li.done .dot svg,
  .fci-t .stages li.cur .dot svg{opacity:1;stroke:#1b2430}

  /* Status chips keep their outline so they still read as a label. */
  .fci-t .chip{background:none !important;border-width:1px;font-weight:700}

  /* Table headers lose their grey band, so give them a rule instead. */
  .fci-t table.big thead th{background:none !important;border-bottom:1.5px solid #1b2430}
  .fci-t .srow-body{background:none !important}
}

/* The hover state was a big jump: brand orange to #b86600 with the label
   flipping to white. It read as a different button rather than the same one
   under the cursor, and the dark brown-orange looked muddy on a light card.
   A modest darkening with the label left alone keeps it the same button. */
.fci-t button.btn:hover,
.fci-t .btn:hover{background:#F2951C !important;color:#141922 !important}
.fci-t button.btn:active,
.fci-t .btn:active{background:#E68A15 !important;color:#141922 !important}

/* ---------------------------------------------------------------------
   Missing cell rules — a specificity bug, not a print bug.

   The base layout strips the bottom border off the final row with
   `.grid6 > li:nth-child(n+4)`. That selector carries a pseudo-class, so it
   out-specifies the plain `.grid6 > li` that re-adds the border inside the
   narrower breakpoints. At two columns the fourth cell kept losing its
   bottom rule — Destination on a shipment page — and at one column every
   cell from the fourth down did. The stage list had the same fault.

   Restated here at matching specificity, and later in the file, so the
   re-add wins. This shows on screen at those widths too; it was simply
   easier to see on paper, where A4 forces the two-column layout.
   --------------------------------------------------------------------- */
@media (max-width:880px){
  .fci-t .grid6 > li:nth-child(n+1){
    border-bottom:1px solid var(--rule);
    border-right:1px solid var(--rule);
  }
  .fci-t .grid6 > li:nth-child(2n){border-right:0}
  .fci-t .grid6 > li:nth-child(n+5){border-bottom:0}
}

@media (max-width:600px){
  .fci-t .grid6 > li:nth-child(n+1),
  .fci-t .stages li:nth-child(n+1){
    border-bottom:1px solid var(--rule);
    border-right:0;
  }
  .fci-t .grid6 > li:last-child,
  .fci-t .stages li:last-child{border-bottom:0}
}

@media print{
  /* On paper the parts table sits directly under an information grid that
     does have column rules, and without any of its own it reads as loose
     text rather than a table. Screen keeps the approved lighter treatment. */
  .fci-t .card table.big thead th + th,
  .fci-t .card table.big td + td{border-left:1px solid #dfe4ea}
}

/* ---------------------------------------------------------------------
   Letterhead alignment.

   1. The two halves were centred against each other, and they are different
      heights: two lines on the left, three on the right. Centring guarantees
      that nothing lines up. Aligned to the top instead, so the company name
      and the tracking ID share the first line, which is what a letterhead
      is meant to do.

   2. The rule between the mark and the title was drawn with a background,
      and background fills do not print. Redrawn as a border.
   --------------------------------------------------------------------- */
@media print{
  .fci-t .prhead{align-items:flex-start !important}
  .fci-t .prhead .div{
    background:none !important;
    border-left:1px solid #cdd6df;
    height:30px;
    width:0;
  }
  /* The mark stays centred against the two-line lockup beside it. */
  .fci-t .prhead .pb{align-items:center}
}

/* ---------------------------------------------------------------------
   The theme reaches into the letterhead heading.

   Impreza styles bare h1 at 4.4rem with its own line-height, from a <style>
   block it writes into the page head. Our print rule beat it on font-size,
   but nothing was pinning the line box of the second line, so the heading
   came out 61px tall instead of 38px. The mark is centred against that
   heading, so it was dragged down with it, and the whole left lockup sat
   below the tracking ID on the right. Measured in the live cascade, not
   locally, because locally there is no theme to fight.

   With these, the title and the tracking ID sit on the same line to within
   a tenth of a pixel.
   --------------------------------------------------------------------- */
@media print{
  .fci-t .prhead h1{
    font-size:1.04rem !important;
    line-height:1.25 !important;
    margin:0 !important;
    padding:0 !important;
  }
  .fci-t .prhead h1 span{
    font-size:.72rem !important;
    letter-spacing:normal !important;
    line-height:1.35 !important;
    margin:0 !important;
    padding:0 !important;
  }
  .fci-t .prhead .pm{line-height:1.45 !important}
  .fci-t .prhead .pm b{font-size:.9rem !important;line-height:1.45 !important;margin:0 !important}
}

/* ------------------------------------------------------------------ */
/* Phase 1 - request stage and closed rows                            */
/* Appended, so nothing above is disturbed. "gy" is the fourth tone:  */
/* a dead-end request is not a failure, it is simply finished.        */
/* ------------------------------------------------------------------ */
.fci-t{--gy:#5b6675;--gy-bg:#f1f3f6;--gy-bd:#d7dce4;--fill-gy:#98a2b3}
.fci-t .chip.gy{background:var(--gy-bg);border:1px solid var(--gy-bd);color:var(--gy)}
.fci-t .gname.gy{color:var(--gy)}
.fci-t .stat.gy .n{color:var(--gy)}
.fci-t .stages li.cur.gy .dot{background:var(--gy);border-color:var(--gy)}
.fci-t .closed{align-items:flex-start;background:var(--gy-bg);border:1px solid var(--gy-bd);
  border-radius:10px;display:flex;flex-direction:column;gap:4px;padding:14px 16px}
.fci-t .closed b{color:var(--gy);font-size:.9rem;font-weight:800;letter-spacing:.02em}
.fci-t .closed span{color:var(--mut);font-size:.8rem;line-height:1.5}

/* Phase 3 - documents card */
.fci-t .docs{display:flex;flex-direction:column;gap:2px;list-style:none;margin:0;padding:0}
.fci-t .docs li{align-items:center;border-bottom:1px solid var(--gy-bd);display:flex;flex-wrap:wrap;
  gap:10px;padding:10px 2px}
.fci-t .docs li:last-child{border-bottom:0}
.fci-t .docs .dt{background:var(--am-bg);border:1px solid var(--am-bd);border-radius:999px;color:var(--am);
  font-size:.67rem;font-weight:700;padding:3px 9px;white-space:nowrap}
.fci-t .docs a{font-size:.84rem;font-weight:600;word-break:break-all}
.fci-t .docs .dm{color:var(--mut);font-size:.75rem;margin-left:auto;white-space:nowrap}

/* Phase 2 - sign in and the account bar */
.fci-t .loginwrap{margin:0 auto;max-width:420px;padding:34px 6px 42px;text-align:left}
.fci-t .loginwrap h3{font-size:1.15rem;margin:0 0 6px}
.fci-t .loginwrap .sub{color:var(--mut);font-size:.82rem;line-height:1.55;margin:0 0 18px}
.fci-t .loginerr{background:var(--rd-bg);border:1px solid var(--rd-bd);border-radius:8px;color:var(--rd);
  font-size:.8rem;font-weight:600;margin-bottom:14px;padding:10px 12px}
.fci-t .loginform{display:flex;flex-direction:column;gap:10px}
.fci-t .loginform .fld input{width:100%}
.fci-t .loginform .btn{margin-top:4px;width:100%}
.fci-t .remember{align-items:center;color:var(--mut);display:flex;font-size:.8rem;gap:8px;margin:2px 0}
.fci-t .remember input{margin:0}
.fci-t .loginhelp{color:var(--mut);font-size:.75rem;line-height:1.55;margin:18px 0 0}
.fci-t .acctbar{align-items:center;display:flex;gap:12px;justify-content:flex-end;margin:0 0 8px}
.fci-t .acctbar .who{color:var(--mut);font-size:.76rem}
.fci-t .acctbar button.lnk{background:none;border:0;cursor:pointer;font:inherit;font-size:.76rem;font-weight:700;padding:0}

/* Phase 5 - requisition form */
.fci-t .reqcta{display:flex;justify-content:flex-end;margin:0 0 10px}
.fci-t .reqwrap{padding:4px 2px 10px}
.fci-t .reqwrap h3{font-size:1.1rem;margin:0 0 4px}
.fci-t .reqwrap .sub{color:var(--mut);font-size:.82rem;margin:0 0 16px}
.fci-t .reqdone{background:var(--gn-bg);border:1px solid var(--gn-bd);border-radius:10px;display:flex;
  flex-direction:column;gap:4px;margin-bottom:16px;padding:14px 16px}
.fci-t .reqdone b{color:var(--gn);font-size:.9rem}
.fci-t .reqdone span{color:var(--mut);font-size:.8rem;line-height:1.55}
.fci-t .reqform label{display:flex;flex-direction:column;gap:4px}
.fci-t .reqform label > span{color:var(--mut);font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.fci-t .reqform input,.fci-t .reqform select,.fci-t .reqform textarea{border:1px solid var(--gy-bd);
  border-radius:8px;font:inherit;font-size:.85rem;padding:8px 10px;width:100%}
.fci-t .reqhead{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));margin-bottom:18px}
.fci-t .reqhead .wide,.fci-t .reqform > label.wide{grid-column:1/-1}
.fci-t .reqnote{color:var(--muted);font-size:13px;margin:-8px 0 18px}
.fci-t .reqline{background:var(--gy-bg);border:1px solid var(--gy-bd);border-radius:10px;display:grid;
  gap:10px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:10px;padding:14px}
.fci-t .reqline .wide{grid-column:span 2}
.fci-t .reqline .narrow{max-width:110px}
.fci-t .reqadd{margin:6px 0 18px}
.fci-t .reqadd button{background:none;border:0;cursor:pointer;font:inherit;font-size:.82rem;font-weight:700;padding:0}
.fci-t .reqform > label.wide{margin-bottom:16px}
.fci-t .reqform > .btn{width:100%}


/* ==========================================================================
   Added 06 Sep 2026. APPEND ONLY. Everything below is additive; nothing above
   this line is touched. An earlier edit cut a block out of the middle of this
   file by matching two comment markers, one of which had since moved to the
   end, and took 24KB of the plugin's own CSS with it.
   ========================================================================== */
.fci-t .fci-topbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin:0 0 18px;position:relative;z-index:30}
.fci-t .fci-topbar .reqcta{margin:0}
.fci-t .fci-topbar .reqcta .btn{display:inline-flex;align-items:center;height:40px;padding:0 18px;border-radius:8px;line-height:1;font-size:14px;font-weight:700;box-shadow:none}
.fci-t .fci-topbar .fci-home{display:inline-flex;align-items:center;gap:8px;margin-right:auto;height:40px;padding:0 15px 0 12px;border:1px solid #e0e5ec;border-radius:8px;background:#fff!important;color:#3d4757!important;font-size:14px;font-weight:600;line-height:1;text-decoration:none;transition:.15s}
.fci-t .fci-topbar .fci-home:hover{border-color:#cbd3de;background:#f8fafc!important;color:#1b2432!important}
.fci-t .fci-topbar .fci-home i{width:8px;height:8px;border-left:2px solid #9aa5b4;border-bottom:2px solid #9aa5b4;transform:rotate(45deg)}
.fci-t .fci-acct{position:relative}
.fci-t .fci-acct-btn{display:inline-flex;align-items:center;gap:9px;height:40px;padding:0 12px 0 6px;border:1px solid #e0e5ec;border-radius:999px;background:#fff!important;color:#1b2432!important;font-size:14px;font-weight:600;line-height:1;cursor:pointer;box-shadow:none;transition:.15s}
.fci-t .fci-acct-btn:hover{border-color:#cbd3de;background:#f8fafc!important}
.fci-t .fci-acct-btn .fci-avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#fdf0dc;color:#b8770f;font-size:11px;font-weight:800;letter-spacing:.04em}
.fci-t .fci-acct-btn .fci-caret{width:9px;height:9px;border-right:2px solid #9aa5b4;border-bottom:2px solid #9aa5b4;transform:rotate(45deg) translate(-2px,-2px);transition:.15s}
.fci-t .fci-acct.is-open .fci-acct-btn{border-color:var(--or);box-shadow:0 0 0 3px rgba(245,166,35,.17)}
.fci-t .fci-acct.is-open .fci-caret{transform:rotate(-135deg) translate(-3px,-3px)}
.fci-t .fci-acct-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:214px;padding:6px;background:#fff;border:1px solid #e4e9ef;border-radius:11px;box-shadow:0 12px 30px rgba(23,33,48,.13);opacity:0;visibility:hidden;transform:translateY(-6px);transition:.14s;text-align:left}
.fci-t .fci-acct.is-open .fci-acct-menu{opacity:1;visibility:visible;transform:translateY(0)}
.fci-t .fci-acct-head{padding:9px 11px 10px;border-bottom:1px solid #eef1f5;margin-bottom:5px}
.fci-t .fci-acct-head span{display:block;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#9aa5b4}
.fci-t .fci-acct-head strong{display:block;margin-top:3px;font-size:14px;color:#1b2432}
.fci-t .fci-acct-menu a{display:block;width:100%;box-sizing:border-box;padding:9px 11px;border-radius:7px;color:#3d4757!important;font-size:14px;font-weight:600;line-height:1.2;text-decoration:none}
.fci-t .fci-acct-menu a:hover{background:#f4f7fa;color:#1b2432!important}
.fci-t .fci-acct-menu .acctbar{margin:5px 0 0;padding-top:5px;border-top:1px solid #eef1f5}
@media(max-width:600px){.fci-t .fci-topbar .fci-home span{display:none}.fci-t .fci-acct-btn .fci-acct-name{display:none}.fci-t .fci-acct-btn{padding:0 8px}}
.fci-t .panel.fci-out-fwd{opacity:0;transform:translateX(-14px);transition:opacity .13s ease-in,transform .13s ease-in}
.fci-t .panel.fci-out-back{opacity:0;transform:translateX(14px);transition:opacity .13s ease-in,transform .13s ease-in}
.fci-t .panel.fci-in-fwd{animation:fciInFwd .17s ease-out both}
.fci-t .panel.fci-in-back{animation:fciInBack .17s ease-out both}
@keyframes fciInFwd{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
@keyframes fciInBack{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:none}}
.fci-t .appbody{position:relative}
.fci-t .fci-wait-veil{position:absolute;left:0;right:0;background:rgba(247,249,251,.62);z-index:20;pointer-events:none}
/* Placed by script at the middle of whatever part of the panel is actually on
   screen. Pinned to the top meant a customer scrolled to the bottom of a long
   parts list never saw it. */
.fci-t .fci-wait-chip{position:absolute;left:50%;transform:translateX(-50%);width:140px;height:60px;background:#fff url(fci-logo.png) center/92px auto no-repeat;border:1px solid #e4e9ef;border-radius:12px;box-shadow:0 12px 28px rgba(23,33,48,.15);animation:fciWait 1.15s ease-in-out infinite}
@keyframes fciWait{0%,100%{opacity:.55;transform:translateY(0)}50%{opacity:1;transform:translateY(-5px)}}
.fci-t .fci-offline{display:flex;align-items:center;gap:9px;margin:0 0 12px;padding:10px 13px;border:1px solid #f3c9a0;border-left:3px solid #e08a2e;border-radius:0 8px 8px 0;background:#fdf6ec;color:#8a5416;font-size:13px;font-weight:600}
.fci-t .fci-offline b{color:#6b3f0d}
.fci-t .stats .stat.fci-click{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.fci-t .stats .stat.fci-click:hover{border-color:#c9d2de;box-shadow:0 2px 12px rgba(23,33,48,.08)}
.fci-t .stats .stat.fci-on{border-color:var(--or);box-shadow:0 0 0 3px rgba(245,166,35,.17)}
.fci-t .stats .stat.fci-zero .n{color:#b8c1cd}
.fci-t .stats .stat.fci-zero{cursor:default}
.fci-t .stats .stat.fci-alert{border-left:3px solid #d14b3d}
.fci-t .fci-filterbar{display:flex;align-items:center;gap:9px;margin:0 0 12px;font-size:13px;color:#6b7788}
.fci-t .fci-filterbar b{color:#1b2432}
.fci-t .fci-filterbar button{padding:4px 10px;border:1px solid #d9dfe7;border-radius:999px;background:#fff!important;color:#5b6675!important;font-size:12px;font-weight:700;line-height:1.4;cursor:pointer;box-shadow:none;text-transform:none;letter-spacing:0}
.fci-t .fci-back-link{display:block;max-width:660px;margin:24px auto -8px;color:#6b7788;font-size:14px;font-weight:600;text-decoration:none}
@media(prefers-reduced-motion:reduce){.fci-t .fci-wait-chip{animation:none;opacity:.9}.fci-t .panel.fci-in-fwd,.fci-t .panel.fci-in-back{animation:none}}

/* Section headers sat at bold/black, the same weight as the data underneath,
   so the eye could not tell the furniture from the tracking number. Dropped to
   medium grey. Sentence case stays: uppercase is already spoken for by field
   labels, which sit a level below this. */
.fci-t .card-h h4{font-weight:600;color:#5b6675}

/* Request parts and Track Parts were both solid orange, six centimetres apart:
   two primary actions competing. Track Parts stays solid, it is the search
   field's own action. This one goes outline. Still FCI orange, still obviously
   a button, but one solid orange per screen. */
.fci-t .fci-topbar .reqcta .btn{background:#fff!important;color:#c47f10!important;border:1px solid #f0c581!important;box-shadow:none!important}
.fci-t .fci-topbar .reqcta .btn:hover{background:#fff7ec!important;border-color:#e8b163!important;color:#a86a06!important}

/* Sign-in and reset cards: .fld carries flex:1 1 230px, which in the column
   flex .loginform becomes a 230px HEIGHT. Pin it back to a normal field. */
.fci-t .loginform .fld{flex:0 0 auto;height:42px}
/* Card copy reads centred; the fields themselves stay left aligned. */
.fci-t .loginwrap{text-align:center}
.fci-t .loginwrap .loginform{text-align:left}
.fci-t .loginwrap .loginerr{text-align:center}

/* ==========================================================================
   Added 06 Sep 2026 (evening). APPEND ONLY. Mobile fit.
   Phone screenshots showed: the app shell sat inside the theme's 24px section
   padding plus its own border and 12px padding, so content had ~40px dead
   space each side; the top bar did not wrap, so "Track Your Parts" and the
   logo were pushed off the left edge; the loading chip sat off-centre; the
   parts table was forced to 780px; requisition lines with grid-column:span 2
   overflowed a one-column grid. The top bar rules use #fci-tracker so they
   beat the inline <style> block that class-fci-pt-profile.php prints after
   this stylesheet.
   ========================================================================== */
@media (max-width:600px){
  /* App shell runs edge to edge. No outer border, no radius, no shadow. */
  #fci-tracker.fci-t{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);width:100vw;max-width:100vw;border:0;border-radius:0;box-shadow:none}
  #fci-tracker.fci-t .appbody{padding:12px 10px 18px}

  /* Top bar, two rows:
       [logo | Track Your Parts] .................. [MR v]
       [< Dashboard]              [Request parts]            */
  #fci-tracker .fci-topbar{flex-wrap:wrap;justify-content:flex-start;gap:8px;margin:0 0 12px}
  #fci-tracker .fci-topbar .ttl{flex:1 1 0;min-width:62%;order:0;gap:9px;margin:0}
  #fci-tracker .fci-topbar .ttl .lgw{--lgw:62px;--lgh:26px}
  #fci-tracker .fci-topbar .ttl .div{height:22px}
  #fci-tracker .fci-topbar .ttl > span:last-child{min-width:0}
  #fci-tracker .fci-topbar .ttl h3{font-size:1rem;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #fci-tracker .fci-topbar .fci-acct{order:1;flex:none;margin:0}
  #fci-tracker .fci-topbar .fci-gap{display:none}
  #fci-tracker .fci-topbar .fci-home{order:2;flex:1 1 0;min-width:40%;justify-content:center;margin:0;height:40px;padding:0 10px}
  #fci-tracker .fci-topbar .fci-home span{display:inline}
  #fci-tracker .fci-topbar .reqcta{order:3;flex:1 1 0;min-width:40%;margin:0}
  #fci-tracker .fci-topbar .reqcta .btn{width:100%;justify-content:center;padding:0 10px;white-space:nowrap}
  #fci-tracker .fci-acct-menu{max-width:calc(100vw - 20px)}

  /* Search card */
  #fci-tracker .hcard{padding:11px 12px}
  #fci-tracker .hcard .fci-fresh{flex:1 1 100%;margin:0}
  #fci-tracker .hcard .right{flex:1 1 100%;justify-content:flex-start}

  /* Parts table inside the shipment detail: three columns do not need 780px. */
  #fci-tracker .card table.big{min-width:0!important}
  #fci-tracker .card table.big td,
  #fci-tracker .card table.big thead th.plain{padding-left:9px;padding-right:9px}
  #fci-tracker .card table.big td:first-child::after,
  #fci-tracker .card table.big thead th:first-child::after{display:none}
  #fci-tracker .card table.big .pn{white-space:normal;word-break:break-word}

  /* Requisition form: a fixed two-column line so "span 2" has a second column
     to span, instead of spilling past the card. */
  #fci-tracker .reqhead{grid-template-columns:minmax(0,1fr)}
  #fci-tracker .reqline{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 8px;padding:12px}
  #fci-tracker .reqline .narrow{max-width:none}
  #fci-tracker .reqline label > span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #fci-tracker .reqwrap{padding:4px 0 8px}

  /* Sign-in card breathes a little less on a phone. */
  #fci-tracker .loginwrap{padding:22px 4px 28px}
}

/* Loading chip: the keyframe set transform:translateY(...) which replaced the
   translateX(-50%) on the chip, so its LEFT edge sat at the centre line on
   every width. Redeclared here, so the later @keyframes wins. */
@keyframes fciWait{0%,100%{opacity:.55;transform:translate(-50%,0)}50%{opacity:1;transform:translate(-50%,-5px)}}

/* Added 06 Sep 2026 (late). APPEND ONLY. The theme section that holds the
   tracker carries 48px of padding above and below on phones, which read as a
   white band between the site header and the app. Removed on phones only. */
@media (max-width:600px){
  @supports selector(:has(a)){
    .l-section:has(#fci-tracker.fci-t){padding-top:0!important;padding-bottom:0!important}
  }
  @supports not selector(:has(a)){
    #fci-tracker.fci-t{margin-top:-48px;margin-bottom:-48px}
  }
  #fci-tracker.fci-t .appbody{padding-top:14px}
}

/* Added 06 Sep 2026 (night). APPEND ONLY. Minimal phone layout, approved from
   the mockup. Desktop is untouched: everything is inside max-width:600px.
   The matching script block ("Phone title and swipe hint") in public.js
   rewrites the title text per page and marks the All-parts table. */
@media (max-width:600px){
  /* One brand mark per screen. The site header already shows FCI 60px above. */
  #fci-tracker .fci-topbar .ttl .lgw,
  #fci-tracker .fci-topbar .ttl .div{display:none}
  #fci-tracker .fci-topbar .ttl{min-width:0;flex:1 1 60%}
  #fci-tracker .fci-topbar .ttl > span{display:block;min-width:0}
  #fci-tracker .fci-topbar .ttl h3{font-size:1.06rem;letter-spacing:-.01em}
  #fci-tracker .fci-topbar .ttl .fci-sub{display:block;color:var(--faint);font-size:.7rem;font-weight:600;line-height:1.3;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  /* Where am I: the Request parts tab reads as current while on the form. */
  #fci-tracker .fci-topbar .reqcta .btn.fci-here{background:#fff7ec!important;border-color:#f0c581!important;color:#a86a06!important}

  /* A technician filling in a requisition is not looking up a shipment. */
  #fci-tracker .appbody:has(.reqwrap) .hcard{display:none}
  #fci-tracker .reqwrap > h3,
  #fci-tracker .reqwrap > .sub{display:none}
  #fci-tracker .reqhead{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 8px;margin-bottom:12px}
  #fci-tracker .reqhead > label.wide{grid-column:1/-1}

  /* Four tiles, not six. Shipment and part counts move into the company line. */
  #fci-tracker .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  #fci-tracker .stats .stat:nth-child(-n+2){display:none}
  #fci-tracker .stats .stat{padding:8px 4px;text-align:center}
  #fci-tracker .stats .stat .k{font-size:.62rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
  #fci-tracker .stats .stat .n{display:block;font-size:1.25rem}
  #fci-tracker .prof{padding:11px 13px}

  /* All parts: say there is more to the right, and stop saying it at the end. */
  #fci-tracker .bigwrap .tsc:not(.fci-at-end){box-shadow:inset -34px 0 26px -26px rgba(16,24,40,.32)}
  #fci-tracker .fci-swipe{display:flex;align-items:center;gap:6px;padding:7px 12px;background:var(--am-bg);border-bottom:1px solid var(--am-bd);color:var(--am);font-size:.72rem;font-weight:700}
  #fci-tracker .fci-swipe::after{content:"\27F6";font-size:.9rem}
  #fci-tracker .fci-swipe.fci-done{display:none}
}

/* Added 06 Sep 2026 (late night). APPEND ONLY. Maruf's phone review, round 3.
   1. Wide tables: an animated chevron pill in the table header instead of a
      text bar. Chevrons march right while there is more to the right, left
      once scrolled, both in the middle, plus a soft fade on the right edge.
      The old text bar and inset shadow are retired here (the earlier rules
      stay in the file, unused). Left-edge overlay was tried and dropped: the
      first column is sticky, so it sat on top of the part numbers.
   2. My details swapped into the tracker: no top bar, no search card, one
      "Back to tracker" link, so it matches the standalone page.
   3. Theme preloader (four orange squares) never shows on the tracker page.
      The FCI chip covers full loads too (script block "Round 3").
   4. Request form on phones: the part lines lose their grey box so their two
      columns sit on the same divider line as tail / serial above; every
      input is 40px, the date box included. */
#fci-tracker .fci-swipe{display:none!important}
#fci-tracker .bigwrap .tsc,
#fci-tracker .bigwrap .tsc:not(.fci-at-end){box-shadow:none!important}
#fci-tracker .fci-scrollwrap{position:relative}
#fci-tracker .fci-edge{position:absolute;top:0;bottom:0;right:0;width:34px;pointer-events:none;z-index:4;background:linear-gradient(to right,rgba(255,255,255,0),rgba(255,255,255,.9) 70%);transition:opacity .18s}
#fci-tracker .fci-edge.fci-hide{opacity:0}
#fci-tracker .fci-sw{display:inline-flex;align-items:center;gap:10px;margin-left:8px;height:22px;padding:0 9px;border:1px solid var(--am-bd);border-radius:999px;background:var(--am-bg)}
#fci-tracker .fci-sw span{display:inline-flex;align-items:center}
#fci-tracker .fci-sw i{display:block;width:8px;height:8px;border-top:2.2px solid var(--or-d);border-right:2.2px solid var(--or-d);opacity:.18;animation:fciMarch 1.05s ease-in-out infinite}
#fci-tracker .fci-sw .r i{transform:rotate(45deg);margin-left:-3px}
#fci-tracker .fci-sw .l i{transform:rotate(-135deg);margin-right:-3px}
#fci-tracker .fci-sw .r i:nth-child(2){animation-delay:.17s}
#fci-tracker .fci-sw .r i:nth-child(3){animation-delay:.34s}
#fci-tracker .fci-sw .l i:nth-child(1){animation-delay:.34s}
#fci-tracker .fci-sw .l i:nth-child(2){animation-delay:.17s}
#fci-tracker .fci-sw span.fci-hide{display:none}
#fci-tracker .fci-sw.fci-hide{display:none}
@keyframes fciMarch{0%,100%{opacity:.18}45%{opacity:1}}
@media (prefers-reduced-motion:reduce){#fci-tracker .fci-sw i{animation:none;opacity:.8}}

#fci-tracker .appbody:has(.panel .fci-pt-profile) .fci-topbar,
#fci-tracker .appbody:has(.panel .fci-pt-profile) .hcard{display:none}
#fci-tracker .panel .fci-pt-back{margin:4px auto 6px}
#fci-tracker .panel .fci-pt-profile{margin-top:12px}

.l-preloader{display:none!important}

@media (max-width:600px){
  #fci-tracker .reqline{background:none;border:0;border-top:1px solid var(--gy-bd);border-radius:0;padding:10px 0 2px;margin:0 0 6px}
  #fci-tracker .reqform input,
  #fci-tracker .reqform select{height:40px;padding:0 10px;line-height:normal}
  #fci-tracker .reqform input[type=date]{-webkit-appearance:none;appearance:none;min-height:40px;max-height:40px;display:flex;align-items:center}
  #fci-tracker .reqform textarea{padding:8px 10px}
  #fci-tracker .reqadd{margin:2px 0 14px}
  #fci-tracker .panel .fci-pt-profile{padding:18px 14px}
}

/* Added 06 Sep 2026 (round 4). APPEND ONLY. Desktop gets the same treatment
   as the phone, Maruf's call, except the FCI logo stays in the top bar on
   desktop. The matching public.js change makes the "Phone title" script run
   at every width, and the new "Frozen header" block pins the All-parts
   header row under the site header while the page scrolls. */

/* Page title + company / status line, every width. */
#fci-tracker .fci-topbar .ttl .fci-sub{display:block;color:var(--faint);font-size:.72rem;font-weight:600;line-height:1.3;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#fci-tracker .fci-topbar .ttl > span{min-width:0}
#fci-tracker .fci-topbar .reqcta .btn.fci-here{background:#fff7ec!important;border-color:#f0c581!important;color:#a86a06!important}

/* Request form: no search card, no heading, no intro sentence. */
#fci-tracker .appbody:has(.reqwrap) .hcard{display:none}
#fci-tracker .reqwrap > h3,
#fci-tracker .reqwrap > .sub{display:none}

/* Four tiles, counts in the company line, every width. */
#fci-tracker .stats .stat:nth-child(-n+2){display:none}
#fci-tracker .stats{grid-template-columns:repeat(4,minmax(0,1fr))}

/* Inputs one height, date box included. */
#fci-tracker .reqform input,
#fci-tracker .reqform select{height:40px;padding:0 10px;line-height:normal}
#fci-tracker .reqform input[type=date]{-webkit-appearance:none;appearance:none;min-height:40px;max-height:40px;display:flex;align-items:center}

/* My details inside the tracker: card as wide as the other cards. */
#fci-tracker .panel .fci-pt-profile,
#fci-tracker .panel .fci-pt-back{max-width:none}

@media (min-width:601px){
  /* Less air between the site header and the app. */
  @supports selector(:has(a)){
    .l-section:has(#fci-tracker.fci-t){padding-top:28px!important;padding-bottom:40px!important}
  }
  /* Request form on a fixed four-column grid, so the head and every part
     line share the same column edges. */
  #fci-tracker .reqhead{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
  #fci-tracker .reqhead > label.wide{grid-column:span 2}
  #fci-tracker .reqline{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;background:none;border:0;border-top:1px solid var(--gy-bd);border-radius:0;padding:12px 0 4px;margin:0 0 6px}
  #fci-tracker .reqline .wide{grid-column:span 2}
  #fci-tracker .reqline .narrow{max-width:none}
  #fci-tracker .reqline label > span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}

/* Frozen header for the All-parts table (script block "Frozen header").
   A copy of the header row, fixed under the site header, scrolled sideways
   in step with the table. Lives inside #fci-tracker so the table styles
   apply to it. */
#fci-tracker .fci-freeze{position:fixed;left:0;width:0;overflow:hidden;z-index:40;display:none;background:var(--soft);border-bottom:1px solid var(--bd);box-shadow:0 6px 14px -8px rgba(16,24,40,.25)}
#fci-tracker .fci-freeze.fci-on{display:block}
#fci-tracker .fci-freeze table.big{table-layout:fixed;margin:0}
#fci-tracker .fci-freeze table.big thead th{position:sticky;top:auto}
#fci-tracker .fci-freeze table.big thead th:first-child{left:0}

/* ==========================================================================
   Added 06 Sep 2026 (round 5). APPEND ONLY. Do not slice this file.
   1. No flash of raw pre-script markup ("Signed in as ... SIGN OUT").
   2. Dashboard / Request parts split 50/50 like every other pair of boxes.
   3. Part lines numbered "PART 1", "PART 2", ... via a CSS counter.
   4. The chevron pill becomes a real scrollbar thumb: it sits on a track at
      the same ratio as the table's scroll position, is draggable, and a tap
      runs the table to the far end. Script block "Round 5".
   ========================================================================== */

/* 1. Anti-flash. .fci-ready is written to the ROOT node by the round 5
   script (never to .panel), as soon as the top bar or the login card is in
   the DOM, with a 1500ms hard release so a script error can never leave the
   app hidden. */
#fci-tracker.fci-t:not(.fci-ready) .appbody{visibility:hidden}
#fci-tracker.fci-t:not(.fci-ready) .fci-wait-veil{visibility:visible}

/* 2. Top bar second row: two equal boxes, same 8px gutter as the form pairs. */
@media (max-width:600px){
  #fci-tracker .fci-topbar{gap:8px}
  #fci-tracker .fci-topbar .fci-home,
  #fci-tracker .fci-topbar .reqcta{flex:0 0 calc(50% - 4px);width:calc(50% - 4px);max-width:calc(50% - 4px);min-width:0;margin:0}
  #fci-tracker .fci-topbar .fci-home{height:40px;padding:0 8px;justify-content:center}
  #fci-tracker .fci-topbar .reqcta .btn{width:100%;height:40px;padding:0 8px;justify-content:center}
  #fci-tracker .fci-topbar .fci-home span,
  #fci-tracker .fci-topbar .reqcta .btn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.86rem}
}

/* 3. Numbered part lines. The counter renumbers itself when a line is added
   or removed, so nothing has to be rewritten in JS or PHP. */
#fci-tracker .reqform,
#fci-tracker #fci-reqform{counter-reset:fcipart}
#fci-tracker .reqline{counter-increment:fcipart}
#fci-tracker .reqline::before{content:"Part " counter(fcipart);grid-column:1/-1;display:block;font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--or-d);margin:0 0 4px}

/* 4. Chevron pill as a scroll thumb. Overrides the round 3 pill rules by
   coming later in the cascade at the same specificity. */
#fci-tracker .fci-sw{position:relative;display:inline-block;width:98px;height:22px;margin-left:8px;padding:0;border:1px solid var(--am-bd);border-radius:999px;background:var(--am-bg);vertical-align:middle;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;flex:none}
#fci-tracker .fci-sw .fci-thumb{position:absolute;top:-1px;left:0;height:22px;display:inline-flex;align-items:center;gap:8px;padding:0 8px;border:1px solid var(--am-bd);border-radius:999px;background:#fff;box-shadow:0 1px 3px rgba(16,24,40,.2);transition:left .16s ease}
#fci-tracker .fci-sw.fci-drag .fci-thumb{transition:none;box-shadow:0 2px 6px rgba(16,24,40,.28)}
#fci-tracker .fci-sw .fci-thumb .l,
#fci-tracker .fci-sw .fci-thumb .r{pointer-events:none}
@media (max-width:600px){
  #fci-tracker .fci-sw{width:84px}
  #fci-tracker .bighead{flex-wrap:wrap}
}

/* Round 5b. APPEND ONLY. The 50/50 split above must only apply when BOTH
   boxes are on the row. On the dashboard there is no Dashboard button, so
   Request parts has to keep the full width instead of leaving a gap. */
@media (max-width:600px){
  #fci-tracker .fci-topbar .fci-home,
  #fci-tracker .fci-topbar .reqcta{flex:1 1 0;width:auto;max-width:none}
  @supports selector(:has(a)){
    #fci-tracker .fci-topbar:has(.fci-home):has(.reqcta) .fci-home,
    #fci-tracker .fci-topbar:has(.fci-home):has(.reqcta) .reqcta{flex:0 0 calc(50% - 4px);width:calc(50% - 4px);max-width:calc(50% - 4px);min-width:0;margin:0}
  }
}

/* Round 5c. APPEND ONLY. Round 5 set min-width:0 on both boxes, which let a
   lone Dashboard button shrink to its chevron and stay on the title row.
   The original 40% floor is restored, and only dropped when both boxes are
   present and the 50/50 split is doing the sizing. */
@media (max-width:600px){
  #fci-tracker .fci-topbar .fci-home,
  #fci-tracker .fci-topbar .reqcta{min-width:40%}
  @supports selector(:has(a)){
    #fci-tracker .fci-topbar:has(.fci-home):has(.reqcta) .fci-home,
    #fci-tracker .fci-topbar:has(.fci-home):has(.reqcta) .reqcta{min-width:0}
  }
}

/* ==========================================================================
   Added 07 Sep 2026 (round 6). APPEND ONLY. Do not slice this file.
   1. Request parts button gets the AAS circle's soft amber ring and cream fill.
   2. Company name dropped from under the page title on the dashboard only.
   3. Desktop: Dashboard joins the right group instead of floating mid-bar.
   4. Phone: one visible button fills the row, two share it 50/50.
   5. Desktop app shell goes full width with 24px gutters.
   Supersedes the round 5b / 5c top bar sizing.
   ========================================================================== */

/* 1. */
#fci-tracker .fci-topbar .reqcta .btn{background:var(--am-bg);border-width:1.6px;border-color:var(--am-bd);box-shadow:0 0 0 3px rgba(240,197,129,.14)}
#fci-tracker .fci-topbar .reqcta .btn.fci-here{box-shadow:0 0 0 3px rgba(240,197,129,.24)}

/* 2. The dashboard is the only panel with .stats. Shipment pages keep their
   tracking id / status / destination line. */
@supports selector(:has(a)){
  #fci-tracker .appbody:has(.stats) .fci-topbar .ttl .fci-sub{display:none}
}

/* 3. */
@media (min-width:601px){
  #fci-tracker .fci-topbar .ttl{order:1}
  #fci-tracker .fci-topbar .fci-gap{order:2}
  #fci-tracker .fci-topbar .fci-home{order:3}
  #fci-tracker .fci-topbar .reqcta{order:4}
  #fci-tracker .fci-topbar .fci-acct{order:5}
}

/* 4. .fci-two is written to .fci-topbar by the round 6 script when BOTH boxes
   are really visible. Presence alone is not enough: the Dashboard link stays
   in the DOM with an inline display:none on the dashboard. */
@media (max-width:600px){
  #fci-tracker .fci-topbar .fci-home,
  #fci-tracker .fci-topbar .reqcta{flex:1 1 100%;width:auto;max-width:none;min-width:0;margin:0}
  #fci-tracker .fci-topbar.fci-two .fci-home,
  #fci-tracker .fci-topbar.fci-two .reqcta{flex:0 0 calc(50% - 4px);width:calc(50% - 4px);max-width:calc(50% - 4px)}
}

/* 5. The theme caps .l-section-h at 1140px. Lifted on the tracker page only,
   with 24px gutters instead of the theme's 42.5px. Done on the container, not
   with 100vw, so no horizontal scrollbar appears next to the vertical one. */
@media (min-width:601px){
  @supports selector(:has(a)){
    .l-section:has(#fci-tracker.fci-t) > .l-section-h{max-width:none!important;width:auto!important}
    .l-section:has(#fci-tracker.fci-t){padding-left:24px!important;padding-right:24px!important}
  }
}

/* Round 6b. APPEND ONLY. The round 5b rules are written with :has(), which
   outranks the plain round 6 selectors, so Request parts stayed at 50% when
   it was alone. Re-declared here at the same specificity, with the 50/50
   split moved onto .fci-two so it only applies when both boxes are visible. */
@media (max-width:600px){
  @supports selector(:has(a)){
    #fci-tracker .fci-topbar:has(.fci-home):has(.reqcta) .fci-home,
    #fci-tracker .fci-topbar:has(.fci-home):has(.reqcta) .reqcta{flex:1 1 100%;width:auto;max-width:none;min-width:0;margin:0}
    #fci-tracker .fci-topbar.fci-two:has(.fci-home):has(.reqcta) .fci-home,
    #fci-tracker .fci-topbar.fci-two:has(.fci-home):has(.reqcta) .reqcta{flex:0 0 calc(50% - 4px);width:calc(50% - 4px);max-width:calc(50% - 4px)}
  }
}

/* Round 6c. APPEND ONLY. Full-bleed was too much: on a wide monitor the part
   number sat on the far left and the status pill on the far right, so a row
   was tiring to scan. Capped at 1440px, still much wider than the theme's
   1140px, and it stays edge to edge on anything narrower. */
@media (min-width:601px){
  @supports selector(:has(a)){
    .l-section:has(#fci-tracker.fci-t) > .l-section-h{max-width:1440px!important;width:auto!important;margin-left:auto!important;margin-right:auto!important}
  }
}

/* Round 6d. APPEND ONLY. 1440 was too airy: the shipment grid only has five
   short columns, so the extra width became a gap between the tracking id and
   Destination. 1200 keeps the compact read of the theme's original 1140 while
   giving the search bar and the four tiles a little more room. Change this one
   number to retune the page width. */
@media (min-width:601px){
  @supports selector(:has(a)){
    .l-section:has(#fci-tracker.fci-t) > .l-section-h{max-width:1200px!important}
  }
}

/* ==========================================================================
   Added 07 Sep 2026 (round 7). APPEND ONLY. Do not slice this file.
   The tracker page background takes the app's own soft grey (#eef3f6) instead
   of the theme's white, so the whole screen reads as one app surface rather
   than a card dropped on a white page. Tracker page only, scoped with
   body:has(#fci-tracker). The shell's own border, radius and shadow come off
   at the same time, otherwise a faint outline floats on matching grey.
   ========================================================================== */
@supports selector(:has(a)){
  body:has(#fci-tracker.fci-t){background:#eef3f6}
  body:has(#fci-tracker.fci-t) .l-canvas,
  body:has(#fci-tracker.fci-t) .l-main,
  body:has(#fci-tracker.fci-t) .l-footer,
  body:has(#fci-tracker.fci-t) .l-footer .l-subfooter{background:#eef3f6!important}
  body:has(#fci-tracker.fci-t) #fci-tracker.fci-t{background:transparent;border-color:transparent;box-shadow:none}
}

/* Round 8. APPEND ONLY. The FCI logo and its divider come out of the tracker
   top bar at every width, not just on phones. The site header already shows
   the logo directly above, so the tracker was showing it twice. "Track Your
   Parts" becomes the first thing on the row. */
#fci-tracker .fci-topbar .ttl .lgw,
#fci-tracker .fci-topbar .ttl .div{display:none!important}
#fci-tracker .fci-topbar .ttl{gap:0}

/* ==========================================================================
   Added 07 Sep 2026 (round 9). APPEND ONLY. Do not slice this file.
   Dashboard clean-up, four items:
   1. The column header row repeats once per group. Shown on the first group
      only, the rest inherit it visually.
   2. The expanded part panel goes white, so it reads as inside the row
      instead of blending into the page grey.
   3. A part table with a single row drops its PART NUMBER / DESCRIPTION
      header. Two labels over one line of data is noise.
   4. Contrast pass. No new colours: the values get darker and heavier, the
      labels stay faint and get smaller. Orange keeps meaning status or
      action, which is why body text is deliberately left uncoloured.
   ========================================================================== */

/* 1. */
#fci-tracker .panel .grp ~ .grp .scols{display:none}

/* 2. */
#fci-tracker .srow-body{background:#fff;border-top:1px solid var(--bd)}
#fci-tracker .srow[open] > summary{background:#fff}

/* 3. */
@supports selector(:has(a)){
  #fci-tracker .srow-body table.mini:has(tbody tr:only-child) thead{display:none}
}

/* 4. Values darker and heavier. */
#fci-tracker .srow > summary .idcell .tx b{color:var(--ink);font-weight:700}
#fci-tracker .srow > summary .metawrap .cdim,
#fci-tracker .srow > summary .metawrap .cnum{color:var(--ink);font-weight:600}
#fci-tracker .srow-body table.mini td{color:var(--ink)}

/* 4. Labels lighter and smaller, so the gap to the values widens. */
#fci-tracker .scols,
#fci-tracker .scols > *{font-size:.64rem;letter-spacing:.09em;color:var(--faint)}
#fci-tracker .plbl{font-size:.64rem;letter-spacing:.09em;color:var(--faint)}
#fci-tracker .srow-body table.mini thead th{font-size:.64rem;letter-spacing:.09em;color:var(--faint)}
#fci-tracker .srow > summary .idcell .tx span{color:var(--faint)}

/* ==========================================================================
   Added 07 Sep 2026 (round 10). APPEND ONLY. Do not slice this file.
   Page transition. The round 3 veil was position:absolute over the panel with
   a 62% translucent wash, so on a full load (My details, Dashboard, Request
   parts) you sat looking at your own dimmed page for about a second and then
   got a hard cut to the new one. Frame by frame that reads as a stutter.
   Now it is a fixed, opaque cover in the page grey with the FCI chip centred
   in the viewport, so the swap happens behind it and you never see the old
   page fade. The !important flags are needed: the round 3 script writes inline
   top and height onto the veil and inline top onto the chip.
   ========================================================================== */
#fci-tracker .fci-wait-veil{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;width:100%!important;height:100%!important;margin:0!important;background:#eef3f6!important;z-index:9998;animation:fciVeilIn .12s ease both}
#fci-tracker .fci-wait-veil .fci-wait-chip{position:fixed!important;top:44%!important;left:50%!important}
@keyframes fciVeilIn{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){#fci-tracker .fci-wait-veil{animation:none}}

/* ==========================================================================
   Added 07 Sep 2026 (round 11). APPEND ONLY. Do not slice this file.
   Request parts is the only action on the page, so it gets a slow breathing
   ring, the same soft amber halo the AAS circle carries. 2.6s, low amplitude,
   the ring only. No transform, no colour change, nothing that reflows, so it
   costs nothing on a phone. Status chips are deliberately left static: they
   are data, not buttons, and a real customer list is 20 rows deep.
   The pulse stops while the button is the current page (.fci-here), on hover
   and on focus, because at that point it has done its job.
   ========================================================================== */
#fci-tracker .fci-topbar .reqcta .btn{animation:fciPulse 2.6s ease-in-out infinite}
#fci-tracker .fci-topbar .reqcta .btn:hover,
#fci-tracker .fci-topbar .reqcta .btn:focus,
#fci-tracker .fci-topbar .reqcta .btn.fci-here{animation:none}
@keyframes fciPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(240,197,129,.42)}
  55%{box-shadow:0 0 0 6px rgba(240,197,129,0)}
}
@media (prefers-reduced-motion:reduce){
  #fci-tracker .fci-topbar .reqcta .btn{animation:none;box-shadow:0 0 0 3px rgba(240,197,129,.14)}
}

/* ==========================================================================
   Added 07 Sep 2026 (round 13). APPEND ONLY. Do not slice this file.
   1. REVERTS round 10. The full screen grey cover was wrong. Back to the
      original: a soft translucent wash over the panel only, the page stays
      visible behind it. Round 10's rules are undone here rather than cut out
      of the file, because this stylesheet is append only.
   2. Request parts pulse made visible. Round 11 was too quiet to see.
   3. My details fields sized down. Full width boxes for one email address
      read as a form from 2009. The card is capped and the inputs are 44px.
   ========================================================================== */

/* 1. Undo round 10. */
#fci-tracker .fci-wait-veil{position:absolute!important;left:0!important;right:0!important;bottom:auto!important;width:auto!important;background:rgba(247,249,251,.62)!important;z-index:20;animation:none}
#fci-tracker .fci-wait-veil .fci-wait-chip{position:absolute!important;left:50%!important}

/* 2. Stronger pulse: wider ring, deeper start, so it is actually visible. */
@keyframes fciPulse{
  0%{box-shadow:0 0 0 0 rgba(232,151,22,.55)}
  70%{box-shadow:0 0 0 10px rgba(232,151,22,0)}
  100%{box-shadow:0 0 0 0 rgba(232,151,22,0)}
}
#fci-tracker .fci-topbar .reqcta .btn{animation:fciPulse 2.2s ease-out infinite}

/* 3. My details card: readable measure, normal field height.
   NOTE: these rules only reach the card when it is swapped into /track/.
   The standalone /my-details/ page does not enqueue public.css at all, which
   is PATCH item 7. Until that is applied the standalone page keeps the big
   boxes and restyles as it loads. */
#fci-tracker .panel .fci-pt-profile{max-width:720px;margin-left:auto;margin-right:auto}
#fci-tracker .panel .fci-pt-profile input[type=text],
#fci-tracker .panel .fci-pt-profile input[type=email],
#fci-tracker .panel .fci-pt-profile input[type=tel]{height:44px;padding:0 12px;font-size:.95rem}
#fci-tracker .panel .fci-pt-profile textarea{min-height:88px;padding:10px 12px;font-size:.95rem}
#fci-tracker .panel .fci-pt-profile .fci-cc-row{display:flex;align-items:center;gap:8px}
#fci-tracker .panel .fci-pt-profile .fci-cc-row > input{flex:1 1 auto;min-width:0}

/* ==========================================================================
   Added 07 Sep 2026 (round 14). APPEND ONLY. Do not slice this file.
   1. Back to tracker was left at the panel's left edge while round 13 capped
      the card at 720px and centred it, so the link floated off on its own.
      Same 720px box, so its left edge lines up with the card.
   2. Typography on the card. "My details" was set at the theme's h3 size,
      about double what it needs, and the company line under it was tiny and
      faint, so the two read as unrelated. Title down, sub up, tighter gap.
   ========================================================================== */

/* 1. */
#fci-tracker .panel .fci-pt-back{display:flex;align-items:center;gap:6px;max-width:720px;width:100%;margin:0 auto 12px;justify-content:flex-start}

/* 2. */
#fci-tracker .panel .fci-pt-profile .fci-pt-profile-title{font-size:1.35rem;line-height:1.25;font-weight:700;color:var(--ink);margin:0 0 2px}
#fci-tracker .panel .fci-pt-profile .fci-pt-profile-sub{font-size:.95rem;line-height:1.35;color:var(--mut);margin:0 0 18px}

/* ==========================================================================
   Added 07 Sep 2026 (round 15). APPEND ONLY. Do not slice this file.
   1. Card and Back link align LEFT with the panel, not centred. Round 13/14
      centred the 720px card, which put its left edge at 400px while the
      dashboard cards and the "Track Your Parts" title sit at the panel edge.
      Same 720px measure, left aligned, so both lines up with the dashboard.
   2. Title and sub sized down to the ratio Maruf marked up: the heading is a
      panel title, not a page title.
   ========================================================================== */

/* 1. */
#fci-tracker .panel .fci-pt-profile{max-width:720px;margin-left:0;margin-right:auto}
#fci-tracker .panel .fci-pt-back{display:flex;align-items:center;gap:6px;max-width:720px;width:100%;margin:0 0 12px;justify-content:flex-start}

/* 2. */
#fci-tracker .panel .fci-pt-profile .fci-pt-profile-title{font-size:1.15rem;line-height:1.3;font-weight:700;color:var(--ink);margin:0 0 1px}
#fci-tracker .panel .fci-pt-profile .fci-pt-profile-sub{font-size:.85rem;line-height:1.35;color:var(--mut);margin:0 0 16px}

/* Round 16, 07 Sep 2026. APPEND ONLY. Overrides round 15 items 1 and 2.
   Card and Back link centred, not left aligned, and the heading is 600 not
   700. Kept identical to the Additional CSS block that styles the standalone
   /my-details/ page, so both views match. */
#fci-tracker .panel .fci-pt-profile{max-width:720px;margin-left:auto;margin-right:auto}
#fci-tracker .panel .fci-pt-back{max-width:720px;width:100%;margin:0 auto 12px}
#fci-tracker .panel .fci-pt-profile .fci-pt-profile-title{font-weight:600}

/* Round 17, 07 Sep 2026. APPEND ONLY.
   ROOT CAUSE of the heavy "My details" heading: the theme's heading font is
   Alata, which ships ONE weight (400). Any weight above that is synthesised by
   the browser, which smears the strokes and reads as very bold. Rounds 14 to 16
   set 700 then 600, both fake. "Track Your Parts" in the top bar, which looks
   right, is the same font at 400. Matched here. Do not raise this again. */
#fci-tracker .panel .fci-pt-profile .fci-pt-profile-title{font-weight:400!important;-webkit-font-smoothing:antialiased}

/* ==========================================================================
   Round 18, 07 Sep 2026. APPEND ONLY. Do not slice this file.
   The Request parts ring now matches the AAS company circle.
   The AAS circle is NOT a pulsing shadow. It is a rotating conic gradient on
   .av::before, keyframe avspin, 7s linear, with .av::after as the inner fill.
   Rounds 11 and 13 gave the button a fading box-shadow instead, which is a
   different effect and is why it never looked like the circle. Replaced.
   A rect cannot use avspin directly (rotating a rectangle sweeps its corners
   through the ring), so the gradient's start angle is animated instead via a
   registered custom property. Same look, no transform.
   ========================================================================== */
@property --fciRingA{syntax:'<angle>';initial-value:0deg;inherits:false}
@keyframes fciRing{to{--fciRingA:360deg}}

#fci-tracker .fci-topbar .reqcta{position:relative}
#fci-tracker .fci-topbar .reqcta::before{
  content:"";position:absolute;inset:-2px;border-radius:12px;pointer-events:none;
  background:conic-gradient(from var(--fciRingA),#ffa633,#ffe0ad,#ffa633,#f0c581,#ffa633);
  animation:fciRing 7s linear infinite;
}
#fci-tracker .fci-topbar .reqcta .btn{
  position:relative;background:#fff;border-color:transparent;
  animation:none;box-shadow:none;
}
#fci-tracker .fci-topbar .reqcta .btn.fci-here{background:#fff7ec}

/* No conic gradient support, or motion turned off: plain amber ring. */
@supports not (background:conic-gradient(from 0deg,#000,#fff)){
  #fci-tracker .fci-topbar .reqcta::before{display:none}
  #fci-tracker .fci-topbar .reqcta .btn{border-color:var(--am-bd)}
}
@media (prefers-reduced-motion:reduce){
  #fci-tracker .fci-topbar .reqcta::before{animation:none}
}

/* Round 19, 07 Sep 2026. APPEND ONLY.
   Round 18 drew the ring at 2px with a 12px radius. The button's original
   border was 1.2px at a 9px radius, so the ring read as a thick frame instead
   of the same border, animated. Thickness and radius restored to the original.
   Only the colour of the border moves now, nothing about its size changed. */
#fci-tracker .fci-topbar .reqcta::before{inset:-1.2px;border-radius:10.2px}

/* Round 20, 07 Sep 2026. APPEND ONLY. Do not slice this file.
   Exact match to the AAS company circle, read off the live element:
     .av              38x38, position relative
     .av::before      inset -1.5px, radius 50%, avspin 7s linear
     .av::after       inset 0 (the inner fill)
     gradient stops   #ffa633, #ffe0ad, #b86600, #ffcf85, #ffa633
   Five stops: TWO light bands (#ffe0ad, #ffcf85) and ONE DARK band (#b86600).
   The dark band is what makes the light look like it is travelling. Rounds 18
   and 19 used one light band and no dark, so it read as a plain glow.
   Ring is 1.5px, the same as the circle. Radius is the button's 9px + 1.5. */
#fci-tracker .fci-topbar .reqcta::before{
  inset:-1.5px;
  border-radius:10.5px;
  background:conic-gradient(from var(--fciRingA),#ffa633,#ffe0ad,#b86600,#ffcf85,#ffa633);
  animation:fciRing 7s linear infinite;
}

/* Round 21, 07 Sep 2026. APPEND ONLY.
   1.5px matched the AAS circle in absolute terms but not visually: on a 38px
   circle that is a short arc, on a 131x42 button it is a long run of line, so
   it reads heavier. Dropped to 1px, which is thinner than the button's
   original 1.2px border. Gradient and speed unchanged. */
#fci-tracker .fci-topbar .reqcta::before{inset:-1px;border-radius:10px}

/* ==========================================================================
   Round 22, 07 Sep 2026. APPEND ONLY. Do not slice this file.
   TWO ring lines were visible on the button. Cause: .btn still carried its own
   1.6px border. Round 18 only made it transparent, so it kept occupying space
   and the gradient behind showed THROUGH it as a second, wider band, with the
   ::before edge as a thin line outside that. The AAS circle has no border at
   all, its ring is purely ::before with ::after filling the middle.
   The border is now removed, so the ring is a single 1.5px line like the
   circle. 1.6px of padding is added back on each side so the button does not
   shrink when the border goes.
   ========================================================================== */
#fci-tracker .fci-topbar .reqcta .btn{
  border:0!important;
  padding-left:calc(14px + 1.6px);
  padding-right:calc(14px + 1.6px);
}
#fci-tracker .fci-topbar .reqcta::before{inset:-1.5px;border-radius:10.5px}

/* ==========================================================================
   Round 23, 07 Sep 2026. APPEND ONLY. Do not slice this file.
   Sparkle tuning. The original five stops were evenly spaced, so every band
   was 90deg wide and the "light" read as a soft glow rather than a glint.
   Widening it further would have washed the ring out completely. Instead the
   stops are positioned: one NARROW near-white glint (#fff6e6, ~60deg ramp with
   a point peak), one broad dark band (#b86600) to give it something to travel
   against, and a soft secondary light (#ffcf85) on the far side.
   Applied to BOTH the button ring and the AAS circle so they stay identical.
   The circle keeps its own avspin transform, so it takes the stops only, with
   no "from" angle. The button animates the angle instead, because rotating a
   rectangle would sweep its corners through the ring.
   ========================================================================== */
#fci-tracker .fci-topbar .reqcta::before{
  background:conic-gradient(from var(--fciRingA),
    #e8971a 0deg,
    #b86600 60deg,
    #e8971a 120deg,
    #fff6e6 150deg,
    #e8971a 180deg,
    #b86600 250deg,
    #ffcf85 310deg,
    #e8971a 360deg);
}
#fci-tracker .av::before{
  background:conic-gradient(
    #e8971a 0deg,
    #b86600 60deg,
    #e8971a 120deg,
    #fff6e6 150deg,
    #e8971a 180deg,
    #b86600 250deg,
    #ffcf85 310deg,
    #e8971a 360deg);
}

/* ==========================================================================
   Round 24, 07 Sep 2026. APPEND ONLY. Do not slice this file.
   The progress bar flies. On load each bar fills from 0 to its real value with
   a small plane riding the head of the fill, staggered down the list. Runs
   ONCE per render, not on a loop: the movement carries information (how far
   the part has come) instead of decorating. Deliberately the only other motion
   on the page besides the Request parts glint.
   .track gets overflow:visible so the plane can sit proud of the bar, and the
   fill keeps its own radius so nothing looks square once the clip is gone.
   Respects prefers-reduced-motion: the bar is simply drawn at its value.
   ========================================================================== */
#fci-tracker .pb .track{position:relative;overflow:visible}
#fci-tracker .pb .fill{
  position:relative;
  border-radius:999px;
  transition:width 1.05s cubic-bezier(.22,.75,.2,1);
}
#fci-tracker .pb .fill::after{
  content:"";
  position:absolute;
  right:-6px;
  top:50%;
  width:13px;
  height:13px;
  transform:translateY(-50%) rotate(90deg);
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23e8971a'%3E%3Cpath d='M21 16v-2l-8-5V3.5A1.5 1.5 0 0 0 11.5 2 1.5 1.5 0 0 0 10 3.5V9l-8 5v2l8-2.5V19l-2 1.5V22l3.5-1 3.5 1v-1.5L13 19v-5.5z'/%3E%3C/svg%3E") center/contain no-repeat;
  pointer-events:none;
}
@media (prefers-reduced-motion:reduce){
  #fci-tracker .pb .fill{transition:none}
}

/* Round 25, 07 Sep 2026. APPEND ONLY. Replaces round 24's transition.
   Flipping width to 0 and back from script did NOT start the transition: the
   browser coalesced both writes into one style pass, so the bar jumped
   straight to its value (measured: immediately 12px, after two frames 12px,
   never an intermediate). A real @keyframes animation cannot fail that way,
   it starts when the element is styled. The target width is handed to the
   keyframe as a custom property, so the animation does not need to know it.
   scaleX was rejected: it would squash the plane riding the head of the bar. */
@keyframes fciTakeoff{from{width:0}to{width:var(--fciW)}}
#fci-tracker .pb .fill{transition:none}
#fci-tracker .pb .fill.fci-fly{animation:fciTakeoff 1.05s cubic-bezier(.22,.75,.2,1) both}
@media (prefers-reduced-motion:reduce){
  #fci-tracker .pb .fill.fci-fly{animation:none}
}

/* Round 26, 07 Sep 2026. APPEND ONLY. REVERTS rounds 24 and 25.
   The progress bar plane is gone. It looked ridiculous on a 82px bar and the
   plain bar was better. The round 25 script has been REMOVED from public.js,
   so no bar is given .fci-fly or --fciW any more. These rules neutralise the
   leftover CSS so nothing can come back if that class ever appears again.
   Do not rebuild this. */
#fci-tracker .pb .track{overflow:hidden}
#fci-tracker .pb .fill::after{content:none;display:none}
#fci-tracker .pb .fill.fci-fly{animation:none}

/* ==========================================================================
   Round 27, 07 Sep 2026. APPEND ONLY. Do not slice this file.
   The FCI chip is centred in the VIEWPORT, not in the panel.
   The round 3 script measures the panel and writes an inline top onto the chip,
   which puts it near the top of a long page or off screen entirely once you
   have scrolled. Making it position:fixed at 50/50 means it is always in the
   middle of what the customer is actually looking at, whatever the scroll
   position and however tall the panel is.
   The veil itself stays as it was: absolute, translucent, over the panel only.
   That part Maruf approved in round 13, do not make it full screen again.
   fciWaitC replaces fciWait for the chip: a transform keyframe REPLACES the
   whole transform, so the centring translate has to be carried inside every
   frame or the chip jumps to the corner. That bug already happened once, see
   the note about @keyframes fciWait in CLAUDE.md.
   ========================================================================== */
@keyframes fciWaitC{
  0%,100%{opacity:.55;transform:translate(-50%,-50%)}
  50%{opacity:1;transform:translate(-50%,calc(-50% - 5px))}
}
#fci-tracker .fci-wait-veil .fci-wait-chip{
  position:fixed!important;
  top:50%!important;
  left:50%!important;
  animation-name:fciWaitC;
}