/* GPS Transfer Tracker (transfers.jsx). Scoped to .tt-* so it cannot leak into other screens. */
.tt-root{display:flex;flex-direction:column;gap:16px}
/* Container (not viewport) queries: the RM sidebar takes a varying share of the width. Kept off .tt-root so fixed drawers stay viewport-anchored. */
.tt-head,.tt-listcard{container:tt/inline-size}
.tt-pagenav{margin:0 0 12px}
.tt-visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.tt-muted{color:var(--muted);font-size:12px}
.tt-small{display:block;font-size:11px;color:var(--muted);margin-top:2px;font-weight:400}

.tt-headrow{display:flex;flex-wrap:wrap;gap:12px 20px;justify-content:space-between;align-items:flex-start}
.tt-head h2{font-size:20px;font-weight:800;margin:0}
.tt-head .sub{color:var(--muted);font-size:13px;margin:2px 0 0}
.tt-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tt-actions .training-submit,.tt-actions .dl-btn{min-height:44px;display:inline-flex;align-items:center;gap:8px}
.tt-filebtn{position:relative;cursor:pointer}
.tt-filebtn.is-busy{opacity:.7;pointer-events:none}
.tt-filebtn:focus-within{outline:2px solid var(--purple-deep);outline-offset:2px}
.dl-btn.tt-on{background:#f1eeff;border-color:#cfc6ff}

.tt-mode{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:14px 0 0;padding:10px 14px;border-radius:10px;font-size:12.5px;line-height:1.45}
.tt-mode.is-pilot{background:#fff8db;border:1px solid #f2d76b;color:#4a3b00}
.tt-mode.is-live{background:#e9f7ef;border:1px solid #a8dcbc;color:#14532d}
.tt-mode-dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px;background:#b88a00}
.tt-mode.is-live .tt-mode-dot{background:var(--green)}
.tt-mode>span:nth-child(2){flex:1 1 360px}
.tt-mode-actions{display:flex;gap:14px;flex-wrap:wrap}

.tt-linkbtn,.tt-linkdanger{appearance:none;background:none;border:none;padding:6px 2px;min-height:32px;font:inherit;font-size:12.5px;font-weight:700;color:var(--purple-deep);text-decoration:underline;cursor:pointer}
.tt-linkbtn:disabled{opacity:.5;cursor:default}
.tt-linkdanger{color:var(--red);margin-top:8px}
.tt-linkbtn:focus-visible,.tt-linkdanger:focus-visible,.tt-namebtn:focus-visible,.tt-sortbtn:focus-visible,.tt-segbtn:focus-visible,.tt-stage:focus-visible,.tt-kpi:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}

.tt-msg{position:relative;margin:12px 0 0;padding:10px 36px 10px 14px;border-radius:8px;font-size:12.5px;border-left:4px solid}
.tt-msg-ok{background:#eef8f1;border-color:var(--green);color:#14532d}
.tt-msg-error{background:#fdecec;border-color:var(--red);color:#7f1d1d}
.tt-msg-x{position:absolute;right:6px;top:4px;background:none;border:none;font-size:18px;line-height:1;cursor:pointer;color:inherit;width:28px;height:28px}

.tt-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:16px}
.tt-kpi{display:flex;flex-direction:column;gap:2px;text-align:left;background:#fff;border:1px solid var(--line);border-top:3px solid var(--purple);border-radius:12px;padding:12px 14px;font:inherit;color:inherit}
.tt-kpi-lab{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
.tt-kpi-val{font-size:26px;font-weight:800;color:var(--text);line-height:1.1}
.tt-kpi-sub{font-size:11px;color:var(--muted)}
.tt-k-high{border-top-color:var(--green)}
.tt-k-mid{border-top-color:#e07a3f}
.tt-k-early{border-top-color:var(--amber)}
.tt-k-attn{border-top-color:var(--red);cursor:pointer}
.tt-k-attn:hover{background:#fff7f7}
.tt-k-attn.active{background:#fdecec;border-color:#f3b4b4}

.tt-funnel{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
.tt-stage{flex:1 1 120px;display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-left:4px solid;border-radius:10px;background:#fff;cursor:pointer;font:inherit;text-align:left}
.tt-stage:hover{background:#faf9ff}
.tt-stage.active{background:#f1eeff;border-color:#cfc6ff}
.tt-stage-n{font-size:18px;font-weight:800;color:var(--text)}
.tt-stage-l{font-size:12px;font-weight:700;color:#3a3a46}
.tt-st-early{border-left-color:var(--amber)}
.tt-st-mid{border-left-color:#e07a3f}
.tt-st-high{border-left-color:var(--green)}
.tt-st-done{border-left-color:#3f8fc4}
.tt-st-removed{border-left-color:#9a9aa5}

.tt-filters{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;margin-bottom:12px}
.tt-search{flex:1 1 260px}
.tt-search .tt-input{width:100%}
.tt-filter{max-width:220px}
.tt-count{margin-left:auto;font-size:11.5px;color:var(--muted)}
.tt-input{border:1px solid #d9d9e6;border-radius:8px;padding:8px 10px;min-height:38px;font:inherit;font-size:12.5px;background:#fff;color:var(--text);box-sizing:border-box}
.tt-input:focus-visible{outline:2px solid var(--purple-deep);outline-offset:1px;border-color:var(--purple-deep)}
.tt-input:disabled{background:#f6f6f8}
.tt-input-strong{font-weight:700}
textarea.tt-input{width:100%;resize:vertical;min-height:70px}

.tt-seg{display:inline-flex;border:1px solid #d9d9e6;border-radius:999px;overflow:hidden;background:#fff}
.tt-segbtn{appearance:none;border:none;background:none;padding:8px 14px;min-height:38px;min-width:44px;font:inherit;font-size:12px;font-weight:700;color:#4a4a56;cursor:pointer}
.tt-segbtn+.tt-segbtn{border-left:1px solid #e3e3ec}
.tt-segbtn.on{background:var(--purple-deep);color:#fff}
.tt-segbtn.on.tt-yn-yes{background:var(--green)}
.tt-segbtn.on.tt-yn-no{background:#7f1d1d}
.tt-segbtn.on.tt-yn-na{background:#55555f}
.tt-segbtn:disabled{opacity:.6;cursor:default}
.tt-check{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;padding:4px 0;cursor:pointer}
.tt-check input{width:18px;height:18px;margin:0;flex:0 0 18px;accent-color:var(--purple-deep)}
.tt-check-inline{align-items:center;min-height:38px}

.tt-tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.tt-table{min-width:0}
.tt-table td{vertical-align:top;padding:10px 12px}
.tt-table th{position:sticky;top:0;z-index:1;padding:0}
.tt-table th:not(:has(.tt-sortbtn)){padding:9px 12px}
.tt-sortbtn{appearance:none;border:none;background:none;width:100%;min-height:44px;text-align:inherit;padding:9px 12px;font:inherit;font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:#6b6b76;cursor:pointer}
.tt-table .num,.tt-recon-table .num,.tt-ov-table .num{text-align:right}
.tt-row td:first-child{box-shadow:inset 4px 0 0 transparent}
.tt-row-early td:first-child{box-shadow:inset 4px 0 0 var(--amber)}
.tt-row-mid td:first-child{box-shadow:inset 4px 0 0 #e07a3f}
.tt-row-high td:first-child{box-shadow:inset 4px 0 0 var(--green)}
.tt-row-done td:first-child{box-shadow:inset 4px 0 0 #3f8fc4}
.tt-row-removed td{opacity:.7}
.tt-row.sel td{background:#f4f2fe}
.tt-namebtn{appearance:none;border:none;background:none;padding:10px 0;margin:-10px 0;font:inherit;font-size:13px;font-weight:800;color:var(--text);text-align:left;cursor:pointer;text-decoration:underline;text-decoration-color:#cfc6ff;text-underline-offset:3px;min-height:44px}
.tt-namebtn:hover{color:var(--purple-deep)}
.tt-statussel{width:100%;min-width:140px;max-width:200px;border-left-width:4px;border-left-style:solid;text-overflow:ellipsis}
.tt-statussel.tt-st-early{border-left-color:var(--amber)}
.tt-statussel.tt-st-mid{border-left-color:#e07a3f}
.tt-statussel.tt-st-high{border-left-color:var(--green)}
.tt-statussel.tt-st-done{border-left-color:#3f8fc4}
.tt-statussel.tt-st-removed{border-left-color:#9a9aa5}
.tt-nextcell{max-width:240px}
.tt-flag{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:1px 7px;border-radius:999px;background:#fdecec;color:#7f1d1d;font-size:10.5px;font-weight:700;white-space:nowrap}
.tt-none{text-align:center;padding:24px}
.tt-show-sm{display:none}

.tt-pill{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap;border:1px solid transparent}
.tt-pill.tt-early{background:#fff6d6;color:#6b4e00;border-color:#f2d76b}
.tt-pill.tt-mid{background:#fdeee4;color:#7a3511;border-color:#f3c2a3}
.tt-pill.tt-high{background:#e6f5ec;color:#14532d;border-color:#a8dcbc}
.tt-pill.tt-removed{background:#f0f0f3;color:#4a4a56;border-color:#d9d9e6}
.tt-pill.tt-neutral{background:#f0f0f3;color:#4a4a56}
.tt-pill.tt-topic{background:#f1eeff;color:var(--purple-deep);text-transform:capitalize}

.tt-empty{text-align:center;padding:32px 16px}
.tt-empty h3{font-size:16px;font-weight:800;margin:0 0 6px}
.tt-empty p{color:var(--muted);font-size:13px;margin:0 0 14px}
.tt-empty .tt-actions{justify-content:center}

.tt-recon h3{font-size:16px;font-weight:800;margin:0}
.tt-recon h4{font-size:13px;font-weight:800;margin:16px 0 8px}
.tt-recon-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}
.tt-recon-verdict{margin:0 0 10px;padding:8px 12px;border-radius:8px;font-size:12.5px;font-weight:700}
.tt-recon-verdict.is-ok{background:#e9f7ef;color:#14532d}
.tt-recon-verdict.is-off{background:#fff8db;color:#4a3b00}
.tt-row-off td{background:#fffbea}

/* Drawer */
.tt-drawer{width:640px}
.tt-drawer-status{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;padding:14px 22px;border-bottom:1px solid var(--line);background:#fff}
.tt-next{grid-column:1/-1;display:flex;gap:8px;align-items:center;padding:8px 12px;border-radius:8px;background:#f1eeff;color:#2e2470;font-size:12.5px}
.tt-gaps{grid-column:1/-1;margin:0;padding:8px 12px 8px 28px;border-radius:8px;background:#fdecec;color:#7f1d1d;font-size:12px}
.tt-section{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;background:#fff}
.tt-section>summary{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;min-height:44px;box-sizing:border-box;cursor:pointer;font-weight:800;font-size:13.5px;list-style:none}
.tt-section>summary::-webkit-details-marker{display:none}
.tt-section>summary::before{content:"▸";color:var(--purple);margin-right:2px}
.tt-section[open]>summary::before{content:"▾"}
.tt-section>summary>span:first-child{flex:1}
.tt-section>summary:focus-visible{outline:2px solid var(--purple-deep);outline-offset:-2px;border-radius:10px}
.tt-section-count{font-size:11px;font-weight:700;color:var(--muted)}
.tt-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;padding:4px 14px 14px}
.tt-field{display:flex;flex-direction:column;gap:5px;min-width:0;border:none;margin:0;padding:0}
.tt-field .tt-input{width:100%}
.tt-field-wide{grid-column:1/-1}
.tt-flabel{font-size:11.5px;font-weight:700;color:#3a3a46}
.tt-fhint{font-size:11px;color:var(--muted)}
.tt-multi{gap:2px}
.tt-multi legend{margin-bottom:4px}
.tt-audit{margin-top:14px}
.tt-noteform{display:grid;grid-template-columns:200px 1fr;gap:10px 14px;align-items:start;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.tt-noteform .training-submit{grid-column:1/-1;justify-self:start;min-height:44px}
.tt-formactions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.tt-formactions button{min-height:44px}
.tt-timeline{list-style:none;margin:0;padding:0}
.tt-ev{position:relative;padding:0 0 14px 18px;border-left:2px solid var(--line);margin-left:6px}
.tt-ev::before{content:"";position:absolute;left:-6px;top:3px;width:10px;height:10px;border-radius:50%;background:#cfc6ff}
.tt-ev-note::before,.tt-ev.tt-ev-note::before{background:var(--purple)}
.tt-ev-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:11.5px;color:var(--muted)}
.tt-ev-meta b{color:var(--text)}
.tt-ev-note{margin:6px 0 0;padding:8px 10px;border-radius:8px;background:#faf9ff;border:1px solid #ece9fb;font-size:12.5px;white-space:pre-wrap}
.tt-ev-text{margin:4px 0 0;font-size:12.5px;color:#3a3a46}
.tt-ev-text s{color:var(--muted)}

/* Transfer overview */
.tt-ov-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tt-ov-h{font-size:15px;font-weight:800;margin:0 0 10px}
.tt-ov-table th[scope=row]{font-weight:700;color:var(--text);text-align:left}
.tt-ov-table tfoot th,.tt-ov-table tfoot td{border-top:2px solid var(--line);background:#fafafb}
.tt-bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.tt-bars li{display:grid;grid-template-columns:150px 1fr 40px;gap:10px;align-items:center;font-size:12.5px}
.tt-bar-l{font-weight:700;color:#3a3a46}
.tt-bar-v{text-align:right;font-weight:800}
.tt-bar-track{display:block;height:12px;border-radius:999px;background:#f0f0f3;overflow:hidden}
.tt-bar-stack{display:flex;height:100%}
.tt-bar-track>.tt-bar-fill{display:block;height:100%}
.tt-bar-fill{display:block;min-width:2px}
.tt-fill-early{background:var(--amber)}
.tt-fill-mid{background:#e07a3f}
.tt-fill-high{background:var(--green)}
.tt-fill-done{background:#3f8fc4}
.tt-fill-removed{background:#9a9aa5}
.tt-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:12px 0 0;font-size:11.5px;color:var(--muted)}
.tt-legend span{display:inline-flex;align-items:center;gap:6px}
.tt-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
@media (max-width:1100px){.tt-ov-grid{grid-template-columns:1fr}}
@media (max-width:600px){.tt-bars li{grid-template-columns:110px 1fr 32px}}

/* Level x geography standing report at the foot of the Overview.
   Reuses the weekly deck matrix styling (.wk-tbl--matrix: charcoal header, EY yellow grand total). */
.tt-geo-head{margin-bottom:14px}
.tt-geo-head .tt-ov-h{margin:0 0 2px}
.tt-geo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 16px}
.tt-geo .tt-tm-legend{margin:0 0 14px}
.tt-geo-table td.tt-tm-cell{cursor:default}
.tt-geo-card{min-width:0}
.tt-geo-cap{margin:0 0 8px;font-size:12.5px;font-weight:800;color:#2e2e38;line-height:1.3}
.tt-geo-cap span{color:var(--muted);font-weight:700}
.tt-geo-none{margin:0;padding:10px 0}
.tt-geo-wrap{border:1px solid #e7e7ee;border-radius:8px;overflow:auto}
.tt-geo-table{min-width:100%}
.tt-geo-table th{font-size:8.5px;padding:7px 4px}
.tt-geo-table th:first-child{font-size:8.5px;padding-left:8px}
.tt-geo-table td{font-size:11.5px;padding:6px 4px;font-weight:700}
.tt-geo-table td:first-child{padding-left:8px;font-weight:800;white-space:nowrap}
.tt-geo-foot{display:flex;flex-wrap:wrap;gap:16px;align-items:stretch;margin-top:18px}
.tt-geo-totals{display:flex;gap:2px;flex:1 1 340px;border-radius:8px;overflow:hidden}
.tt-geo-total{flex:1 1 0;display:flex;flex-direction:column;gap:4px;padding:12px 16px;background:#2e2e38;color:#fff}
.tt-geo-total-l{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;opacity:.75}
.tt-geo-total-v{font-size:30px;font-weight:800;line-height:1;color:var(--ey-yellow);font-variant-numeric:tabular-nums}
.tt-geo-note{flex:1 1 300px;margin:0;padding:12px 16px;border-radius:8px;background:#f2f2f6;font-size:12.5px;color:#55555f}
@media (max-width:860px){.tt-geo-grid{grid-template-columns:1fr}}

/* Transfer timing by month and level: stacked columns in the deck palette, most senior on top */
.tt-tm{margin-bottom:18px}
.tt-tm-chart{display:flex;gap:10px}
.tt-tm-y{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;width:26px;padding-bottom:26px;font-size:9px;font-weight:800;color:#9a9aa5;font-variant-numeric:tabular-nums}
.tt-tm-plot{flex:1 1 auto;display:flex;align-items:flex-end;gap:8px;min-width:0;overflow-x:auto;padding-bottom:26px;position:relative;
  background:linear-gradient(#e7e7ee 1px,transparent 1px) 0 0/100% 50% no-repeat,
             linear-gradient(#e7e7ee 1px,transparent 1px) 0 calc(100% - 26px)/100% 1px no-repeat;
  border-bottom:1px solid #2e2e38}
.tt-tm-col{flex:1 1 44px;min-width:42px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;position:relative;
  appearance:none;border:none;background:none;padding:0;font:inherit;cursor:pointer;border-radius:4px 4px 0 0}
.tt-tm-col:hover{background:#f4f4f7}
.tt-tm-col:focus-visible{outline:2px solid var(--purple-deep);outline-offset:1px}
.tt-tm-col.is-dim{opacity:.4}
.tt-tm-col.is-sel{background:#fff8c9}
.tt-tm-n{font-size:11px;font-weight:800;color:#2e2e38;margin-bottom:3px;font-variant-numeric:tabular-nums}
.tt-tm-stack{display:flex;flex-direction:column;width:100%;max-width:54px;min-height:2px;border-radius:3px 3px 0 0;overflow:hidden}
.tt-tm-seg{display:flex;align-items:center;justify-content:center;min-height:2px;font-size:10px;font-weight:800;font-style:normal;line-height:1;color:#fff}
.tt-tm-x{position:absolute;bottom:-24px;left:0;right:0;font-size:9px;font-weight:700;color:#55555f;text-align:center;line-height:1.2}
.tt-tm-legend{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin:12px 0 0}
.tt-tm-key{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:5px 11px;border:1px solid var(--line);border-radius:999px;background:#fff;font:inherit;font-size:10.5px;font-weight:800;color:#3a3a46;cursor:pointer}
.tt-tm-key:hover{border-color:#b9b9c6}
.tt-tm-key:focus-visible,.tt-tm-head button:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.tt-tm-key.is-off{color:#9a9aa5;background:#f7f7fa}
.tt-tm-key.is-off i{opacity:.25}
.tt-tm-key i{width:12px;height:12px;border-radius:3px;display:inline-block;flex:0 0 12px}
.tt-tm-pick{font-size:10.5px;font-weight:700;color:#55555f}
.tt-tm-clear{margin-left:auto;min-height:32px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;font:inherit;font-size:10.5px;font-weight:800;color:var(--purple-deep);cursor:pointer}
.tt-tm-clear:hover:not(:disabled){background:#f4f2fe;border-color:var(--purple-deep)}
.tt-tm-clear:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.tt-tm-clear:disabled{color:#9a9aa5;cursor:default}
/* Month picked on the chart, carried through to the matrix column */
.tt-tm-head button{appearance:none;border:none;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;width:100%}
.tt-tm-head.tt-tm-sel{color:var(--ey-yellow);box-shadow:inset 0 -3px 0 var(--ey-yellow)}
.tt-geo-table td.tt-tm-sel{background:#fff8c9}
.tt-geo-table tr.tot td.tt-tm-sel{background:#ffeb8a}
/* Hover a value to see the confidence split behind it */
.tt-geo-table td.tt-tm-cell{cursor:default}
.tt-geo-table td.tt-tm-cell:hover{box-shadow:inset 0 0 0 2px var(--purple-deep)}
.tt-tm-tip{position:fixed;z-index:300;pointer-events:none;min-width:180px;max-width:240px;padding:9px 11px;border-radius:8px;
  background:#2e2e38;color:#fff;box-shadow:0 10px 28px rgba(0,0,0,.28);font-size:11.5px;line-height:1.3}
.tt-tm-tip-h{margin:0 0 7px;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--ey-yellow)}
.tt-tm-tip ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.tt-tm-tip li{display:grid;grid-template-columns:12px 1fr auto;align-items:center;gap:9px}
.tt-tm-tip li i{width:12px;height:12px;border-radius:3px;display:block}
.tt-tm-tip b{font-weight:800;font-variant-numeric:tabular-nums}
.tt-tm-tip-none{margin:0;color:#b9b9c6}
.tt-tm-tip-t{display:flex;justify-content:space-between;gap:12px;margin:8px 0 0;padding-top:7px;border-top:1px solid #4a4a56;font-weight:800}
/* Transfer confidence bands, same colours the weekly deck gives High and Mid transfers. */
.tt-tm-high{background:#2e7d32;color:#fff}
.tt-tm-mid{background:#e07a3f;color:#fff}
.tt-tm-early{background:#77777f;color:#fff}
.tt-tm-done{background:#3f8fc4;color:#fff}

@container tt (max-width:900px){
  .tt-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
  .tt-hide-md{display:none}
  .tt-table{min-width:0}
}
@container tt (max-width:600px){
  .tt-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tt-kpi-val{font-size:22px}
  .tt-hide-sm{display:none}
  .tt-show-sm{display:block}
  .tt-statussel{min-width:130px}
  .tt-count{margin-left:0;width:100%}
  .tt-filter{max-width:none;flex:1 1 45%}
  .tt-stage{flex:1 1 45%}
}
@media (max-width:760px){
  .tt-drawer-status,.tt-grid,.tt-noteform{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .tt-drawer,.tt-root .drawer-scrim{animation:none}
}

/* Reporting: self-service report builder over the tracker */
.ttr-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:16px;align-items:start}
.ttr-layout.is-collapsed{grid-template-columns:minmax(0,1fr)}
.ttr-rail{display:flex;flex-direction:column;gap:16px;position:sticky;top:12px;max-height:calc(100vh - 32px);overflow:auto}
/* Visuals expand to fill the canvas; auto-fit collapses the spare track so one visual spans it. */
.ttr-canvas{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:16px;align-content:start}
/* The visual being built always takes the full width, so the editor has room to lay out. */
.ttr-block.is-wide,.ttr-add,.ttr-canvas.is-solo>.ttr-block,.ttr-canvas>.ttr-block.is-active{grid-column:1/-1}
.ttr-block-head{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:space-between;align-items:center;margin-bottom:10px}
.ttr-block-head .tt-ov-h{margin:0}
.ttr-block-tools{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin-left:auto}
.ttr-title{flex:1 1 220px;font-size:14px}
.ttr-inline-danger{margin-top:0}
.ttr-block-edit{border:1px dashed #ddd9f5;border-radius:10px;padding:12px 14px;margin:0 0 12px;background:#fbfaff}
.ttr-block-row{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end}
.ttr-vis+.ttr-wells,.ttr-wells+.ttr-block-row{margin-top:12px}
.ttr-pick{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
.ttr-pick>span{white-space:nowrap}
.ttr-pick .tt-input{min-width:140px;max-width:260px;text-transform:none;letter-spacing:0;font-weight:400}
.ttr-pick input[type=number].tt-input{min-width:90px;width:90px}
.ttr-fieldpick{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:10px 0 0;display:flex;flex-wrap:wrap;gap:0 16px}
.ttr-fieldpick legend{padding:0 4px}
.ttr-blockfilters{margin-top:10px}
.ttr-blockfilters>summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--purple-deep);min-height:32px;display:flex;align-items:center}
.ttr-filters{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.ttr-filter{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fff}
.ttr-filter-head{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}
.ttr-filter-name{font-size:12px;font-weight:800;flex:1 1 auto}
.ttr-filter-values{display:flex;flex-direction:column;max-height:190px;overflow:auto;margin-top:4px}
.ttr-filters.is-compact .ttr-filter-values{max-height:150px}
.ttr-filter-value span i{font-style:normal;margin-left:4px}
.ttr-pivot th[scope=row]{white-space:nowrap}
.ttr-pivot .ttr-zero{color:var(--muted)}
.ttr-detail td{font-size:12.5px;vertical-align:top}
.ttr-bars li{grid-template-columns:minmax(120px,210px) 1fr 52px}
.ttr-fill{background:var(--purple)}
.ttr-legend{margin-top:10px}
.ttr-kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.ttr-empty{padding:18px 0}
.ttr-cols{display:flex;align-items:flex-end;gap:10px;height:200px;overflow-x:auto;padding-top:18px}
.ttr-col{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;flex:1 1 44px;min-width:44px;height:100%}
.ttr-col-stack{display:flex;flex-direction:column-reverse;width:100%;max-width:56px;border-radius:6px 6px 0 0;overflow:hidden;background:#f0f0f3}
.ttr-col-stack i{display:block;min-height:2px}
.ttr-col-v{font-size:11.5px;font-weight:800}
.ttr-col-l{font-size:10.5px;color:var(--muted);text-align:center;line-height:1.25;word-break:break-word}
.ttr-add-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
/* Pie and donut */
.ttr-pie{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:center;justify-content:center}
.ttr-pie>svg{flex:0 0 auto}
.ttr-pie-total{font-size:26px;font-weight:800;fill:var(--text)}
.ttr-pie-cap{font-size:9px;font-weight:700;fill:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.ttr-pie-key{list-style:none;margin:0;padding:0;flex:1 1 230px;min-width:200px;display:flex;flex-direction:column;gap:5px;max-height:250px;overflow:auto}
.ttr-pie-key li{display:grid;grid-template-columns:12px 1fr auto auto;align-items:center;gap:9px;font-size:12px}
.ttr-pie-key i{width:12px;height:12px;border-radius:3px}
.ttr-pie-key b{font-weight:800;font-variant-numeric:tabular-nums}
.ttr-pie-key em{font-style:normal;color:var(--muted);font-size:11px;min-width:34px;text-align:right}
/* Treemap */
.ttr-treemap{position:relative}
.ttr-treemap>svg{width:100%;height:270px;display:block;border-radius:8px;overflow:hidden}
.ttr-treemap-labels{position:absolute;inset:0;pointer-events:none}
.ttr-treemap-labels span{position:absolute;display:flex;flex-direction:column;justify-content:center;gap:2px;padding:6px 8px;
  color:#fff;font-size:10.5px;line-height:1.2;text-shadow:0 1px 2px rgba(0,0,0,.35);overflow:hidden}
.ttr-treemap-labels b{font-size:11.5px;font-weight:800}
/* Ribbon */
.ttr-ribbon{width:100%;height:230px;display:block}
.ttr-ribbon-x{display:flex;margin-top:2px}
.ttr-ribbon-x span{font-size:9.5px;font-weight:700;color:#55555f;text-align:center;line-height:1.2;word-break:break-word}
/* Scatter */
.ttr-scatter{display:grid;grid-template-columns:42px minmax(0,1fr);gap:0 8px;align-items:stretch}
.ttr-scatter-y{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;padding-bottom:20px;
  font-size:9px;font-weight:800;color:#9a9aa5;font-variant-numeric:tabular-nums}
.ttr-scatter-plot{min-width:0}
.ttr-scatter-area{position:relative;height:250px;border-left:1px solid #2e2e38;border-bottom:1px solid #2e2e38}
.ttr-scatter-grid{position:absolute;left:0;right:0;top:50%;height:1px;background:#e7e7ee}
.ttr-scatter-dot{position:absolute;border-radius:50%;transform:translate(-50%,50%);border:1.5px solid #fff;opacity:.82}
.ttr-scatter-dot:hover{opacity:1;box-shadow:0 0 0 2px var(--purple-deep)}
.ttr-scatter-x{display:flex;justify-content:space-between;margin-top:4px;font-size:9px;font-weight:800;color:#9a9aa5;text-transform:uppercase;letter-spacing:.3px}
.ttr-scatter-key{grid-column:1/-1;margin-top:12px;max-height:150px}
/* Ink: the card's text and rule colours flow into every visual, but never into the editor chrome. */
.ttr-block-head .tt-ov-h,.ttr-body,.ttr-body .tt-bar-l,.ttr-body .tt-bar-v,.ttr-body .ttr-col-v,
.ttr-body .wk-tbl th,.ttr-body .wk-tbl td,.ttr-body .tt-kpi-val,.ttr-body .ttr-pie-key,.ttr-shot-title{color:var(--ttr-ink,var(--text))}
.ttr-block-head .tt-muted,.ttr-body .tt-muted,.ttr-body .ttr-col-l,.ttr-body .tt-kpi-lab,.ttr-body .tt-kpi-sub,
.ttr-body .tt-legend,.ttr-body .ttr-pie-key em,.ttr-body .ttr-ribbon-x span,.ttr-body .ttr-pivot .ttr-zero{color:var(--ttr-ink-soft,var(--muted))}
.ttr-body .ttr-scatter-y,.ttr-body .ttr-scatter-x{color:var(--ttr-ink-faint,#9a9aa5)}
.ttr-body .ttr-pie-total{fill:var(--ttr-ink,var(--text))}
.ttr-body .ttr-pie-cap{fill:var(--ttr-ink-soft,var(--muted))}
.ttr-body .tt-bar-track,.ttr-body .ttr-col-stack{background:var(--ttr-track,#f0f0f3)}
.ttr-body .wk-tbl th,.ttr-body .wk-tbl td,.ttr-body .wk-tbl tfoot td,.ttr-body .wk-tbl tfoot th{border-color:var(--ttr-line,var(--line))}
.ttr-body .tt-kpi,.ttr-body .ttr-detail{border-color:var(--ttr-line,var(--line))}
.ttr-body .ttr-scatter-area{border-left-color:var(--ttr-ink,#2e2e38);border-bottom-color:var(--ttr-ink,#2e2e38)}
.ttr-body .ttr-scatter-grid{background:var(--ttr-line,#e7e7ee)}
.ttr-body .ttr-scatter-dot{border-color:var(--ttr-edge,#fff)}
.ttr-block-tools .tt-linkbtn{color:var(--ttr-ink,var(--purple-deep))}
.ttr-block-tools .tt-linkdanger{color:var(--ttr-ink,var(--danger))}
.ttr-block-tools .tt-linkbtn:disabled{color:var(--ttr-ink-faint,var(--muted))}
.ttr-pane-h{margin:0 0 8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
/* Visual gallery: an icon grid rather than a dropdown */
.ttr-vis{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin-bottom:12px;position:relative}
.ttr-vis-tip{position:fixed;z-index:300;pointer-events:none;transform:translateX(-50%);width:250px;padding:9px 11px;border-radius:8px;
  background:#2e2e38;color:#fff;box-shadow:0 10px 28px rgba(0,0,0,.28);font-size:11.5px;line-height:1.4;text-align:left}
.ttr-vis-tip-h{margin:0 0 5px;display:flex;align-items:center;gap:8px;font-size:9.5px;font-weight:800;
  text-transform:uppercase;letter-spacing:.4px;color:var(--ey-yellow)}
.ttr-vis-tip-h i{margin-left:auto;font-style:normal;font-size:8.5px;padding:1px 5px;border-radius:4px;
  background:var(--ey-yellow);color:#2e2e38}
.ttr-vis.is-compact{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:6px}
/* Pane variant: small icons only, the way a Power BI visualizations pane reads. */
.ttr-vis.is-mini{grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;margin-bottom:10px}
.ttr-vis.is-mini .ttr-vis-btn{min-height:36px;padding:7px 2px;border-radius:7px}
.ttr-vis.is-mini .ttr-vis-btn span{display:none}
.ttr-vis-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 4px;min-height:62px;
  border:1px solid var(--line);border-radius:10px;background:#fff;font:inherit;font-size:9.5px;font-weight:700;
  line-height:1.2;text-align:center;color:#55555f;cursor:pointer}
.ttr-vis-btn svg{color:#8a84c4}
.ttr-vis-btn:hover{border-color:var(--purple);background:#faf9ff}
.ttr-vis-btn:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.ttr-vis-btn.is-on{border-color:var(--purple-deep);background:#f1eeff;color:var(--purple-deep);box-shadow:inset 0 0 0 1px var(--purple-deep)}
.ttr-vis-btn.is-on svg{color:var(--purple-deep)}
.ttr-vispane .ttr-addvis{width:100%;justify-content:center;margin-bottom:8px}
.ttr-vispane>.tt-muted{margin:0}
.ttr-vis-btn.is-pick{border-color:#9ad3b4}
.ttr-vis-btn.is-pick::after{content:"";position:absolute;top:4px;right:4px;width:5px;height:5px;border-radius:50%;background:var(--green)}
.ttr-vis-btn{position:relative}
.ttr-showme{margin:0 0 6px}
.ttr-swap{display:inline-block;margin:0 0 10px}
/* Format pane */
.ttr-pane-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:0;border:none;background:none;
  font-family:inherit;font-size:15px;font-weight:800;color:inherit;cursor:pointer;text-align:left}
.ttr-pane-toggle:hover{color:var(--purple-deep)}
.ttr-pane-toggle:focus-visible{outline:2px solid var(--purple-deep);outline-offset:3px;border-radius:4px}
.ttr-pane-sum{margin-left:auto;font-style:normal;font-size:10.5px;font-weight:700;color:var(--muted)}
.card.is-shut .ttr-pane-toggle{margin:0}
.ttr-fmtgroup{border-top:1px solid var(--line)}
.ttr-fmtgroup:last-child{border-bottom:1px solid var(--line)}
.ttr-sub-h{margin-top:10px}
.ttr-inks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:10px}
.ttr-ink{display:flex;align-items:center;gap:7px;padding:5px 7px;border:1px solid var(--line);border-radius:8px;background:#fff;
  font:inherit;font-size:11px;font-weight:700;color:#55555f;cursor:pointer;text-align:left}
.ttr-ink:hover{border-color:var(--purple)}
.ttr-ink:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.ttr-ink.is-on{border-color:var(--purple-deep);background:#f1eeff;color:var(--purple-deep);box-shadow:inset 0 0 0 1px var(--purple-deep)}
.ttr-ink-dot{display:flex;align-items:center;justify-content:center;width:22px;height:20px;flex:0 0 22px;border:1px solid var(--line);
  border-radius:5px;font-size:10.5px;font-weight:800}
.ttr-contrast{margin:0 0 10px;padding:6px 8px;border-radius:7px;background:#fff6e0;border:1px solid #f0d58a;font-size:10.5px;
  line-height:1.4;color:#6b5200}
.ttr-brandnote{margin:0 0 10px;padding:6px 8px;border-radius:7px;background:#f6f6fa;border:1px solid var(--line);
  border-left:3px solid #ffe600;font-size:10.5px;line-height:1.4;color:#55555f}
.ttr-fmtgroup-h{min-height:36px;text-transform:uppercase;font-size:11px;letter-spacing:.4px;color:#6b6b76}
.ttr-fmtgroup-h i{text-transform:none;letter-spacing:0;font-size:10.5px;color:var(--muted)}
.ttr-fmtgroup-b{padding:2px 0 4px}
.ttr-fmtgroup-b>:last-child{margin-bottom:6px}
.ttr-pals{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:12px}
.ttr-pal{display:flex;flex-direction:column;gap:4px;padding:6px 7px;border:1px solid var(--line);border-radius:8px;
  background:#fff;font:inherit;font-size:9.5px;font-weight:700;color:#55555f;cursor:pointer;text-align:left}
.ttr-pal:hover{border-color:var(--purple)}
.ttr-pal:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.ttr-pal.is-on{border-color:var(--purple-deep);background:#f1eeff;color:var(--purple-deep);box-shadow:inset 0 0 0 1px var(--purple-deep)}
.ttr-pal-swatch{display:flex;height:12px;border-radius:3px;overflow:hidden}
.ttr-pal-swatch i{flex:1 1 0}
.ttr-backs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.ttr-back{width:30px;height:30px;border:1px solid var(--line);border-radius:7px;cursor:pointer}
.ttr-back:hover{border-color:var(--purple)}
.ttr-back:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.ttr-back.is-on{box-shadow:inset 0 0 0 2px var(--purple-deep);border-color:var(--purple-deep)}
.ttr-back-custom{background:conic-gradient(#c62828,#b88a00,#1f9d55,#3f8fc4,#5b4bd1,#c62828)}
/* Custom hex swatches */
.ttr-swatches{display:flex;flex-direction:column;gap:5px;margin:0 0 12px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:#fff}
.ttr-swatch{display:flex;align-items:center;gap:6px}
.ttr-swatch input[type=color]{width:30px;height:28px;padding:0;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer;flex:0 0 30px}
.ttr-hex{flex:1 1 auto;min-width:0;font-family:var(--ey-mono);font-size:11.5px;text-transform:lowercase}
.ttr-swatch-x{width:24px;height:24px;flex:0 0 24px;border:none;border-radius:5px;background:none;font-size:14px;line-height:1;color:var(--muted);cursor:pointer}
.ttr-swatch-x:hover{background:#f0f0f3;color:var(--red)}
.ttr-swatch-bg{margin:0 0 12px}
/* Slicer: an on-canvas filter that stays live for readers */
.ttr-slicer-head{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;margin-bottom:8px}
.ttr-slicer-head .ttr-pane-h{margin:0}
.ttr-slicer-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px;max-height:300px;overflow:auto}
.ttr-slice{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;min-height:32px;
  padding:5px 9px;border:1px solid transparent;border-radius:7px;background:none;font:inherit;font-size:12px;
  color:#3a3a46;text-align:left;cursor:pointer}
.ttr-slice:hover{background:#faf9ff;border-color:#ddd9f5}
.ttr-slice:focus-visible{outline:2px solid var(--purple-deep);outline-offset:1px}
.ttr-slice.is-on{background:#f1eeff;border-color:#cfc6ff;color:var(--purple-deep);font-weight:700}
.ttr-slice-box{width:16px;height:16px;border:1.5px solid #c9c3ef;border-radius:4px;display:grid;place-items:center;
  font-size:10px;font-weight:800;color:#fff;background:#fff}
.ttr-slice.is-on .ttr-slice-box{background:var(--purple-deep);border-color:var(--purple-deep)}
.ttr-slice-l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ttr-slice b{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:700}
.ttr-slice.is-on b{color:var(--purple-deep)}
.ttr-pie-lab{font-size:11px;font-weight:800;fill:#fff;paint-order:stroke;stroke:rgba(0,0,0,.25);stroke-width:2.5px}
/* Field wells */
.ttr-wells{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;margin-bottom:10px}
.ttr-well{position:relative;display:flex;flex-direction:column;gap:4px;padding:7px 10px;border:1px dashed #c9c3ef;border-radius:9px;background:#fff;min-height:58px}
.ttr-well.is-filled{border-style:solid;border-color:var(--line)}
.ttr-well.is-over{border-color:var(--purple-deep);background:#f1eeff;border-style:solid}
.ttr-well-l{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
.ttr-well-l i{font-style:normal;font-weight:700;color:var(--purple-deep)}
.ttr-well-empty{font-size:12px;color:#9a9aa5}
.ttr-well-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}
.ttr-well-list li{display:flex;align-items:center;gap:4px}
.ttr-well-list li+li{padding-left:10px;position:relative}
.ttr-well-list li+li::before{content:"";position:absolute;left:2px;top:50%;width:5px;height:1px;background:#c9c3ef}
.ttr-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;background:#f1eeff;color:var(--purple-deep);font-size:11.5px;font-weight:700}
.ttr-chip-tools{display:inline-flex;gap:1px;margin-left:auto}
.ttr-chip-tools button{width:20px;height:20px;border:none;border-radius:4px;background:none;font-size:11px;line-height:1;color:var(--muted);cursor:pointer}
.ttr-chip-tools button:hover{background:#f0f0f3;color:var(--purple-deep)}
.ttr-well-hint{font-size:10px;color:var(--muted)}
.ttr-well-sel{width:100%;margin-top:2px;border:none;border-radius:6px;background:#f7f7fa;padding:3px 6px;font:inherit;font-size:10.5px;color:var(--purple-deep);cursor:pointer}
.ttr-well-sel:focus-visible{outline:2px solid var(--purple-deep);outline-offset:1px}
body.ttr-dragging .ttr-well-sel{pointer-events:none}
/* Nested pivot headers */
.ttr-drillbar{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;margin-bottom:8px}
.ttr-drill{display:inline-flex;align-items:center;gap:7px;width:100%;min-height:28px;padding:2px 0;border:none;background:none;
  font:inherit;font-weight:800;color:inherit;text-align:left;cursor:pointer}
.ttr-drill:hover{color:var(--purple-deep)}
.ttr-drill:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.ttr-pivot tr.ttr-rolled td{background:#faf9ff}
.ttr-pivot th.ttr-rowhead{vertical-align:bottom}
.ttr-pivot th.ttr-colgroup{border-bottom:1px solid var(--line);text-align:center}
.ttr-pivot th[rowspan]{vertical-align:top}
.ttr-pivot th.ttr-rowgroup{background:#faf9ff;border-right:1px solid var(--line);font-weight:800}
.ttr-pivot tr.ttr-subtotal th,.ttr-pivot tr.ttr-subtotal td{background:#f4f2fe;font-weight:800;color:var(--purple-deep)}
/* Fields pane */
.ttr-fields .ttr-search{width:100%;margin-bottom:8px}
.ttr-fieldgroup+.ttr-fieldgroup{margin-top:2px}
.ttr-fieldgroup-h{display:flex;align-items:center;gap:7px;width:100%;min-height:32px;padding:5px 4px;border:none;background:none;
  font:inherit;font-size:11.5px;font-weight:800;color:#3a3a46;cursor:pointer;text-align:left}
.ttr-fieldgroup-h svg{color:#8a84c4}
.ttr-fieldgroup-h i{margin-left:auto;font-style:normal;font-size:10px;font-weight:700;color:var(--muted)}
.ttr-fieldgroup-h:hover{color:var(--purple-deep)}
.ttr-caret{width:0;height:0;border-left:5px solid #9a9aa5;border-top:4px solid transparent;border-bottom:4px solid transparent;flex:0 0 5px}
.ttr-caret.is-open{border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #9a9aa5}
.ttr-fieldlist{list-style:none;margin:0 0 4px;padding:0 0 0 14px;display:flex;flex-direction:column}
.ttr-field{display:flex;align-items:center;gap:7px;width:100%;min-height:30px;padding:4px 8px;border:1px solid transparent;border-radius:7px;
  background:none;font:inherit;font-size:11.5px;color:#3a3a46;text-align:left;cursor:grab}
.ttr-field:hover{background:#faf9ff;border-color:#ddd9f5}
.ttr-field:active{cursor:grabbing}
.ttr-field:focus-visible{outline:2px solid var(--purple-deep);outline-offset:1px}
.ttr-grip{flex:0 0 7px;height:13px;border-radius:2px;background:
  radial-gradient(circle,#b9b9c6 1px,transparent 1.2px) 0 0/3.5px 4.5px}
.ttr-fields-hint{margin:10px 0 0}
/* Selected visual and drop target on the canvas */
.ttr-block.is-active{box-shadow:0 0 0 2px var(--purple-deep)}
.ttr-block.is-over{box-shadow:0 0 0 2px var(--purple-deep);background:#faf9ff}
/* PNG export regions: the visual alone, then the criteria sheet parked off-canvas. */
.ttr-body{min-width:0}
.ttr-body.is-shooting{padding:18px 20px;border-top:4px solid var(--ey-yellow);background:#fff}
.ttr-body.is-shooting .ttr-shot-title{display:block}
.ttr-shot-title{display:none;margin:0 0 10px;font-size:15px;font-weight:800;color:var(--text)}
.ttr-crit{position:absolute;left:-10000px;top:0;width:620px;padding:22px 26px;background:#fff;
  font-size:12.5px;color:var(--text);border-top:4px solid var(--ey-yellow)}
.ttr-crit .ttr-shot-title{display:block;font-size:17px}
.ttr-crit-sub{margin:0 0 16px;font-size:11px;font-weight:700;color:var(--muted)}
.ttr-crit-grid{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.ttr-crit-row{display:grid;grid-template-columns:150px minmax(0,1fr);gap:14px;padding:8px 12px;background:#fff}
.ttr-crit-row span{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76;align-self:center}
.ttr-crit-row b{font-weight:800}
.ttr-crit-block{margin-top:16px}
.ttr-crit-h{margin:0 0 6px;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
.ttr-crit-item{margin:0 0 4px;padding:6px 10px;border-radius:6px;background:#f4f2fe;font-weight:700}
.ttr-crit-item.is-none{background:#f7f7fa;color:var(--muted);font-weight:400}
/* Blank canvas */
.ttr-blank{grid-column:1/-1;text-align:center}
.ttr-blank h3{margin:14px 0 4px;font-size:18px;font-weight:800}
.ttr-blank>p{margin:0 auto 18px;max-width:430px}
.ttr-blank .ttr-vis{max-width:700px;margin:0 auto}
.ttr-viewpick{min-width:200px;max-width:280px;font-weight:700}
/* Saved views get their own corner of the header, away from the build controls. */
/* A grid, not flex, so a longer subtitle never nudges the pickers sideways. The controls column
   sizes to content, which is constant because the Start-from slot is always kept in the layout. */
.ttr-root .tt-headrow{display:grid;grid-template-columns:minmax(0,1fr) auto 250px;gap:12px 20px;align-items:start}
.ttr-root .tt-actions{align-self:center;justify-self:start;flex-wrap:nowrap}
.ttr-root .ttr-savedbar{margin-left:0;width:auto}
.ttr-pick.is-reserved{visibility:hidden}
.ttr-savedbar{flex:0 0 auto;width:250px;margin-left:auto;padding-left:18px;border-left:1px solid var(--line);
  display:flex;flex-direction:column;gap:7px}
.ttr-savedbar-top{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.ttr-savedbar-h{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
.ttr-savedbar-dirty{font-size:10px;font-weight:800;color:#b26a00}
.ttr-savedbar .ttr-viewpick{width:100%;max-width:none;min-width:0}
.ttr-savedbar-actions{display:flex;flex-wrap:wrap;gap:2px 14px}
.ttr-savedbar .ttr-saveform{margin:0}
@media (max-width:1250px){
  .ttr-root .tt-headrow{grid-template-columns:minmax(0,1fr) 250px}
  .ttr-root .tt-actions{grid-column:1/-1}
}
@media (max-width:900px){
  .ttr-root .tt-headrow{grid-template-columns:minmax(0,1fr)}
  .ttr-savedbar{width:100%;margin-left:0;padding-left:0;border-left:none;border-top:1px solid var(--line);padding-top:12px}
}
/* Fixed, not min/max: a select sizes to its chosen option, which would shift the row per source. */
.ttr-sourcepick{width:232px;min-width:0;max-width:none;font-weight:700}
.ttr-root .tt-actions .ttr-pick .tt-input{width:232px;min-width:0;max-width:none}
.ttr-fields-src{margin:-4px 0 8px;font-weight:700}
.ttr-blank-none{margin-top:18px}
.ttr-views .ttr-view-actions{display:flex;flex-wrap:wrap;gap:4px 14px;margin-bottom:6px}
.ttr-saveform{display:flex;flex-direction:column;gap:6px;border:1px solid #ddd9f5;border-radius:10px;padding:8px 10px;margin-bottom:8px;background:#fbfaff}
.ttr-saveform .tt-input{max-width:none;width:100%}
.ttr-view-group{margin:10px 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#6b6b76}
.ttr-viewlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ttr-view{border:1px solid var(--line);border-radius:10px;padding:6px 10px}
.ttr-view.is-active{border-color:#cfc6ff;background:#f4f2fe}
.ttr-view-open{display:flex;flex-direction:column;gap:2px;width:100%;min-height:40px;padding:4px 0;background:none;border:none;font:inherit;text-align:left;cursor:pointer}
.ttr-view-name{font-size:12.5px;font-weight:800;color:var(--text)}
.ttr-view-open:focus-visible{outline:2px solid var(--purple-deep);outline-offset:2px}
.ttr-view-tools{display:flex;gap:12px;flex-wrap:wrap}
.ttr-me{margin:0}
@media (max-width:1100px){
  .ttr-layout{grid-template-columns:1fr}
  .ttr-rail{position:static;max-height:none}
  .ttr-canvas{grid-template-columns:1fr}
  .ttr-block{grid-column:auto}
}
