/* Scoped to the Kanchanaburi traffic source card. */
.kh-traffic-source{display:flex;align-items:center;gap:18px;margin:0 0 28px;padding:22px;border:1px solid #fecaca;border-top:5px solid #dc1738;border-radius:20px;background:linear-gradient(120deg,#fff1f3,#fff 72%);box-shadow:0 8px 24px #8813370b;color:#172033;isolation:isolate}
.kh-traffic-symbol{display:grid;place-items:center;flex:0 0 72px;width:72px;height:84px;border-radius:18px;background:#be123c;color:#fff;box-shadow:0 5px 13px #be123c20}
.kh-traffic-symbol svg{display:block;width:51px;height:62px}
.kh-traffic-copy{flex:1;min-width:0}
.kh-traffic-label{display:inline-block;padding:3px 9px;margin-bottom:5px;border-radius:999px;background:#be123c;color:#fff;font-size:12px;font-weight:700;line-height:1.6}
.news-content .kh-traffic-source h2{margin:0 0 5px;padding:0;border:0;font-size:clamp(21px,2.4vw,27px);line-height:1.4;color:#9f1239}
.news-content .kh-traffic-source p{margin:0 0 3px;font-size:15px;line-height:1.6;color:#334155}
.kh-traffic-copy small{display:block;font-size:13px;line-height:1.6;color:#475569}
.kh-traffic-actions{display:flex;flex-direction:column;align-items:center;flex:0 0 auto;gap:6px}
.kh-traffic-source .kh-traffic-open{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;box-sizing:border-box;padding:10px 16px;border:2px solid #be123c;border-radius:12px;background:#be123c;color:#fff;text-decoration:none;font-size:15px;font-weight:700;line-height:1.5;box-shadow:0 4px 10px #be123c1a}
.kh-traffic-source .kh-traffic-open:hover{background:#9f1239;border-color:#9f1239;color:#fff;text-decoration:none}
.kh-traffic-source .kh-traffic-open:focus-visible{outline:3px solid #1d4ed8;outline-offset:4px}
.kh-traffic-open svg{width:19px;height:19px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.kh-traffic-open .screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.kh-traffic-actions>span{font-size:12px;line-height:1.5;color:#475569}
@media(max-width:900px){.kh-traffic-source{flex-wrap:wrap}.kh-traffic-actions{flex-basis:100%;align-items:flex-start;padding-left:90px}}
@media(max-width:540px){.kh-traffic-source{gap:12px;padding:16px;border-radius:16px}.kh-traffic-symbol{flex-basis:52px;width:52px;height:70px;border-radius:13px}.kh-traffic-symbol svg{width:40px;height:55px}.news-content .kh-traffic-source h2{font-size:21px}.news-content .kh-traffic-source p{font-size:14px}.kh-traffic-actions{padding-left:0;align-items:stretch}.kh-traffic-actions>span{text-align:center}.kh-traffic-source .kh-traffic-open{width:100%}}
.kh-traffic-actions>a{font-size:12px;color:#475569;text-underline-offset:3px}.kh-traffic-source .kh-traffic-open{cursor:pointer;font-family:inherit;text-align:center;max-width:100%;white-space:normal}
.kt-wall{scroll-margin-top:130px;margin:0 0 24px;padding:18px;border:1px solid #fecaca;border-radius:16px;background:#fff}.kt-wall[hidden],.kt-viewer [hidden]{display:none!important}
.kt-filters{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:10px}.kt-filters label{display:flex;flex-direction:column;gap:5px;color:#334155;font-size:13px;font-weight:600}.kt-filters input,.kt-filters select,.kt-viewer select{width:100%;box-sizing:border-box;min-height:44px;padding:9px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#172033;font:inherit;min-width:0}
.kt-wall #ktMeta{font-size:13px;color:#475569;margin:14px 0}.kt-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.kt-card{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;padding:15px;text-align:left;border:1px solid #e2e8f0;border-radius:13px;background:#fff;color:#172033;font:inherit;cursor:pointer;overflow-wrap:anywhere}.kt-card:hover{border-color:#be123c;box-shadow:0 5px 18px #be123c12}.kt-card strong{font-size:16px;line-height:1.5}.kt-card>span:not(.kt-card-icon){font-size:13px;line-height:1.6}.kt-card small{color:#475569;font-size:12px}.kt-card .kt-card-action{margin-top:auto;padding-top:6px;color:#a30c32;font-weight:700}
.kt-card-icon{display:grid;place-items:center;width:36px;height:40px;color:#be123c;background:#fff1f2;border-radius:9px}.kt-card-icon svg{width:23px;height:30px}.kt-card-state{display:block;padding:3px 7px;border-radius:6px;background:#f1f5f9;color:#475569}.kt-card-state.is-online{background:#fff1f2;color:#9f1239}
.kt-pages{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:16px}.kt-pages button,.kt-video-actions button,.kt-video-actions a{min-height:44px;padding:9px 13px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#172033;font:inherit;font-size:14px;cursor:pointer;text-decoration:none}.kt-pages button:disabled{opacity:.5;cursor:default}.kt-pages span{font-size:13px}.kt-note{font-size:12px;line-height:1.65;color:#475569;margin:12px 0 0!important}
.kt-card:focus-visible,.kt-pages button:focus-visible,.kt-viewer button:focus-visible,.kt-viewer a:focus-visible,.kt-viewer select:focus-visible{outline:3px solid #2563eb;outline-offset:3px}
.kt-viewer{padding:0;border:0;border-radius:16px;background:#fff;color:#172033;width:min(960px,calc(100vw - 24px));max-width:960px;max-height:calc(100dvh - 24px);overflow:auto;box-shadow:0 20px 80px #0006;font-family:var(--f-body,sans-serif)}.kt-viewer::backdrop{background:#061327cc}.kt-viewer-box{padding:18px;box-sizing:border-box;background:#fff;color:#172033}.kt-viewer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.kt-viewer h2{margin:0;font-size:22px;line-height:1.5;color:#13306e}.kt-station{font-size:14px;line-height:1.6;margin:4px 0 12px;color:#475569}.kt-close{flex:none;width:44px;height:44px;border:0;border-radius:10px;background:#be123c;color:#fff;font-size:28px;cursor:pointer}.kt-viewer select{margin:0 0 12px}.kt-video-area{display:grid;place-items:center;aspect-ratio:16/9;background:#071122;border-radius:10px;overflow:hidden;color:#fff}.kt-video-area video{display:block;width:100%;height:100%;max-height:70dvh;object-fit:contain;background:#000}.kt-video-area p{padding:20px;text-align:center;color:#fff}.kt-status{margin:12px 0 8px;font-size:15px;font-weight:600;line-height:1.5;color:#475569}.kt-status.is-live{color:#be123c}.kt-status.is-live:before{content:'●';margin-right:7px}.kt-video-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.kt-video-actions .kt-retry{background:#be123c;color:#fff;border-color:#be123c}.kt-viewer-box:fullscreen,.kt-viewer-box.is-expanded{width:100vw;height:100dvh;overflow:auto;border-radius:0;background:#fff}.kt-viewer-box.is-expanded{position:fixed;inset:0;z-index:2}.kt-viewer-box:fullscreen .kt-video-area{height:calc(100dvh - 250px);aspect-ratio:auto}.kt-viewer-box:fullscreen video{max-height:100%}
.kcm-pin.is-traffic{background:#be123c!important;color:#fff!important}.kcm-pin.is-traffic>svg{width:22px;height:28px}.kt-map-marker>span{display:grid;place-items:center;width:32px;height:36px;border:2px solid #fff;border-radius:10px;background:#be123c;color:#fff;box-shadow:0 2px 8px #0005}.kt-map-marker svg{width:21px;height:29px}.kt-map-tag{position:absolute;top:31px;left:50%;transform:translateX(-50%);padding:1px 4px;border:1px solid white;border-radius:4px;background:#be123c;color:#fff;white-space:nowrap;font-size:9px;line-height:1.4}
.kt-preview-placeholder{display:grid;place-items:center;width:100%;height:100%;min-height:120px;background:#fff1f2;color:#be123c;font-weight:700}
@media(max-width:900px){.kt-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.kt-filters{grid-template-columns:1fr 1fr}.kt-filters label:first-child{grid-column:1/-1}}
@media(max-width:540px){.kt-wall{padding:12px}.kt-grid{grid-template-columns:1fr}.kt-viewer{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);border-radius:12px}.kt-viewer-box{padding:12px}.kt-viewer h2{font-size:19px}.kt-station{font-size:12px}.kt-card{gap:5px}.kt-filters{grid-template-columns:1fr}.kt-video-actions{gap:6px}.kt-video-actions button,.kt-video-actions a{padding:9px 10px;font-size:13px}.kt-status{font-size:14px}}
/* v1.16.1: previews never start a stream; all player styles stay in the traffic scope. */
.kt-card{padding:0;gap:0;overflow:hidden;border-radius:15px;box-shadow:0 3px 12px #17203308;transition:border-color .16s,box-shadow .16s}
.kt-card .kt-card-body{display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:6px;padding:13px;width:100%;box-sizing:border-box}
.kt-card-body>span:not(.kt-card-state){font-size:13px;line-height:1.6}.kt-card-body strong{color:#13306e}.kt-card .kt-card-action{margin-top:auto}
.kt-preview{position:relative;display:block;isolation:isolate;width:100%;aspect-ratio:16/9;overflow:hidden;background:#132d4a;color:#fff;text-align:center;box-sizing:border-box}
.kt-preview-art{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:12%;background:linear-gradient(120deg,#102640,#244b68);overflow:hidden}
.kt-preview-art:before{content:'';position:absolute;width:190%;height:25%;left:-45%;top:50%;transform:rotate(-26deg);background:#3b536d;border-block:2px solid #718397;box-shadow:0 10px 0 #10283d55}
.kt-preview-art:after{content:'';position:absolute;width:190%;height:2px;left:-45%;top:62%;transform:rotate(-26deg);background:repeating-linear-gradient(90deg,#f8cf67 0 19px,transparent 19px 34px)}
.kt-preview-art svg{position:relative;z-index:1;width:36px;height:47px;color:#e7edf6;filter:drop-shadow(0 2px 5px #0008)}
.kt-preview>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.kt-preview.has-image:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 30%,#020817ba);z-index:1;pointer-events:none}
.kt-preview-tag{position:absolute;left:9px;top:9px;z-index:3;display:inline-block;padding:3px 8px;border-radius:6px;background:#be123c;color:white;font-size:11px;font-weight:700;line-height:1.5;box-shadow:0 1px 5px #0003}
.kt-preview-play{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);z-index:3;display:grid;place-items:center;box-sizing:border-box;width:48px;height:48px;padding-left:3px;border:2px solid #fff;border-radius:50%;background:#be123c;color:#fff;font-size:20px;line-height:1;box-shadow:0 3px 18px #0005}
.kt-preview-cta{position:absolute;top:calc(43% + 29px);left:6px;right:6px;z-index:3;color:#fff;font-size:12px;line-height:1.5;font-weight:600;text-shadow:0 1px 3px #000}
.kt-preview-caption{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:4px 7px;background:#071322db;color:#e8eef7;font-size:10px;line-height:1.5;font-weight:400}
.kt-stage-play{display:block;width:100%;height:100%;border:0;padding:0;background:none;color:inherit;cursor:pointer;font:inherit}.kt-stage-play .kt-preview-play{width:64px;height:64px;font-size:26px}.kt-stage-play .kt-preview-cta{top:calc(43% + 38px);font-size:15px}.kt-stage-play .kt-preview-art svg{width:60px;height:80px}.kt-stage-play .kt-preview-caption{font-size:12px;padding:7px}.kt-stage-play .kt-preview-tag{font-size:13px}
.kt-stage-play:hover .kt-preview-play,.kt-card:hover .kt-preview-play{background:#e11d48}.kt-stage-play:focus-visible{outline:3px solid #60a5fa;outline-offset:-4px}
.kt-video-area{position:relative}.kt-video-area>.kt-preview,.kt-video-area>.kt-stage-play{height:100%}.kt-preview-art[hidden]{display:none!important}.kt-preview-error .kt-preview-play,.kt-preview-error .kt-preview-cta{display:none}.kt-video-area iframe{display:block;width:100%;height:100%;min-height:180px;border:0;background:#000}
.kt-player-modes{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.kt-player-modes .kt-mode{min-height:44px;padding:9px 12px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#13306e;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.kt-player-modes .kt-mode[aria-pressed=true]{background:#be123c;border-color:#be123c;color:#fff}.kt-player-modes .kt-mode:hover{border-color:#be123c}
.kt-map-marker{position:relative}.kt-map-marker .kt-map-tag{top:35px}.kt-map-tag{font-weight:700}
#cctvGrid .shot>.kt-preview{height:100%}#cctvGrid .kt-preview img{position:absolute;inset:0}.kt-video-actions a{margin-left:auto;color:#174d8b;text-decoration:underline;text-underline-offset:3px}
@media(max-width:540px){.kt-stage-play .kt-preview-play{width:50px;height:50px;font-size:21px}.kt-stage-play .kt-preview-cta{top:calc(43% + 29px);font-size:12px}.kt-stage-play .kt-preview-caption{font-size:10px;padding:4px}.kt-video-actions a{margin-left:0}.kt-player-modes{gap:6px}.kt-player-modes .kt-mode{flex:1;padding:8px;font-size:12px}.kt-stage-play .kt-preview-art svg{width:36px;height:47px}}
@media(prefers-reduced-motion:reduce){.kt-card{transition:none}}
/* Day/night is an illustrative cover style only; it never edits camera photographs. */
.kt-cover-control{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 0 10px;font-size:12px;color:#3b5368}.kt-cover-control select{width:auto!important;max-width:200px;min-height:40px;margin:0!important;padding:7px 10px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#183d63;font:inherit}.kt-preview-location{position:absolute;top:11px;left:75px;right:10px;z-index:3;text-align:right;color:#fff;font-size:11px;line-height:1.5;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;text-shadow:0 1px 3px #000}
.kt-cover-sky{position:absolute;top:20%;left:20%;width:19px;height:19px;border-radius:50%;background:#ffe09b;box-shadow:0 0 30px #ffdc6b55}.kt-cover-houses{position:absolute;left:7%;top:38%;width:25px;height:16px;border-top:6px solid #bccddd;background:#1b364b;box-shadow:35px -8px 0 #486075,68px 1px 0 #26455b;opacity:.7}
:root[data-traffic-cover=day] .kt-preview-art{background:linear-gradient(160deg,#65aec4,#b8ded5 62%,#679789)}:root[data-traffic-cover=day] .kt-cover-sky{background:#ffe580;box-shadow:0 0 25px #ffe580aa}:root[data-traffic-cover=day] .kt-cover-houses{background:#f7e7be;border-color:#ac664c;box-shadow:35px -8px 0 #f0d9b2,68px 1px 0 #d5c3a2}:root[data-traffic-cover=day] .kt-preview-art:before{background:#64778a;border-color:#e7eff4}:root[data-traffic-cover=night] .kt-preview-art{background:linear-gradient(140deg,#061b32,#184962)}:root[data-traffic-cover=night] .kt-cover-sky{background:transparent;box-shadow:-6px 3px 0 #fff4b9}:root[data-traffic-cover=night] .kt-cover-houses{border-color:#3c576b;background:repeating-linear-gradient(90deg,#182e42 0 6px,#ebc766 6px 9px);box-shadow:35px -8px 0 #314a5b,68px 1px 0 #234054}
.kt-catalogue{max-width:700px}.kt-catalogue-filters{display:grid;grid-template-columns:1.2fr 1fr;gap:8px;margin-top:12px}.kt-catalogue-filters input{width:100%;box-sizing:border-box;min-width:0;padding:9px;border:1px solid #cbd5e1;border-radius:9px;font:inherit;min-height:44px}.kt-catalogue-filters select{margin:0}.kt-catalogue-list{display:flex;flex-direction:column;gap:7px;margin:12px 0;max-height:50dvh;overflow:auto;overscroll-behavior:contain}.kt-catalogue-camera{display:flex;align-items:center;gap:12px;text-align:left;min-height:65px;padding:10px;background:#fff;border:1px solid #dde5ee;border-radius:11px;font:inherit;cursor:pointer;color:#18364f;flex-shrink:0}.kt-catalogue-camera>span:nth-child(2){flex:1;min-width:0}.kt-catalogue-camera strong{display:block;font-size:14px;line-height:1.6}.kt-catalogue-camera small{display:block;font-size:11px;line-height:1.6;color:#526778}.kt-catalogue-camera>span:last-child{color:#be123c}.kt-catalogue-icon{width:27px;color:#be123c;flex:none}.kt-catalogue-icon svg{width:23px;height:31px}.kt-catalogue-camera:hover{border-color:#be123c;background:#fff8fa}.kt-catalogue-all{display:inline-flex;align-items:center;min-height:44px;color:#be123c;font-size:13px}
.ct-tag.is-snapshot,.kcm-status.is-snapshot,#cctvGrid .tag.is-snapshot{background:#be123c!important;color:#fff!important;border-color:#be123c!important}.kcm-status.is-snapshot{padding:4px 9px;border-radius:7px}.ct-tag.is-snapshot:before{content:'●';font-size:9px;margin-right:4px}
@media(max-width:540px){.kt-catalogue-filters{grid-template-columns:1fr}.kt-cover-control select{min-height:44px}.kt-catalogue-list{max-height:43dvh}.kt-catalogue-camera strong{font-size:13px}}

.kt-inventory{padding:10px 12px;border-radius:12px;background:#fff1f2;border:1px solid #fecdd3;color:#9f1239;font-size:13px;font-weight:700;line-height:1.6}.kt-inventory:empty{display:none}

/* Public map labels: small, legible and non-interactive; no guessed camera locations. */
#map .kcm-pin .kt-map-name{position:absolute;bottom:calc(100% + 5px);left:50%;transform:translateX(-50%);display:block;box-sizing:border-box;max-width:172px;width:max-content;padding:3px 7px;border:1px solid #eab8c4;border-radius:6px;background:#fff;color:#881337;box-shadow:0 2px 5px #14294326;font:600 12px/1.4 'KH24 Thai',system-ui,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
@media(max-width:640px){#map .kcm-pin .kt-map-name{max-width:132px;font-size:11px}}

/* Without an authentic poster, keep a calm dark stage and explicit play action. */
.kt-preview:not(.has-image),.kt-location-card{background:#0c1421;color:#fff}.kt-location-card{background:#0c1421!important}.kt-preview:not(.has-image) .kt-location-icon{opacity:.7}.kt-preview-caption{line-height:1.5}.kt-preview:not(.has-image) .kt-preview-play{background:#fff;color:#9f1239;box-shadow:0 0 0 5px #ffffff1c}.kt-preview.has-image .kt-preview-caption{background:#031121cf}
