/* Route redo (Oct 23 2026): Route page classes that replace inline styles, the heart spot, and the Route widget. */
/* Heart: on Route it sits right after the Route page icon (Menu or Back > Route icon > heart), never alone on the far left. */
/* Top Bar order (Travis Oct 23 2026): first slot is Back, or the three-line Menu when there is no Back; then page icon, then heart, then the rest. Route has no Back, so Menu sits far left. */
.field-app .top > .back-link, .field-app .top > .tb-page-ico, .field-app .top > .tt-heart, .field-app .top > .field-menu-ico { order: 0; }
.field-app .top:not(:has(> .back-link)) > .field-menu-ico { order: -1; }
/* Score dial fill and Service budget meter, in steps of 5 */
.score-dial.sd-p0 { --p: 0; } #job-fill.jm-w0 { width: 0%; }
.score-dial.sd-p5 { --p: 5; } #job-fill.jm-w5 { width: 5%; }
.score-dial.sd-p10 { --p: 10; } #job-fill.jm-w10 { width: 10%; }
.score-dial.sd-p15 { --p: 15; } #job-fill.jm-w15 { width: 15%; }
.score-dial.sd-p20 { --p: 20; } #job-fill.jm-w20 { width: 20%; }
.score-dial.sd-p25 { --p: 25; } #job-fill.jm-w25 { width: 25%; }
.score-dial.sd-p30 { --p: 30; } #job-fill.jm-w30 { width: 30%; }
.score-dial.sd-p35 { --p: 35; } #job-fill.jm-w35 { width: 35%; }
.score-dial.sd-p40 { --p: 40; } #job-fill.jm-w40 { width: 40%; }
.score-dial.sd-p45 { --p: 45; } #job-fill.jm-w45 { width: 45%; }
.score-dial.sd-p50 { --p: 50; } #job-fill.jm-w50 { width: 50%; }
.score-dial.sd-p55 { --p: 55; } #job-fill.jm-w55 { width: 55%; }
.score-dial.sd-p60 { --p: 60; } #job-fill.jm-w60 { width: 60%; }
.score-dial.sd-p65 { --p: 65; } #job-fill.jm-w65 { width: 65%; }
.score-dial.sd-p70 { --p: 70; } #job-fill.jm-w70 { width: 70%; }
.score-dial.sd-p75 { --p: 75; } #job-fill.jm-w75 { width: 75%; }
.score-dial.sd-p80 { --p: 80; } #job-fill.jm-w80 { width: 80%; }
.score-dial.sd-p85 { --p: 85; } #job-fill.jm-w85 { width: 85%; }
.score-dial.sd-p90 { --p: 90; } #job-fill.jm-w90 { width: 90%; }
.score-dial.sd-p95 { --p: 95; } #job-fill.jm-w95 { width: 95%; }
.score-dial.sd-p100 { --p: 100; } #job-fill.jm-w100 { width: 100%; }
/* Route widget (Workspace Engine). Standard table: gray header row, thin solid lines. */
.dw-route { min-width: 0; overflow: auto; height: 100%; }
.dw-route-full { overflow: hidden; display: flex; }
.dw-route-full iframe { flex: 1; min-height: 520px; }
.dw-route .rw-glance { margin: 0; box-shadow: none; border: 0; padding: 0; }
.dw-route .rw-glance h2 { display: none; }
.rw-glance h2 { font-weight: 400; margin: 0 0 8px; }
.rw-next { margin: 8px 0 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rw-list-wrap { margin-top: 10px; max-width: 100%; overflow: hidden; }
.rw-list { width: 100%; border-collapse: collapse; }
.rw-list th { background: var(--paper); text-align: left; padding: var(--t-pad, 6px 8px); border-bottom: 1px solid var(--line); font-weight: 400; }
.rw-list td { padding: var(--t-pad, 6px 8px); border-bottom: 1px solid var(--line); }
.rw-more { margin: 6px 0 0; font-size: .78rem; }
@media (max-width: 480px) { .rw-list th, .rw-list td { padding: var(--t-pad, 5px 4px); font-size: .74rem; } }

/* Inside a widget frame (tt-pw: Route widget XL/Full, Page widget), Route draws without its own Top Bar, phone tabs or Full Screen buttons, like header.php embed mode. */
html.tt-embed .field-app > header.top, html.tt-embed .phone-dock, html.tt-embed .ws-fab, html.tt-embed .ws-corner, html.tt-embed .pc-support { display: none !important; }
/* Wide and Full Screen Route widget (Tracker 972): inside the widget frame Route fills the frame (no 480px phone column, no dark sides). */
html.tt-embed .field-app, html.tt-embed .field-sheet, html.tt-embed body.field-body .notices { max-width: none; }
html.tt-embed, html.tt-embed body { overflow-x: hidden; }
