:root{font-family:"Thonburi","Noto Sans Thai","Helvetica Neue",Arial,sans-serif;color:#173744;background:#f6fafb;font-size:16px;line-height:1.55;--navy:#103b50;--teal:#0c6976;--ink:#173744;--muted:#506872;--line:#c8d8dd;--paper:#fff;--red:#a82b21;--redbg:#fff2ef;--amber:#825710;--amberbg:#fff7df}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}.test-ribbon{background:#ffe0d9;color:#742019;font-weight:700;text-align:center;padding:.55rem 1rem;font-size:.9rem}.site-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#fff;border-bottom:1px solid var(--line);padding:1rem max(1.25rem,calc((100vw - 1280px)/2))}.brand{display:flex;gap:.7rem;align-items:center}.brand strong,.brand span{display:block}.brand strong{font-size:1.14rem;line-height:1.2;color:var(--navy)}.brand span{font-size:.82rem;color:var(--muted)}.quiet-link{font-size:.9rem;text-decoration:underline;text-underline-offset:3px}.layout{max-width:1280px;margin:auto;padding:2rem 1.25rem 4rem;display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:3rem;align-items:start}.primary{min-width:0}.intro{max-width:700px;margin-bottom:1.3rem}.intro h1{font-size:clamp(1.9rem,3.6vw,3.1rem);line-height:1.18;letter-spacing:-.025em;color:var(--navy);margin:0 0 .55rem}.intro p{color:var(--muted);margin:0;font-size:1.05rem}.emergency{background:var(--redbg);border:2px solid #bf3d31;border-radius:12px;padding:1.2rem;display:flex;gap:1rem;align-items:center;justify-content:space-between;margin-bottom:2rem}.emergency h2{font-size:1.15rem;color:#782118;margin:0 0 .2rem}.emergency p{margin:0;font-size:.9rem;color:#642c26}.call-actions{display:flex;gap:.55rem;flex-shrink:0}.call-button{display:block;background:#a82b21;color:white;text-decoration:none;text-align:center;padding:.52rem .85rem;border-radius:8px;font-weight:800;white-space:nowrap;min-width:104px}.call-button small{display:block;font-size:.72rem;font-weight:500}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-bottom:2px solid var(--navy);margin-bottom:1.2rem}.section-heading h2{font-size:1.35rem;color:var(--navy);margin:0 0 .5rem}.section-heading span{font-size:.85rem;color:var(--muted)}.composer{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1.4rem;margin-bottom:2.4rem}.composer .section-heading{margin-bottom:1.5rem}fieldset{border:0;padding:0;margin:0 0 1.6rem}fieldset+fieldset{padding-top:1.4rem;border-top:1px solid var(--line)}legend{font-weight:750;color:var(--navy);font-size:1.05rem;margin-bottom:.85rem}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem 1.2rem}.field-grid label,.full-label{display:block;font-weight:650;font-size:.92rem;color:var(--ink)}input:not([type=checkbox]):not([type=hidden]):not([type=radio]),textarea,select{display:block;width:100%;margin-top:.35rem;border:1.5px solid #9eb6bf;border-radius:7px;background:#fff;color:var(--ink);padding:.68rem .72rem;min-height:44px}textarea{resize:vertical}.required{color:var(--red)}.optional{font-size:.78rem;color:var(--muted);font-weight:400}.gps-row{display:flex;align-items:center;gap:1rem;margin-top:1rem;color:var(--muted);font-size:.85rem}.choice-label{font-size:.92rem;font-weight:650;margin:1.3rem 0 .6rem}.needs-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.need{display:flex;align-items:flex-start;gap:.55rem;border:1px solid var(--line);border-radius:7px;padding:.58rem .7rem;font-size:.9rem}.need:has(input:checked){background:#e9f5f6;border-color:#438b94}.need input{width:19px;height:19px;flex-shrink:0;accent-color:var(--teal);margin-top:.1rem}.full-label{margin-top:1.3rem}.privacy-note{font-size:.84rem;color:var(--muted);background:#edf3f5;border-left:4px solid var(--teal);padding:.8rem 1rem}.primary-button,.secondary-button,.text-button,.danger-button{border-radius:7px;font-weight:700}.primary-button{border:0;background:var(--navy);color:#fff;padding:.76rem 1.1rem;min-height:48px}.secondary-button{border:1.5px solid var(--teal);color:var(--teal);background:#fff;padding:.48rem .8rem;min-height:42px}.text-button{border:1px solid var(--line);background:#fff;color:var(--navy);padding:.45rem .7rem}.danger-button{border:1px solid #bb4b43;background:#fff;color:#962b22;padding:.45rem .7rem}.error{padding:.75rem;color:#7b1c16;background:var(--redbg);border:1px solid #d47b73;border-radius:7px;margin-bottom:.8rem}.case-list{display:grid;gap:1rem}.empty{border:1px dashed #9eb6bf;background:#fff;padding:1.5rem;color:var(--muted);border-radius:9px}.case-card{background:#fff;border:1px solid var(--line);border-left:6px solid var(--teal);border-radius:9px;padding:1rem 1.15rem}.case-card.urgent{border-left-color:var(--red)}.case-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.case-head h3{margin:0;font-size:1.1rem;line-height:1.4;overflow-wrap:anywhere}.case-head time{color:var(--muted);font-size:.78rem;white-space:nowrap}.badges{display:flex;flex-wrap:wrap;gap:.4rem;margin:.55rem 0}.badge{font-size:.75rem;font-weight:750;border-radius:4px;padding:.15rem .43rem;background:#e3f2f3;color:#0a5965}.badge.red{background:var(--redbg);color:var(--red)}.badge.orange{background:var(--amberbg);color:var(--amber)}.badge.local{background:#fff1df;color:#795310}.badge.attempt{background:#edf0fa;color:#334a83}.case-card p{margin:.38rem 0;font-size:.9rem}.case-warning{color:#82251d;font-weight:700}.case-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem}.side{position:sticky;top:1.4rem}.status-guide{background:var(--navy);color:#fff;padding:1.3rem;border-radius:12px}.side h2{font-size:1.05rem;margin:0 0 .8rem}.status-guide ol{list-style:none;counter-reset:step;padding:0;margin:0}.status-guide li{counter-increment:step;display:grid;grid-template-columns:1.45rem 1fr;column-gap:.5rem;padding:.65rem 0;border-top:1px solid #517184}.status-guide li:before{content:counter(step);display:grid;place-items:center;border:1px solid #a5ccd0;border-radius:100%;width:1.35rem;height:1.35rem;font-size:.72rem}.status-guide li strong,.status-guide li span{grid-column:2}.status-guide li strong{font-size:.89rem}.status-guide li span{font-size:.77rem;color:#d3e2e8}.side-block{padding:1.2rem 0;border-bottom:1px solid var(--line)}.side-block p{font-size:.85rem;color:var(--muted);margin:0}.export-actions{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.8rem}footer{text-align:center;padding:1.5rem;color:var(--muted);font-size:.8rem;border-top:1px solid var(--line)}.toast{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:.65rem 1rem;border-radius:7px;box-shadow:0 8px 24px #1234;max-width:min(92vw,600px);z-index:10}.operator-main{max-width:1000px;margin:2rem auto 4rem;padding:0 1.25rem}.operator-intro{margin-bottom:1.5rem}.operator-intro h1{font-size:2rem;color:var(--navy);margin:.4rem 0}.operator-intro p{max-width:700px;color:var(--muted)}.upload-panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:1.2rem;margin-bottom:1.5rem}.upload-panel input{margin-top:.8rem}.operator-list{display:grid;gap:.75rem}.operator-card{background:#fff;border:1px solid var(--line);padding:1rem;border-radius:8px}.operator-card h2{font-size:1rem;margin:0 0 .6rem}.operator-card dl{display:grid;grid-template-columns:150px 1fr;gap:.3rem .7rem;margin:0;font-size:.9rem}.operator-card dt{color:var(--muted)}.operator-card dd{margin:0;overflow-wrap:anywhere}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #007c9b;outline-offset:3px}@media(max-width:900px){.layout{grid-template-columns:1fr;gap:1rem}.side{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.status-guide{grid-row:span 2}}@media(max-width:650px){.site-header{padding:.9rem 1rem}.quiet-link{font-size:.76rem;max-width:125px;text-align:right}.layout{padding:1.3rem .8rem 3rem}.emergency{display:block}.call-actions{margin-top:1rem}.call-button{flex:1}.composer{padding:1rem}.field-grid,.needs-list,.side{grid-template-columns:1fr}.case-head{display:block}.case-head time{display:block;margin-top:.25rem}.operator-card dl{grid-template-columns:1fr;gap:0}.operator-card dd{margin-bottom:.5rem}}@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s,color .15s}button:active,a:active{transform:translateY(1px)}}

dialog{border:1px solid var(--line);border-radius:12px;padding:1.4rem;width:min(92vw,450px);color:var(--ink);box-shadow:0 20px 60px #102d3d55}dialog::backdrop{background:#0d2e3bbc}dialog h2{font-size:1.3rem;color:var(--navy);margin:0 0 .45rem}dialog p{font-size:.9rem;color:var(--muted);margin:0 0 1.1rem}dialog label{display:block;font-weight:650}.confirm-line{display:flex;align-items:flex-start;gap:.6rem;margin:1rem 0;font-size:.9rem}.confirm-line input{width:20px;height:20px;flex-shrink:0;accent-color:var(--teal)}.dialog-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.5rem}select:focus-visible{outline:3px solid #007c9b;outline-offset:3px}

.call-actions{flex-wrap:wrap;justify-content:flex-end}.call-button{flex:1 1 110px;white-space:normal}.case-actions a.secondary-button{display:inline-flex;align-items:center;text-decoration:none}.shared-device-note{color:var(--muted)}
@media(max-width:650px){.call-actions{justify-content:stretch}.call-button{min-width:0}}
.badge.attempt{background:#fff1df;color:#795310}
.copy-fallback{position:fixed;left:-9999px;top:0;opacity:0}
.manual-copy{background:#fff;border:2px solid #bf3d31;border-radius:12px;padding:1rem;margin:1rem 0}
.manual-copy textarea{width:100%;font:inherit;font-size:16px;margin:.5rem 0}
.message-preview{margin:.6rem 0}
.message-preview summary{cursor:pointer;font-weight:700;color:var(--teal)}
.message-preview pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:.9rem;background:#f6fafb;border:1px solid var(--line);border-radius:6px;padding:.6rem;margin:.4rem 0 0}
.gps-row{flex-wrap:wrap}
.emergency{flex-wrap:wrap}
.emergency .line-help{flex-basis:100%;margin-top:.3rem}
#case-form[hidden]{display:none}
.quick-location-row{flex-basis:100%;display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}.quick-location-row .call-button{background:#7b261f;border:0;flex:0 1 auto;white-space:normal}.quick-location-row .call-button:disabled{opacity:.65;cursor:wait}.quick-location-row span{font-size:.86rem;color:#642c26}.emergency .foundation-help{flex-basis:100%;margin-top:.3rem}
.quick-location-row[hidden]{display:none}
@media(max-width:650px){.quick-location-row .call-button{flex:1 1 100%}}
/* KFR-10: one-second first screen */
.emergency.sos{display:block}.sos-title{font-size:clamp(1.45rem,6vw,2rem);line-height:1.25;color:#782118;margin:0 0 .75rem}.sos-actions{display:grid;gap:.6rem}.sos-button{display:block;width:100%;min-height:56px;padding:.7rem 1rem;border:0;border-radius:10px;font-size:1.15rem;font-weight:800;line-height:1.3;text-align:center;text-decoration:none;color:#fff;cursor:pointer}.sos-button small{display:block;margin-top:.15rem;font-size:.8rem;font-weight:500}.sos-button[hidden]{display:none}.sos-button:disabled{opacity:.7;cursor:progress}.sos-call{background:#a82b21}.sos-location{background:#0f5f3a}.sos-medical{background:#103b50}.sos-line{background:#047a3a;margin-top:.55rem}.quick-location-result{margin-top:.6rem;padding:.7rem;border:2px solid #047a3a;border-radius:10px;background:#f0fbf4}.quick-location-result[hidden]{display:none}.quick-location-result p{margin:0;font-size:.95rem;color:#113c2a}.quick-location-more{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.quick-location-more[hidden]{display:none}.quick-location-more .secondary-button{flex:1 1 45%}.sos-more,.sos-note{margin:.7rem 0 0;font-size:.9rem}.sos-note{color:#642c26}.sos-form-link{display:inline-block;margin-top:.6rem;font-weight:700;color:#103b50}.intro h2{font-size:clamp(1.3rem,3vw,1.9rem);line-height:1.25;color:var(--navy);margin:0 0 .45rem}
.sos-title span{display:block;font-size:.72em;color:#642c26}.sos-more{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.sos-small{display:block;padding:.5rem .6rem;border:1.5px solid #a82b21;border-radius:8px;background:#fff;color:#7b1c16;font-weight:800;text-align:center;text-decoration:none;font-size:.95rem}.sos-small small{display:block;font-weight:500;font-size:.75rem}@media(max-width:650px){.site-header .brand span{display:none}.site-header{padding:.6rem .9rem}.test-ribbon{padding:.4rem .8rem;font-size:.8rem}}

/* KFR-09: QR is generated locally only after an explicit click. */
.qr-panel{background:#fff;border:2px solid #103b50;border-radius:10px;padding:1rem;margin:.7rem 0;max-width:420px}.qr-panel[hidden]{display:none}.qr-panel svg{display:block;width:min(100%,320px);height:auto;margin:1rem auto;background:#fff}.qr-panel p{margin:.35rem 0;font-size:.9rem;line-height:1.45}.qr-panel details{margin-top:.7rem}.qr-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:.82rem}.qr-panel .qr-error{color:#8d241b;font-weight:700}

/* KFR-14: external Bangkok source links, separate from the emergency actions. */
.bkk-links{margin:.75rem 0 1rem;padding:.85rem 1rem;background:#edf3f5;border:1px solid var(--line);border-radius:10px}.bkk-links h2{font-size:1rem;line-height:1.35;margin:0 0 .6rem;color:var(--navy)}.bkk-links-actions{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.bkk-links-actions a{display:block;padding:.55rem .65rem;background:#fff;border:1px solid #9cb6bd;border-radius:7px;color:#103b50;font-weight:700;font-size:.87rem;text-decoration:none}.bkk-links-actions a span{display:block;font-size:.73rem;font-weight:400;color:var(--muted)}.bkk-links p{margin:.6rem 0 0;font-size:.76rem;line-height:1.45;color:var(--muted)}@media(max-width:650px){.bkk-links-actions{grid-template-columns:1fr}}

/* KFR-16: service scope and urgent triage without claiming that this page dispatches a team. */
.sos-coverage{font-weight:750;color:#642c26;margin:0 0 .7rem!important}.sos-fire{background:#68401e}.delivery-explainer{background:#fff;border:1px solid #d7aaa3;border-radius:8px;padding:.65rem .8rem;margin-top:.75rem;font-size:.85rem}.delivery-explainer strong{color:#782118}.delivery-explainer p{margin:.25rem 0 0;color:#513b36}.triage{background:#fff7ed;border:1px solid #dbba87;border-radius:10px;padding:1rem;margin-bottom:1.5rem}.triage legend{padding:0 .3rem}.triage p{font-size:.86rem;color:#5a4428;margin:.2rem 0 .65rem}.triage-choices{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.triage-choices label{display:flex;align-items:center;gap:.5rem;background:#fff;border:1.5px solid #b8aa92;border-radius:8px;padding:.6rem;font-weight:700}.triage-choices label:has(input:checked){border-color:#a82b21;background:#fff1ed}.triage-choices input{width:20px;height:20px;flex:none;accent-color:#a82b21}.triage-urgent{margin-top:.8rem;padding:.7rem;background:#fff;border:1px solid #d7aaa3;border-radius:8px}.triage-urgent[hidden]{display:none}.triage-urgent .triage-warning{color:#8c241b;font-weight:750;margin:.65rem 0 0}@media(max-width:650px){.triage-choices{grid-template-columns:1fr}}

/* KFR-17: official source lookup loads only on a tap; the browser stores a dated offline copy. */
.official-alerts{margin:.75rem 0 1.2rem;padding:1rem;background:#eef6fa;border:1px solid #a8c8d8;border-radius:10px}.official-alerts h2{font-size:1.1rem;color:var(--navy);margin:0 0 .4rem}.official-alerts p,.official-alerts li{font-size:.87rem;line-height:1.5}.official-alerts p{margin:.45rem 0}.official-alerts details{background:#fff;border:1px solid #c3d6df;border-radius:7px;padding:.55rem .7rem;margin:.75rem 0}.official-alerts summary{font-weight:750;cursor:pointer}.official-alerts ul{padding-left:1.4rem}.alert-lookup{margin-top:.8rem}.alert-lookup label{display:block;font-weight:750;font-size:.9rem}.alert-lookup-controls{display:flex;gap:.5rem;align-items:end}.alert-lookup-controls select{margin-top:.3rem}.alert-lookup-controls button{white-space:nowrap}.official-alerts-list{display:grid;gap:.6rem;margin-top:.6rem}.official-alert-card,.alert-empty{background:#fff;border:1px solid #b8ccd5;border-radius:7px;padding:.7rem}.official-alert-card h3{font-size:.95rem;margin:0 0 .25rem}.official-alert-card .alert-meta{font-size:.76rem;color:var(--muted)}.official-alert-card p{white-space:pre-wrap;overflow-wrap:anywhere}.alert-source{font-size:.77rem!important;color:var(--muted)}@media(max-width:650px){.alert-lookup-controls{display:block}.alert-lookup-controls button{margin-top:.5rem;width:100%}}

/* Keep the longer withdrawal explanation and its buttons reachable on small phones. */
dialog{max-height:90vh;overflow:auto}
.media-inputs{display:grid;gap:.7rem;margin:.9rem 0}.media-inputs label{font-size:.9rem;font-weight:700}.media-inputs input{width:100%;max-width:100%;font-size:.85rem}.media-inputs input::file-selector-button{border:1px solid var(--teal);border-radius:6px;background:#fff;color:var(--teal);padding:.45rem;margin-right:.6rem;font-weight:700}
#media-manual-text[hidden]{display:none}
.media-open-external{display:block;font-size:.86rem;margin:.5rem 0;color:var(--teal);font-weight:700}.media-open-external[hidden]{display:none}
.offline-help{margin:.6rem 0 1rem;padding:.65rem .9rem;background:#fff7df;border:1px solid #b69254;border-radius:9px}.offline-help summary{cursor:pointer;font-weight:800;color:#65410f}.offline-help p{font-size:.86rem;line-height:1.5;margin:.55rem 0 0;color:#513e27}
.quick-location-more .quick-location-fallback{flex:1 1 100%;font-size:1rem;line-height:1.5;color:#113c2a}
.prep-help summary,.prep-help p,.prep-help ol,.prep-help ul{font-size:1rem;line-height:1.5}.prep-help ol,.prep-help ul{margin:.55rem 0 0;padding-left:1.3rem;color:#513e27}.prep-help li{margin:.35rem 0}.prep-help .nowrap{white-space:nowrap}

/* KFR-40: keep the manual-send warning readable on a narrow phone. */
@media(max-width:650px){.test-ribbon{font-size:1rem;line-height:1.4}.sos-button small{font-size:1rem;line-height:1.35}.sos-note,.quick-location-result p{font-size:1rem;line-height:1.5}.sos-more{grid-template-columns:minmax(0,1fr)}.sos-small{min-width:0;overflow-wrap:anywhere}.triage{min-width:0}}
@media(max-width:650px){.site-header{flex-wrap:wrap}.site-header .brand,.site-header .quiet-link{min-width:0}.quiet-link{overflow-wrap:anywhere}.triage-choices{grid-template-columns:minmax(0,1fr)}.triage-choices label{min-width:0;overflow-wrap:anywhere}}
.quick-location-result p{white-space:pre-line}
.quick-location-result.gps-uncertain{border-color:#a82b21;background:#fff0ed}
.quick-location-result.gps-uncertain #quick-location-status,.gps-row #gps-status.gps-uncertain{color:#782118;font-weight:800}
.gps-row #gps-status.gps-uncertain{padding:.35rem .5rem;background:#fff0ed;border-left:4px solid #a82b21}
.sos-say{margin:0;padding:.6rem .8rem;background:#fff;border:1.5px solid #d7aaa3;border-radius:10px;font-size:1rem;line-height:1.5;color:#513b36}.sos-say strong{color:#782118}
