/* 「沿路區間清單頁」共用版面
   使用頁面：即時影像 /roadcctv、資訊可變標誌 /n_cms
   （各頁專屬樣式放自己的 css/view/<page>/index.css，這裡只放兩頁都一樣的骨架）

   版面：中央一條路線軸，兩個行車方向各排一邊，由上往下＝沿路開過去的順序。
   配色集中在 :root 變數，深色模式（html.dark-mode）只覆寫變數，不重寫每條規則。
   深色配色基準沿用 main.css 深色模式區塊：面板底 #1c2330／卡片底 #232b3a／邊線 #3a4356 */

:root {
    --rc-page-bg-1: #eaf2f8;
    --rc-page-bg-2: #f6f8fa;
    --rc-surface: #fff;
    --rc-surface-soft: #eef4fa;
    --rc-border: #dfe6ee;
    --rc-text: #2b3440;
    --rc-text-soft: #6b7887;
    --rc-brand: #2c5484;
    --rc-brand-soft: #4a7ab5;
    --rc-rail: #cfdcea;
    --rc-shadow: 0 2px 14px rgba(23, 43, 71, .09);
    --rc-shadow-hover: 0 10px 26px rgba(23, 43, 71, .18);
    /* 曾用兩個行車方向各給識別色（左藍右青），使用者確認不要，改為統一主色。保留變數備查
    --rc-left: #2f6fb5;
    --rc-right: #16897f; */
}

html.dark-mode {
    --rc-page-bg-1: #141a23;
    --rc-page-bg-2: #1c2330;
    --rc-surface: #232b3a;
    --rc-surface-soft: #2b3446;
    --rc-border: #3a4356;
    --rc-text: #e6e9ef;
    --rc-text-soft: #aab3c5;
    --rc-brand: #8ab4e8;
    --rc-brand-soft: #6f9fd8;
    --rc-rail: #3a4356;
    --rc-shadow: 0 2px 14px rgba(0, 0, 0, .45);
    --rc-shadow-hover: 0 10px 26px rgba(0, 0, 0, .6);
}

.rc-container {
    max-width: 1180px;
    margin: 0 auto;
    padding: 90px 20px 60px;
    color: var(--rc-text);
}

/* 頁面底色：淡漸層讓白卡片浮起來（貼在 body 上會影響其他頁，所以做在容器的偽元素） */
.rc-container::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    background: linear-gradient(160deg, var(--rc-page-bg-1) 0%, var(--rc-page-bg-2) 55%);
}

/* ── 頁首 ─────────────────────────────────── */

.rc-page-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--rc-brand);
    margin: 0 0 4px;
    line-height: 1.4;
}

.rc-page-title i {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    font-size: 1rem;
    color: #fff;
    background: linear-gradient(135deg, var(--rc-brand) 0%, var(--rc-brand-soft) 100%);
    box-shadow: 0 4px 12px rgba(44, 84, 132, .3);
}

.rc-page-desc {
    margin: 0 0 20px 48px;
    font-size: .875rem;
    color: var(--rc-text-soft);
}

/* ── 查詢列 ───────────────────────────────── */

.rc-toolbar {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 14px;
    background: var(--rc-surface);
    border: 1px solid var(--rc-border);
    border-radius: 16px;
    padding: 20px;
    box-shadow: var(--rc-shadow);
}

.rc-field {
    display: flex;
    flex-direction: column;
    gap: 7px;
    flex: 1 1 200px;
    min-width: 0; /* 讓 select 在窄畫面能縮，不撐出水平捲軸 */
}

.rc-field-road {
    flex: 0 1 180px;
}

.rc-label {
    font-size: .8125rem;
    color: var(--rc-text-soft);
    font-weight: 700;
    letter-spacing: .02em;
}

.rc-select {
    width: 100%;
    height: 44px;
    padding: 0 36px 0 13px;
    border: 1px solid var(--rc-border);
    border-radius: 10px;
    background: var(--rc-surface);
    color: var(--rc-text);
    font-size: .9375rem;
    cursor: pointer;
    /* 自訂下拉箭頭，各瀏覽器外觀才一致 */
    appearance: none;
    background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
    background-position: calc(100% - 18px) 19px, calc(100% - 13px) 19px;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    transition: border-color .2s, box-shadow .2s;
}

.rc-select:hover:not(:disabled) {
    border-color: var(--rc-brand-soft);
}

.rc-select:disabled {
    background-color: var(--rc-surface-soft);
    color: var(--rc-text-soft);
    cursor: not-allowed;
    opacity: .7;
}

