@import url('https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600;700;800&display=swap');
:root{color-scheme:light;--navy:#122a4a;--blue:#2463eb;--ink:#172b47;--muted:#61738b;--line:#e2e9f2;--green:#087f69;--paper:#f4f7fb}
*{box-sizing:border-box}body{margin:0;background:var(--paper);font-family:'Sarabun',sans-serif;color:var(--ink);font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select{cursor:pointer}button:disabled,select:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #8bb7ff;outline-offset:3px}.hidden{display:none!important}.shell{width:min(1280px,calc(100% - 64px));margin:auto}
.site-header{background:#fff;border-bottom:1px solid var(--line)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:84px}.brand{display:flex;align-items:center;gap:24px}.brand img{width:52px;height:52px;object-fit:contain;display:block}.brand-name{font-size:19px;font-weight:800;letter-spacing:-.04em;line-height:1.25}.brand-name small{display:block;font-size:11px;letter-spacing:0;color:var(--muted);font-weight:500;margin-top:3px}.brand-divider{height:30px;width:1px;background:var(--line)}.brand-caption{font-size:12px;line-height:1.6;font-weight:700;color:var(--muted);letter-spacing:.07em}.header-nav{display:flex;align-items:center;gap:25px;font-size:13px;color:#61748b}.header-nav a:hover{color:var(--blue)}.header-home{border:1px solid var(--line);padding:8px 15px;border-radius:9px;color:var(--ink)!important}
.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;padding:38px 0 28px}.eyebrow{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.13em;font-weight:800;color:var(--blue);margin-bottom:10px}.eyebrow svg{width:15px;height:15px}h1{font-size:34px;letter-spacing:-.04em;line-height:1.35;margin:0;font-weight:800}h1 span{color:#526a88;font-weight:500}.intro p{color:var(--muted);font-size:13px;margin:10px 0 0}.clock-wrap{text-align:right;flex-shrink:0}.clock-label{font-size:11px;color:var(--muted);margin-bottom:4px}.clock{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:#50647e}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 322px;gap:24px;align-items:start}.viewer-card{background:var(--navy);border-radius:18px;overflow:hidden;box-shadow:0 10px 35px #122a4a16}.viewer-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;color:#fff}.viewer-kicker{display:flex;align-items:center;gap:9px;font-size:11px;letter-spacing:.09em;color:#a9bed8;font-weight:600}.signal-dot{width:7px;height:7px;display:inline-block;background:#6bd6bd;border-radius:100%;box-shadow:0 0 0 4px #6bd6bd18}.province-tag{font-size:11px;color:#c6d6eb;border:1px solid #ffffff24;padding:3px 10px;border-radius:6px}.video-stage{position:relative;width:100%;aspect-ratio:16/9;background:#09182b;overflow:hidden}.video-stage video,.video-stage>img{width:100%;height:100%;object-fit:contain;display:block}.stage-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:#7f98b6;font-size:13px;pointer-events:none}.stage-empty svg{width:46px;height:46px;color:#455f80}.video-stage:has(video:not(.hidden)),.video-stage:has(>img:not(.hidden)){background:#070f1a}.viewer-bottom{padding:19px 22px 20px;color:#fff}.camera-title{font-size:17px;font-weight:600;line-height:1.65;margin:0}.media-status{font-size:11px;color:#a9bdd5;margin:7px 0 0;min-height:18px}.viewer-note{display:flex;gap:10px;align-items:flex-start;color:var(--muted);font-size:11px;line-height:1.8;padding:16px 4px}.viewer-note svg{width:16px;height:16px;flex-shrink:0;margin-top:2px}
.selector-card{background:white;border:1px solid var(--line);border-radius:18px;padding:23px;box-shadow:0 4px 14px #15325904}.selector-title{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;margin:0 0 5px}.selector-title svg{width:21px;height:21px;color:var(--blue)}.selector-subtitle{font-size:12px;color:var(--muted);margin:0 0 22px}.field-label{display:block;font-size:11px;font-weight:700;color:#687b93;margin:17px 0 7px}.search-wrap{position:relative}.search-wrap svg{position:absolute;left:13px;top:14px;width:16px;height:16px;color:#8595aa}.search-wrap input{padding-left:38px}.field{width:100%;border:1px solid var(--line);border-radius:9px;background:#f9fbfe;min-height:45px;padding:10px 12px;color:var(--ink);font-size:12px;transition:border-color .15s}.field:focus{border-color:#78a5ff;background:white}.field::placeholder{color:#99a7b9}.field-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23718198' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px}.camera-select{background-color:#eef4ff;border-color:#c9dbff;font-weight:600;color:#1d4f9e}.camera-select:disabled{color:#8a9bb1;background-color:#f7f9fc;border-color:var(--line)}.selector-tools{display:flex;justify-content:space-between;gap:10px;margin-top:12px}.text-button{font-size:11px;color:var(--blue);border:0;background:none;padding:3px 0}.text-button:hover{text-decoration:underline}.availability-box{margin-top:23px;padding:14px;background:#f1f8f6;border:1px solid #dfefea;border-radius:10px}.availability-title{display:flex;align-items:center;gap:7px;color:var(--green);font-size:11px;font-weight:700}.availability-title .signal-dot{width:6px;height:6px;background:#139b7c;box-shadow:none}.availability-status{font-size:10px;color:#456959;line-height:1.8;margin:6px 0 0}.availability-hint{font-size:10px;color:#6f8494;line-height:1.8;margin:12px 0 0}
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:22px 0 30px}.stat{border:1px solid var(--line);border-radius:13px;background:#fff;padding:17px 20px;display:flex;align-items:center;gap:15px}.stat-icon{width:39px;height:39px;display:grid;place-items:center;background:#eff4fd;border-radius:10px;color:#4975b4;flex-shrink:0}.stat-icon svg{width:19px;height:19px}.stat.online .stat-icon{color:var(--green);background:#eaf7f2}.stat strong{font-size:23px;line-height:1.2;font-weight:800;font-variant-numeric:tabular-nums}.stat-label{font-size:10px;color:var(--muted);margin-top:3px}.stat.online strong{color:var(--green)}
.page-footer{border-top:1px solid var(--line);padding:21px 0 28px;display:flex;justify-content:space-between;gap:20px;color:#8a99ab;font-size:10px}.footer-links{display:flex;gap:18px}.footer-links a:hover{color:var(--blue)}.overlay{position:absolute;inset:0;background:#10233deb;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:20px;text-align:center;color:#dce8f8;z-index:5}.error-icon{width:38px;height:38px;margin-bottom:10px;color:#e9b56c}.overlay h3{font-size:17px;margin:0 0 7px}.overlay p{font-size:12px;max-width:320px;margin:0}.password-panel{background:white;color:var(--ink);border-radius:14px;padding:23px;width:100%;max-width:330px}.password-panel p{color:var(--muted);margin:7px 0 16px;font-size:12px}.password-panel input{text-align:center}.primary-button{width:100%;padding:10px;border:0;background:var(--blue);color:white;border-radius:9px;font-size:13px;font-weight:600;margin-top:12px}.password-panel .password-error{color:#c44141;margin:7px 0;font-size:11px}
.page-footer{flex-wrap:wrap;row-gap:12px}.camera-credits{flex-basis:100%;min-width:0;color:var(--muted);font-size:11px;line-height:1.9;overflow-wrap:anywhere}.camera-credits a:hover{text-decoration:underline;color:var(--blue)}
@media(min-width:1600px){.intro{padding-top:48px}h1{font-size:38px}}
@media(max-width:1000px){.shell{width:calc(100% - 40px)}.workspace{grid-template-columns:minmax(0,1fr) 290px;gap:18px}.selector-card{padding:20px}.brand-caption,.brand-divider{display:none}h1{font-size:29px}.clock-wrap{display:none}.stat{padding:15px;gap:10px}.stat strong{font-size:21px}}
@media(max-width:760px){.shell{width:calc(100% - 32px)}.header-inner{min-height:69px}.brand{gap:10px}.brand img{width:43px;height:43px}.brand-name{font-size:15px}.brand-name small{font-size:10px}.header-nav{gap:12px;font-size:11px}.header-nav .weather-link{display:none}.header-home{padding:6px 10px}.intro{padding:26px 0 21px}h1{font-size:26px}.intro p{font-size:11px;max-width:300px}.eyebrow{font-size:10px;margin-bottom:8px}.workspace{grid-template-columns:1fr;gap:15px}.selector-card{grid-row:1;padding:18px;border-radius:14px}.selector-title{font-size:16px;margin-bottom:2px}.selector-subtitle{margin-bottom:14px;font-size:11px}.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.camera-field{grid-column:1/-1}.field-label{margin-top:12px}.search-field .field-label,.province-field .field-label{margin-top:0}.field{min-height:43px}.availability-box{margin-top:15px;padding:10px 12px}.availability-title{font-size:10px}.availability-status{font-size:10px;margin-top:3px}.availability-hint{display:none}.selector-tools{margin-top:9px}.viewer-card{border-radius:14px}.viewer-heading{padding:13px 16px}.viewer-bottom{padding:15px 16px}.camera-title{font-size:15px}.media-status{font-size:10px}.viewer-note{font-size:10px;padding:13px 1px}.stats-row{gap:9px;margin:13px 0 22px}.stat{display:block;padding:14px 12px}.stat-icon{display:none}.stat strong{font-size:23px}.stat-label{font-size:9px;margin-top:5px}.page-footer{font-size:9px;flex-wrap:wrap;padding-top:17px;gap:10px}.footer-links{gap:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
