*{box-sizing:border-box}body{margin:0;background:#f3f6fa;color:#23354b;font:15px/1.65 'Segoe UI',Tahoma,sans-serif}a{color:#126f87;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:#087f8c;border:1px solid transparent;color:white;padding:10px 17px;border-radius:9px;font-weight:600;cursor:pointer;text-decoration:none;line-height:1.5}button:hover,.button:hover{background:#086775;text-decoration:none}.secondary{background:#fff!important;border-color:#cbd5df!important;color:#32485d!important}.danger{background:#fff1f0!important;color:#a32623!important;border-color:#f5c7c4!important}.small{padding:6px 11px;font-size:13px}.app-shell{display:flex;min-height:100vh}.sidebar{width:256px;flex-shrink:0;background:#102c43;color:#d9e6ee;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:26px 16px;z-index:1000}.brand{display:flex;gap:11px;align-items:center;color:white;font-weight:700;font-size:16px;letter-spacing:.5px;margin:0 8px 32px}.brand img{width:42px;height:48px;object-fit:contain}.brand small{font-size:11px;font-weight:400;letter-spacing:0;display:block;color:#aabeca}.nav-caption{font-size:11px;color:#88a4b8;margin:0 16px 12px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{display:flex;align-items:center;gap:12px;color:#bfcfdb;padding:12px;border-radius:9px;font-size:13px}.sidebar nav a span{font-size:20px;width:25px;text-align:center}.sidebar nav a:hover,.sidebar nav a.active{background:#21485c;color:white;text-decoration:none}.sidebar nav a.active{box-shadow:inset 3px 0 #47d3bd}.sidebar-bottom{margin-top:auto;border-top:1px solid #315065;padding-top:22px;display:flex;gap:10px;align-items:center;font-size:12px}.sidebar-bottom small{display:block;color:#94aebe}.sidebar-bottom a{margin-left:auto;color:#c4d6e2}.avatar{background:#28566c;border-radius:50%;width:35px;height:35px;display:grid;place-items:center}.workspace{margin-left:256px;width:calc(100% - 256px);padding:0 32px 40px;min-width:0}.topbar{min-height:65px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dfe7ee;font-size:12px;gap:12px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:28px 0}.eyebrow{font-size:11px;color:#60808b;letter-spacing:.5px;margin:0 0 4px}h1{font-size:27px;line-height:1.4;margin:0;font-weight:700}h2{font-size:18px;margin:0 0 15px}h3{font-size:15px;margin:0 0 10px}.muted,small{color:#677c8d}.muted{font-size:13px}.page-heading p{margin-bottom:0}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat{background:#fff;border:1px solid #e2e9f0;border-radius:13px;padding:20px;color:#334e60;position:relative}.stat:hover{border-color:#93bdc4;text-decoration:none}.stat .number{font-size:34px;font-weight:700;line-height:1.4;color:#143d53}.stat .label{font-size:12px}.stat small{font-size:11px;display:block}.stat-icon{position:absolute;right:18px;top:20px;background:#e7f5f4;color:#0c877c;border-radius:10px;width:38px;height:38px;display:grid;place-items:center;font-size:20px}.panel{background:white;border:1px solid #e0e7ee;border-radius:13px;padding:22px;margin-bottom:22px;min-width:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.panel-heading h2{margin:0}.grid-main{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(260px,1fr);gap:22px}.quick-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:22px}.quick-links a{display:flex;gap:9px;align-items:center;border:1px solid #d7e6e9;border-radius:10px;padding:14px;background:#fff;color:#266174;font-size:13px}.map{height:355px;border-radius:10px;z-index:0;background:#e8eef0}.map-editor{height:300px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;background:#f6f8fb;color:#6b7f91;font-weight:600;font-size:12px;white-space:nowrap}th,td{padding:13px 12px;border-bottom:1px solid #edf1f5;vertical-align:top}tbody tr:hover{background:#f9fcfd}td .muted{font-size:11px;display:block}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.badge{display:inline-block;padding:3px 9px;border-radius:30px;background:#e5f5ee;color:#17765b;font-size:11px;white-space:nowrap}.badge.warn{background:#fff2d8;color:#95621a}.badge.danger{background:#ffebe9!important;color:#ac4038!important}.badge.neutral{background:#edf1f6;color:#6e7b8b}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid .wide{grid-column:1/-1}label{display:block;font-size:13px;font-weight:600}input:not([type=hidden]),select,textarea{display:block;width:100%;border:1px solid #ced9e3;border-radius:8px;padding:10px 12px;margin-top:6px;background:white;color:#23354b;min-height:43px}input:focus,select:focus,textarea:focus{outline:2px solid #65b4be;outline-offset:1px}input[type=checkbox]{display:inline;width:auto;min-height:0}label small{display:block;font-weight:400}textarea{min-height:100px}.filters{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.filters label{flex:1;min-width:145px}.filters .search{flex:2}.alert{padding:14px 18px;border-radius:9px;margin:16px 0;font-size:13px}.alert.success{background:#e3f4ed;color:#22634c}.alert.error{background:#fff0ee;color:#ab3c30}.empty{padding:30px;text-align:center;color:#80909d}.bar-row{margin-bottom:17px}.bar-row>div{display:flex;justify-content:space-between;font-size:12px;margin-bottom:6px}.bar{height:7px;background:#edf2f5;border-radius:10px;overflow:hidden}.bar span{display:block;height:100%;background:#189b9b;border-radius:10px}.pagination{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:18px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.detail-grid dt{font-size:12px;color:#738493}.detail-grid dd{margin:3px 0 0;overflow-wrap:anywhere}.activity{padding:12px 0;border-bottom:1px solid #edf1f5;font-size:13px}.activity small{display:block}.menu-toggle{display:none}.skip-link{position:absolute;top:-100px}.skip-link:focus{top:0;z-index:2000;background:white;padding:12px}.login-page{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,#102c43,#166a79)}.login-card{width:min(440px,calc(100% - 32px));background:white;padding:36px;border-radius:18px}.login-card img{height:64px}.login-card label{margin:18px 0}.login-card button{width:100%}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}details summary{cursor:pointer;color:#126f87}button:disabled{opacity:.5;cursor:wait}@media(min-width:1600px){.workspace{padding-left:48px;padding-right:48px}}@media(max-width:1150px){.sidebar{width:225px}.workspace{margin-left:225px;width:calc(100% - 225px);padding:0 20px 30px}.stats,.quick-links{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-main{grid-template-columns:1fr}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .2s}.sidebar.open{transform:translateX(0)}.workspace{margin-left:0;width:100%;padding:0 14px 24px}.menu-toggle{display:inline-flex}.topbar>span:first-of-type{display:none}.page-heading{align-items:flex-start;flex-direction:column}h1{font-size:24px}.form-grid,.detail-grid{grid-template-columns:1fr}.stats{gap:10px}.stat{padding:14px}.stat-icon{display:none}.stat .number{font-size:29px}.panel{padding:16px}.quick-links{gap:8px}.quick-links a{font-size:12px;padding:12px}.map{height:300px}}@media print{.sidebar,.topbar,.page-heading,.no-print{display:none!important}.workspace{margin:0;padding:0;width:100%}}
/* ---- ส่วนขยายสำหรับฐานข้อมูลสถานพยาบาล ---- */
.sidebar{overflow-y:auto}.brand{margin-bottom:22px}.sidebar nav{margin-bottom:16px;gap:3px}.sidebar nav a{padding:9px 12px}.sidebar nav a span{font-size:17px}
.sidebar-bottom .sidebar-user{margin-left:0;color:#e6eef3;flex:1;min-width:0;overflow-wrap:anywhere}.sidebar-bottom .sidebar-user:hover{text-decoration:none;color:#fff}
.app-footer{margin-top:30px;padding-top:16px;border-top:1px solid #dfe7ee;font-size:12px;color:#7a8d9c}
.check{display:flex;align-items:center;gap:8px;font-weight:600}.check input{margin:0}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:#fff;color:#32485d;border:1px solid #d3dde6;padding:6px 12px 6px 6px;border-radius:30px;font-weight:500;font-size:12px;gap:7px}
.chip:hover{background:#f3f8fa;border-color:var(--c)}.chip[aria-pressed=true]{border-color:var(--c);box-shadow:inset 0 0 0 1px var(--c);background:#fff}
.chip[aria-pressed=false]{opacity:.55}.chip[aria-pressed=false] .pin-dot{background:#c4cdd5}.chip b{font-weight:700;color:#143d53}
.pin-dot{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--c);color:#fff;font-size:11px;font-weight:700;flex-shrink:0}
.map-tool{position:relative}.map-filters{display:grid;gap:14px;margin-bottom:14px}
.map-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.map-controls>label{flex:1;min-width:150px}.map-controls>label.check{flex:0 0 auto;min-height:43px}
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:14px}.map{height:470px}.map.map-tall{height:calc(100vh - 330px);min-height:480px}
.map-list{border:1px solid #e3eaf0;border-radius:10px;display:flex;flex-direction:column;min-height:0;max-height:470px}.map-tall~.map-list{max-height:none}
.map-list-head{padding:10px 14px;border-bottom:1px solid #e3eaf0;font-size:13px;background:#f8fafc;border-radius:10px 10px 0 0}
.map-list ol{list-style:none;margin:0;padding:0;overflow:auto;flex:1}.map-list li button{all:unset;box-sizing:border-box;display:flex;gap:9px;width:100%;padding:9px 12px;border-bottom:1px solid #f0f3f6;cursor:pointer;font-size:13px;line-height:1.45}
.map-list li button:hover,.map-list li button:focus-visible{background:#eef7f8}.map-list li small{display:block;font-size:11px}
.map-tool.is-full{position:fixed;inset:0;z-index:1500;background:#fff;padding:16px;overflow:auto}.map-tool.is-full .map{height:calc(100vh - 230px)}.map-tool.is-full .map-list{max-height:calc(100vh - 230px)}
.hpin{width:26px;height:26px;border-radius:50%;background:var(--c);color:#fff;border:2px solid #fff;box-shadow:0 1px 4px rgba(16,44,67,.45);display:grid;place-items:center;font:700 12px/1 'Segoe UI',Tahoma,sans-serif}
.hpin.inactive{opacity:.55;border-style:dashed}.hpin.due{box-shadow:0 0 0 3px #fab219,0 1px 4px rgba(16,44,67,.45)}
.map-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:#677c8d;margin-top:8px}.legend-due{display:inline-block;width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 3px #fab219;margin-right:6px;vertical-align:-1px;background:#7d7b75}
.leaflet-popup-content{font:13px/1.55 'Segoe UI',Tahoma,sans-serif;color:#23354b}.leaflet-popup-content strong{font-size:14px}
.type-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}
.type-card{background:#fff;border:1px solid #e2e9f0;border-top:4px solid var(--c);border-radius:12px;padding:16px;color:#334e60;display:flex;flex-direction:column;gap:6px}
.type-card:hover{border-color:var(--c);text-decoration:none;box-shadow:0 2px 10px rgba(16,44,67,.08)}.type-card .head{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;line-height:1.35}
.type-card .number{font-size:28px;font-weight:700;color:#143d53;line-height:1.3}.type-card ul{margin:0;padding:0;list-style:none;font-size:11px;color:#677c8d}.type-card li{display:flex;justify-content:space-between;gap:8px}
.type-card.is-empty{opacity:.6}
.bar-row .swatch{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--c);margin-right:7px}.bar.thin span{background:var(--c,#189b9b)}
.col-chart{display:flex;align-items:flex-end;gap:6px;height:170px;padding-top:24px;border-bottom:1px solid #c9d4dd}
.col-chart .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;position:relative;min-width:0}
.col-chart .col span{display:block;width:100%;max-width:38px;background:#2a78d6;border-radius:4px 4px 0 0;min-height:2px}.col-chart .col.now span{background:#eb6834}
.col-chart .col b{font-size:11px;color:#23354b;margin-bottom:3px}.col-chart .col:hover span{filter:brightness(1.12)}
.col-axis{display:flex;gap:6px}.col-axis span{flex:1;text-align:center;font-size:11px;color:#677c8d;min-width:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid #dfe7ee;margin-bottom:18px}
.tabs a{padding:10px 14px;border-bottom:3px solid transparent;color:#4d6477;font-size:14px;font-weight:600}.tabs a:hover{text-decoration:none;color:#126f87}
.tabs a.active{border-bottom-color:#087f8c;color:#0b5f69}.tabs a b{background:#edf1f6;border-radius:20px;padding:1px 8px;font-size:11px;margin-left:5px}
.form-section{border:1px solid #e3eaf0;border-radius:12px;padding:18px 20px 20px;margin:0 0 18px}.form-section legend{font-weight:700;padding:0 8px;font-size:15px}
.req{color:#b3372c}.field-error{color:#ab3c30;font-size:12px;font-weight:400}.hint{font-weight:400;font-size:12px;color:#677c8d}
.form-actions{display:flex;gap:10px;flex-wrap:wrap;position:sticky;bottom:0;background:#f3f6fa;padding:14px 0;border-top:1px solid #dfe7ee}
.head-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.detail-grid.three{grid-template-columns:repeat(3,1fr)}
.renew-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:22px}
.renew-card{background:#fff;border:1px solid #e0e7ee;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}.renew-card h3{margin:0;font-size:14px}.renew-card .value{font-size:18px;font-weight:700;color:#143d53}
.diff{width:100%;margin-top:8px}.diff td,.diff th{padding:7px 9px;font-size:12px}.diff .old{background:#fff5f4;color:#8f3b33}.diff .new{background:#eff9f3;color:#1f6247}
.diff-summary{font-size:12px;color:#4d6477}.log-user small{display:block}
.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.module-card{background:#fff;border:1px solid #e0e7ee;border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:10px;color:#334e60;min-height:190px}
.module-card .icon{width:46px;height:46px;border-radius:12px;background:#e7f5f4;color:#0c877c;display:grid;place-items:center;font-size:24px}
.module-card.planned{background:#f8fafc;border-style:dashed}.module-card.planned .icon{background:#edf1f6;color:#8697a6}
a.module-card:hover{border-color:#93bdc4;text-decoration:none;box-shadow:0 2px 12px rgba(16,44,67,.08)}.module-card .foot{margin-top:auto;display:flex;justify-content:space-between;align-items:center;font-size:12px}
.bulk-bar{display:flex;flex-wrap:wrap;gap:12px;align-items:end;background:#f6fafb;border:1px solid #d7e6e9;border-radius:10px;padding:14px;margin-bottom:14px}.bulk-bar label{min-width:150px}
@media(max-width:1150px){.type-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.map-layout{grid-template-columns:1fr}.map-list{max-height:320px}.module-grid,.renew-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-grid.three{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.type-grid{gap:10px}.type-card{padding:12px}.type-card .number{font-size:22px}.type-card ul{display:none}.module-grid,.renew-grid,.detail-grid.three{grid-template-columns:1fr}.map{height:380px}.map.map-tall{height:420px;min-height:0}.chip{font-size:11px}.form-actions{position:static}}
@media print{.app-footer,.map-tool,.form-actions{display:none!important}.panel{border:0;padding:0}}.module-nav a.current{background:#1b3d52;color:#fff;box-shadow:inset 3px 0 #f0b44c}
.hub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}
.hub-card{background:#fff;border:1px solid #e0e7ee;border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:12px;color:#334e60}
a.hub-card:hover{border-color:#93bdc4;text-decoration:none;box-shadow:0 2px 12px rgba(16,44,67,.08)}
.hub-card .icon{width:48px;height:48px;border-radius:12px;background:#e7f5f4;color:#0c877c;display:grid;place-items:center;font-size:25px}
.hub-card h2{margin:0}.hub-card p{margin:0}
.hub-card .kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;border-top:1px solid #edf1f5;padding-top:12px;margin-top:auto}
.hub-card .kpis b{display:block;font-size:22px;color:#143d53;line-height:1.3}.hub-card .kpis small{font-size:11px}
.hub-card.planned{background:#f8fafc;border-style:dashed}.hub-card.planned .icon{background:#edf1f6;color:#8697a6}
.checklist{display:grid;gap:8px}
.check-item{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border:1px solid #e3eaf0;border-radius:10px;background:#fff}
.check-item .num{width:30px;height:30px;border-radius:50%;background:#edf1f6;display:grid;place-items:center;font-weight:700;font-size:13px;color:#4d6477}
.check-item.is-fail{border-color:#f0b7b1;background:#fff8f7}.check-item.is-fail .num{background:#ffe1dd;color:#a3362c}
.check-item p{margin:0;font-size:14px;line-height:1.5}
.seg{display:inline-flex;border:1px solid #cbd5df;border-radius:9px;overflow:hidden;flex-shrink:0;position:relative}
.seg input{position:absolute;opacity:0;pointer-events:none}.seg label{margin:0;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;color:#4d6477;background:#fff;display:flex;align-items:center;gap:5px}
.seg label+input+label{border-left:1px solid #cbd5df}
.seg input:focus-visible+label{outline:2px solid #65b4be;outline-offset:-2px}
.seg input.pass:checked+label{background:#e3f4ed;color:#17684f}.seg input.fail:checked+label{background:#ffebe9;color:#a3362c}
.check-summary{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;background:#f6fafb;border:1px solid #d7e6e9;border-radius:10px;padding:12px 14px;margin-bottom:12px;position:sticky;top:0;z-index:5}
.dropzone{position:relative;border:2px dashed #b9c9d6;border-radius:14px;padding:28px 18px;text-align:center;background:#f8fbfc;cursor:pointer;transition:border-color .15s,background .15s;display:block;font-weight:400}
.dropzone:hover,.dropzone.is-over{border-color:#087f8c;background:#eef8f8}.dropzone .big{font-size:34px;line-height:1;color:#087f8c}
.dropzone strong{display:block;font-size:15px;margin:8px 0 4px;color:#23354b}.dropzone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0}
.dropzone.has-file{border-style:solid;border-color:#1f8a66;background:#effaf5}.dropzone .file-name{color:#17684f;font-weight:600;overflow-wrap:anywhere}
.step-title{display:flex;align-items:center;gap:10px;margin:0 0 14px}.step-title>span:first-child{width:28px;height:28px;border-radius:50%;background:#087f8c;color:#fff;display:grid;place-items:center;font-size:13px;font-weight:700;flex-shrink:0}
@media(max-width:1150px){.hub-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.hub-grid{grid-template-columns:1fr}.check-item{grid-template-columns:30px minmax(0,1fr)}.check-item .seg{grid-column:1/-1;justify-self:start}}