.rc-select:focus-visible,
.rc-btn:focus-visible,
.rc-dir:focus-visible {
    outline: 3px solid var(--rc-brand-soft);
    outline-offset: 2px;
}

.rc-arrow {
    flex: 0 0 auto;
    padding-bottom: 13px;
    color: var(--rc-text-soft);
    opacity: .7;
}

.rc-btn {
    height: 44px;
    padding: 0 18px;
    border: 1px solid var(--rc-border);
    border-radius: 10px;
    background: var(--rc-surface);
    color: var(--rc-text);
    font-size: .9375rem;
    cursor: pointer;
    white-space: nowrap;
    transition: background .2s, border-color .2s, transform .1s;
}

.rc-btn:hover {
    background: var(--rc-surface-soft);
    border-color: var(--rc-brand-soft);
}

.rc-btn:active {
    transform: translateY(1px);
}

.rc-btn-primary {
    flex: 0 0 auto;
    border: none;
    background: linear-gradient(135deg, var(--rc-brand) 0%, var(--rc-brand-soft) 100%);
    color: #fff;
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(44, 84, 132, .28);
}

.rc-btn-primary:hover {
    background: linear-gradient(135deg, #24456e 0%, #3f6da5 100%);
    color: #fff;
}

/* ── 結果列（起訖 + 方向頁籤 + 更新控制）───── */

/* 捲動看影像時「立即更新／方向切換」要一直按得到 → 黏在頂端 */
.rc-bar {
    position: sticky;
    top: 8px;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 22px;
    padding: 13px 18px;
    /* 先給不透明底色當 fallback：舊瀏覽器不認得 color-mix 會整條丟掉，背景就變透明了 */
    background: var(--rc-surface);
    background: color-mix(in srgb, var(--rc-surface) 92%, transparent);
    border: 1px solid var(--rc-border);
    backdrop-filter: blur(10px);
    border-radius: 14px;
    box-shadow: var(--rc-shadow);
}

.rc-bar-left {
    display: flex;
    flex-direction: column;
    gap: 9px;
    min-width: 0;
}

.rc-route {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: .9375rem;
    font-weight: 800;
    color: var(--rc-brand);
}

.rc-dirs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.rc-dir {
    padding: 6px 15px;
    border: 1px solid var(--rc-border);
    border-radius: 20px;
    background: var(--rc-surface);
    font-size: .8125rem;
    color: var(--rc-text-soft);
    cursor: pointer;
    transition: all .2s;
}

.rc-dir:hover {
    border-color: var(--rc-brand-soft);
    color: var(--rc-brand);
}

.rc-dir.active {
    background: linear-gradient(135deg, var(--rc-brand) 0%, var(--rc-brand-soft) 100%);
    border-color: transparent;
    color: #fff;
    font-weight: 700;
}

.rc-refresh {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.rc-updated {
    font-size: .8125rem;
    color: var(--rc-text-soft);
}

.rc-auto {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .875rem;
    color: var(--rc-text-soft);
    cursor: pointer;
    user-select: none;
}

.rc-auto input {
    accent-color: var(--rc-brand);
    cursor: pointer;
}

/* ── 提示訊息 ─────────────────────────────── */

.rc-hint {
    margin-top: 22px;
    padding: 48px 20px;
    text-align: center;
    color: var(--rc-text-soft);
    background: var(--rc-surface);
    border: 1px solid var(--rc-border);
    border-radius: 16px;
    box-shadow: var(--rc-shadow);
}

.rc-hint.rc-error {
    color: #c0392b;
    border-color: #f0c4bf;
}

html.dark-mode .rc-hint.rc-error {
    color: #ff9d92;
    border-color: #6b3a35;
}

/* ── 攝影機清單 ───────────────────────────── */

.rc-list {
    max-width: 1100px;
    margin: 18px auto 0;
}

.rc-row {
    display: flex;
    align-items: stretch;
    gap: 16px;
}

/* 左右兩條車道 */
.rc-cell {
    flex: 1 1 0;
    min-width: 0;
}

/* 方向標題列 */
.rc-heads {
    position: sticky;
    top: 96px; /* 讓開上方 sticky 的 .rc-bar */
    z-index: 4;
    align-items: flex-end;
    padding-bottom: 10px;
}

/* 兩側方向統一用主色，不做南北向的顏色區分 */
.rc-lane-head {
    text-align: center;
    font-size: .8125rem;
    font-weight: 800;
    letter-spacing: .04em;
    color: #fff;
    border-radius: 20px;
    padding: 7px 14px;
    box-shadow: var(--rc-shadow);
    background: linear-gradient(135deg, var(--rc-brand) 0%, var(--rc-brand-soft) 100%);
}

/* 中央路線軸：一條貫穿的線 + 每支攝影機一個節點 */
.rc-rail {
    position: relative;
    flex: 0 0 24px;
}

.rc-rail::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 4px;
    transform: translateX(-50%);
    border-radius: 2px;
    background: var(--rc-rail);
}

.rc-rail-head::before {
    display: none; /* 標題列不畫線，線從第一張卡片才開始 */
}

/* 頭尾把線收掉一半，看起來才是起訖而不是被切斷 */
.rc-row.is-first .rc-rail::before {
    top: 26px;
}

.rc-row.is-last .rc-rail::before {
    bottom: calc(100% - 26px);
}

.rc-dot {
    position: absolute;
    left: 50%;
    top: 20px;
    width: 14px;
    height: 14px;
    box-sizing: border-box;
    transform: translateX(-50%);
    border-radius: 50%;
    background: var(--rc-surface);
    border: 3px solid var(--rc-brand);
    box-shadow: 0 0 0 4px var(--rc-page-bg-2);
    transition: box-shadow .2s;
}

.rc-row:hover .rc-dot {
    box-shadow: 0 0 0 4px var(--rc-page-bg-2), 0 0 0 8px rgba(44, 84, 132, .22);
}

/* ── 卡片 ─────────────────────────────────── */

.rc-card {
    background: var(--rc-surface);
    border: 1px solid var(--rc-border);
    border-radius: 14px;
    overflow: hidden;
    box-shadow: var(--rc-shadow);
    margin-bottom: 20px;
    /* 進場淡入上移，一次載入十幾張才不會突兀 */
    animation: rc-fade-in .35s ease both;
}

@keyframes rc-fade-in {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .rc-card {
        animation: none;
    }
}

.rc-card-head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--rc-border);
}

