/* Identidade visual compartilhada pela consulta e pelas páginas individuais. */
:root{--bg:#f3f4f7;--ink:#20232b;--mut:#3c414c;--ln:#626875;--dv:#e3e5ef;--surface:#fff;--soft:#f0f1f5;--ac:#20235d;--nx:#ffc72c;--brand-red:#d92b3a;--shadow:0 8px 24px rgba(25,29,45,.11)}
body{color:var(--ink);background:var(--bg)}
#side,#main,.line-schedule,.itinerary-section{border-color:var(--dv);background:var(--surface);box-shadow:var(--shadow)}
.app #main .t sup,.app #main .lg sup{margin-left:2px;color:#d92b3a;font-size:.7em;font-weight:800}
/* Calendário e destino usam os mesmos contornos, estados e reação ao mouse. */
.app #main .ch,.line-schedule .ch{min-height:42px;padding:7px 11px;border:1.5px solid #c9ccda;border-radius:12px;background:#fff;color:#303550;font-size:14px;font-weight:700;line-height:1.25;transition:transform .15s,box-shadow .15s,background-color .15s,border-color .15s}
.app #main .ch.sp,.line-schedule .ch.sp{border-style:dashed}
.app #main .ch:hover,.line-schedule .ch:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(32,36,78,.12)}
.app #main .ch.on,.line-schedule .ch.on,.line-schedule .ch[aria-pressed="true"]{border-color:var(--ac);background:var(--ac);color:#fff}
.app #main .sg .ch,.line-schedule .sg .ch{min-height:48px;justify-content:flex-start;text-align:left}
.app #main .ch:focus-visible,.line-schedule .ch:focus-visible{outline:3px solid var(--brand-red);outline-offset:3px}
@media(prefers-reduced-motion:reduce){.app #main .ch,.line-schedule .ch{transition:none}}
/* Cartão da próxima saída e horários seguem a mesma paleta. */
.app #main .nx,.line-schedule .nx{border:0;border-radius:16px;background:var(--nx);color:#171717;box-shadow:inset 0 0 0 1px rgba(30,25,0,.13)}
.app #main .nx.off,.line-schedule .nx.off{border:1px solid #d7d9e4;background:#f0f1f5;color:var(--ink);box-shadow:none}
.app #main .t,.line-schedule .t{border:1.5px solid #d7d9e4;border-radius:9px;background:#fff;color:var(--ink)}
.app #main .t{font-family:inherit;font-size:1rem;font-weight:700;font-variant-numeric:tabular-nums}
.app #main .t.past,.line-schedule .t.past{border-color:#e3e5e9;background:#e3e5e9;color:#454545}
.app #main .t.nx1,.line-schedule .t.nx1{border-color:var(--ac);background:var(--nx);color:#171717}
.app #main .note,.line-schedule .note{border-left:5px solid var(--ac);border-radius:10px;background:#f0f1f5;color:#252934}
.app #main h2,.line-schedule h2,.itinerary-section h2{color:#292b59}
.line-overview .num{background:var(--brand-red)}
.app #main .schedule-instruction{margin:-8px 0 12px;color:var(--ln);font-size:.92rem;line-height:1.45}
/* Ações da linha: dourado identifica favoritos; azul identifica compartilhamento. */
.app .detail-actions .fv.on:hover{border-color:#c99300;background:#f4bd18;box-shadow:0 4px 12px rgba(151,106,0,.16)}
.app .detail-actions button[data-share]{border:1.5px solid #20235d;border-radius:12px;background:#fff;color:#20235d;transition:transform .15s,box-shadow .15s,background-color .15s}
.app .detail-actions button[data-share]:hover{transform:translateY(-1px);border-color:#20235d;background:#f0f1fa;color:#20235d;box-shadow:0 4px 12px rgba(32,35,93,.14)}
/* Estrela no cabeçalho: botão sem rótulo visível, ligado ao mesmo estado da lista. */
.app #main .favorite-indicator{z-index:1;padding:0;border:0;border-radius:0;background:transparent;cursor:pointer}
.app #main .favorite-indicator:not(.on){color:#302f7e}
.app #main .favorite-indicator.on{color:#d49b00}
.app #main .favorite-indicator.on .favorite-star{fill:#ffc928;stroke:#b77e00;stroke-width:1.5}
.app #main .favorite-indicator:focus-visible{outline:3px solid var(--brand-red);outline-offset:3px;border-radius:4px}

/* Na consulta, cada horário continua compacto até a abertura do seu itinerário. */
.app #main .hr>div{display:flex;flex-wrap:wrap;align-items:flex-start;gap:3px 4px}
.app #main .departure-detail{display:inline-flex;max-width:100%;flex-direction:column;align-items:flex-start;vertical-align:top;margin:2px 0}
.app #main .departure-detail[open]{width:min(100%,460px);flex:0 1 460px}
.app #main .departure-detail summary{list-style:none;cursor:pointer}
.app #main .departure-detail summary::-webkit-details-marker{display:none}
.app #main .departure-detail summary:focus-visible{outline:3px solid var(--brand-red);outline-offset:3px}
.app #main .departure-itinerary{width:100%;max-height:18rem;overflow:auto;margin-top:7px;padding:10px 12px;border:1px solid #deddf0;border-radius:10px;background:#f8f8fc;color:#303550}
.app #main .departure-itinerary-title{margin:0 0 7px;color:#3e4095;font-size:.9rem;font-weight:800}
.app #main .departure-route+.departure-route{margin-top:12px;padding-top:10px;border-top:1px solid #deddf0}
.app #main .departure-route p{margin:0 0 6px;font-size:.82rem;line-height:1.4}
.app #main .departure-route ol{display:grid;gap:0;margin:0;padding-left:1.35rem;color:#454b5c;font-size:.82rem;line-height:1.45}
.app #main .departure-route li{padding:2px 0}
@media(max-width:760px){.app #main .t{font-size:.95rem}.app #main .departure-detail[open]{width:100%;flex-basis:100%}.app #main .departure-itinerary{max-height:15rem;padding:9px 10px}}