/* .mark 與 .mark_xxxxx 來自全域 icons.css，是國道梅花標誌 */
.rc-card-head .mark {
    flex: 0 0 auto;
}

.rc-card-title {
    font-size: .9375rem;
    color: var(--rc-text);
    font-weight: 700;
    line-height: 1.4;
    word-break: break-word;
}

.rc-card-km {
    margin-left: auto;
    flex: 0 0 auto;
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .02em;
    color: var(--rc-brand);
    padding: 4px 10px;
    border-radius: 12px;
    background: var(--rc-surface-soft);
}

/* ── 回到頂部 ─────────────────────────────── */
/* 尺寸／位置／品牌紫沿用 weather.css、ad.css 等頁的既有寫法，全站這顆按鈕外觀一致。
   紫色是語意色，main.css 深色模式區塊刻意不覆蓋它，這裡同樣不動 */

.back-to-top {
    position: fixed;
    bottom: 40px;
    right: 20px;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: #3730a3;
    color: #fff;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.125rem;
    box-shadow: 0 4px 12px rgba(55, 48, 163, .35);
    opacity: 0;
    pointer-events: none;
    transition: opacity .25s ease, transform .25s ease;
    z-index: 999;
}

.back-to-top.visible {
    opacity: 1;
    pointer-events: auto;
}

.back-to-top:hover {
    background: #4338ca;
    transform: translateY(-2px);
}

.back-to-top:focus-visible {
    outline: 3px solid var(--rc-brand-soft);
    outline-offset: 2px;
}

/* ── 窄畫面 ───────────────────────────────── */

@media (max-width: 768px) {
    .rc-container {
        padding: 80px 14px 40px;
    }

    .rc-page-desc {
        margin-left: 0;
    }

    .rc-toolbar {
        padding: 16px;
    }

    .rc-field-road,
    .rc-field {
        flex: 1 1 100%;
    }

    .rc-arrow {
        display: none;
    }

    .rc-btn-primary {
        width: 100%;
    }

    .rc-bar {
        top: 0;
    }

    /* 窄畫面塞不下兩欄：路線軸收到最左邊，兩個方向改成同一欄由上往下，
       靠卡片的方向色與標題文字區分，不再左右分 */
    .rc-row {
        gap: 10px;
    }

    .rc-rail {
        flex: 0 0 16px;
        order: -1;
    }

    .rc-cell:empty {
        display: none;
    }

    .rc-heads {
        display: none;
    }
}
