:root{font-family:"Noto Sans KR",sans-serif;color:#18211d;background:#dfe7e3;font-synthesis:none;--red:#ef3325}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}.stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;gap:76px;padding:32px;background:linear-gradient(110deg,#0b2534d9,#1837469e),url('./assets/hospital-corridor.png') center/cover}.phone{position:relative;width:390px;height:844px;max-height:94vh;aspect-ratio:390/844;padding:9px;border:2px solid #737b78;border-radius:48px;background:#121715;box-shadow:0 32px 90px #07101699;overflow:hidden;flex:none}.screen{position:relative;width:100%;height:100%;overflow:hidden;border-radius:40px;background:#dce5e0}.map-wrap,#map,.map-fallback{position:absolute;inset:0}#map{z-index:2;background:#e4ebe7}.map-fallback{z-index:3;display:grid;place-items:center;overflow:hidden;background:#e5ece8}.fallback-grid{position:absolute;inset:-20%;background:linear-gradient(32deg,transparent 47%,#fff 48%,#fff 52%,transparent 53%),linear-gradient(125deg,transparent 47%,#f7faf8 48%,#f7faf8 52%,transparent 53%);background-size:170px 140px}.map-fallback p{position:relative;margin:0;padding:10px 15px;border-radius:20px;background:#ffffffdc;color:#65716b;font-size:12px;font-weight:700;box-shadow:0 5px 18px #2b3c3321}.emergency-call{position:absolute;z-index:5;top:calc(22px + env(safe-area-inset-top));right:15px;padding:10px 14px;border-radius:19px;background:var(--red);color:#fff;text-decoration:none;font-size:11px;font-weight:800;box-shadow:0 5px 14px #98211640}.map-controls{position:absolute;z-index:5;top:calc(72px + env(safe-area-inset-top));left:14px;right:14px;display:flex;justify-content:space-between;pointer-events:none}.map-controls button,.map-controls label{pointer-events:auto;border:1px solid #d8e0dc;border-radius:14px;background:#fffffff2;padding:10px 12px;color:#293630;font:700 11px inherit;box-shadow:0 4px 15px #17241e26}.map-controls select{border:0;background:transparent;color:var(--red);font:800 11px inherit;outline:none}.bottom-sheet{position:absolute;z-index:6;left:0;right:0;bottom:0;height:23%;min-height:190px;padding:0 18px calc(16px + env(safe-area-inset-bottom));background:#f8faf9;border-radius:25px 25px 0 0;box-shadow:0 -8px 30px #17251e24;transition:height .28s ease;overflow:hidden}.bottom-sheet.expanded{height:72%}.sheet-handle{display:block;width:100%;height:28px;border:0;background:transparent;cursor:pointer}.sheet-handle span{display:block;width:42px;height:5px;margin:auto;border-radius:5px;background:#cbd3cf}.sheet-summary{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.sheet-summary p{margin:0 0 3px;color:#6e7b74;font-size:11px}.sheet-summary h1{margin:0;font-size:20px;letter-spacing:-.04em}.sheet-summary h1 strong{color:var(--red)}.sheet-summary>span{color:#849089;font-size:9px;white-space:nowrap}.notice{margin:7px 0 13px;color:#87928c;font-size:10px}.hospital-list{height:calc(100% - 96px);display:grid;align-content:start;gap:9px;overflow-y:auto;padding-bottom:20px;scrollbar-width:none}.hospital-list::-webkit-scrollbar{display:none}.card{background:#fff;border:1px solid #e5ebe8;border-radius:17px;padding:13px;box-shadow:0 4px 14px #20382b09}.card-head{display:flex;justify-content:space-between;gap:10px}.card h3{margin:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.distance{color:var(--red);font-size:11px;font-weight:800;white-space:nowrap}.address{margin:5px 0 11px;color:#7b8781;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.actions{display:grid;grid-template-columns:1fr 1.6fr;gap:7px}.actions a,.actions button{height:34px;border:0;border-radius:10px;display:grid;place-items:center;text-decoration:none;font:700 10px inherit;cursor:pointer}.call{background:#eef2f0;color:#34413b}.route{background:var(--red);color:#fff}.empty{padding:28px;text-align:center;color:#7b8781;font-size:12px}.current-marker{width:26px;height:26px;border-radius:50%;background:#1769ff;border:4px solid #fff;box-shadow:0 2px 12px #123c8b88;position:relative}.current-marker span{position:absolute;inset:-9px;border:2px solid #1769ff55;border-radius:50%;animation:pulse 1.8s infinite}@keyframes pulse{to{transform:scale(1.8);opacity:0}}.hospital-marker{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:var(--red);color:#fff;border:3px solid #fff;box-shadow:0 3px 10px #6b17134d;font:bold 20px Arial}.leaflet-control-attribution{font-size:7px!important}.leaflet-container{font-family:"Noto Sans KR",sans-serif}
.intro{width:min(520px,42vw);color:#fff;text-shadow:0 2px 18px #07172266}.intro>p{margin:0 0 12px;color:#f3c4bf;font-size:14px;font-weight:800;letter-spacing:.08em}.intro h2{margin:0;font-size:42px;line-height:1.35;letter-spacing:-.055em}.intro ul{display:grid;gap:11px;margin:28px 0 0;padding:0;list-style:none;color:#eef3f1;font-size:14px}.intro li::before{content:"+";display:inline-grid;place-items:center;width:20px;height:20px;margin-right:9px;border-radius:6px;background:var(--red);color:#fff;font-weight:800}@media(max-width:760px){.stage{display:block;padding:0;background:#dce5e0}.phone{width:100%;height:100dvh;max-height:none;aspect-ratio:auto;padding:0;border:0;border-radius:0;background:#dce5e0;box-shadow:none}.screen{border-radius:0}.intro{display:none}.bottom-sheet{height:20%;min-height:178px}.bottom-sheet.expanded{height:68%}}@media(min-width:761px) and (max-height:900px){.phone{width:auto;height:94vh}}
.address-search{position:absolute;z-index:7;top:calc(18px + env(safe-area-inset-top));left:14px;right:70px;height:44px;display:flex;align-items:center;gap:8px;padding:0 7px 0 13px;border:1px solid #d9e1dd;border-radius:16px;background:#fffffff5;box-shadow:0 5px 20px #14251c2b}.address-search span{font-size:18px;color:#59665f}.address-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;font:600 12px inherit;color:#202a25}.address-search input::placeholder{color:#8d9792}.address-search button{height:32px;border:0;border-radius:10px;padding:0 11px;background:#202a25;color:#fff;font:800 10px inherit}.emergency-call{top:calc(20px + env(safe-area-inset-top));right:14px;padding:9px 11px}.map-controls{top:calc(76px + env(safe-area-inset-top))}.refresh-button span{font-size:15px;color:var(--red)}.marker-shell{background:transparent;border:0}.hospital-marker{position:relative;width:38px;height:38px;border-radius:14px 14px 14px 4px;transform:rotate(-45deg);background:linear-gradient(145deg,#ff574b,var(--red));border:3px solid #fff;box-shadow:0 5px 14px #8b221b55}.hospital-marker b{display:block;transform:rotate(45deg);font-size:24px;line-height:1}.hospital-detail{position:absolute;z-index:8;left:12px;right:12px;bottom:calc(23% + 12px);padding:16px;border-radius:20px;background:#fff;box-shadow:0 12px 35px #13231b42;transform:translateY(18px);opacity:0;pointer-events:none;transition:.22s ease}.hospital-detail.visible{transform:none;opacity:1;pointer-events:auto}.detail-close{position:absolute;top:10px;right:10px;width:29px;height:29px;border:0;border-radius:50%;background:#f0f3f1;color:#69746f;font-size:20px}.detail-head{display:flex;align-items:flex-end;justify-content:space-between;padding-right:29px}.detail-head small{color:#909a95;font-size:9px}.detail-head h2{max-width:245px;margin:2px 0 0;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-head>span{color:var(--red);font-size:11px;font-weight:800}.hospital-detail>p{margin:6px 0 12px;color:#77827d;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bed-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.bed-grid div{padding:9px 3px;border-radius:11px;background:#f3f6f4;text-align:center}.bed-grid span{display:block;color:#7b8781;font-size:8px}.bed-grid strong{display:block;margin-top:3px;color:#07865c;font-size:12px}.bed-grid strong.full{color:#df3b30}.bed-updated{display:block;margin:7px 0;color:#929b97;font-size:8px;text-align:right}.detail-actions{display:grid;grid-template-columns:1fr 1.6fr;gap:7px}.detail-actions a,.detail-actions button{height:38px;display:grid;place-items:center;border:0;border-radius:11px;text-decoration:none;font:800 10px inherit}.detail-actions a{background:#eef2f0;color:#34413b}.detail-actions button{background:var(--red);color:#fff}.route-guide{position:absolute;z-index:9;top:calc(76px + env(safe-area-inset-top));left:12px;right:12px;min-height:78px;display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:19px;background:#16231df2;color:#fff;box-shadow:0 8px 26px #07140e55;transform:translateY(-16px);opacity:0;pointer-events:none;transition:.22s ease}.route-guide.visible{transform:none;opacity:1;pointer-events:auto}.route-guide>button{position:absolute;top:7px;right:7px;width:25px;height:25px;border:0;border-radius:50%;background:#ffffff1c;color:#fff;font-size:18px}.turn-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:14px;background:#1677ff;font-size:27px;font-weight:800}.route-guide div{min-width:0;flex:1}.route-guide small{display:block;color:#aebbb5;font-size:8px}.route-guide strong{display:block;font-size:21px;line-height:1.2}.route-guide p{margin:2px 0 0;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-guide>b{margin-right:23px;color:#9fc7ff;font-size:11px;white-space:nowrap}
@media(max-width:760px){.hospital-detail{bottom:calc(20% + 10px)}}
/* Keep floating controls aligned with the sheet's real collapsed height. */
.screen{--sheet-collapsed:max(23%,190px)}
.bottom-sheet{height:var(--sheet-collapsed);min-height:0}

.hospital-detail{bottom:calc(var(--sheet-collapsed) + 12px);max-height:calc(100% - var(--sheet-collapsed) - 130px);overflow-y:auto}
.bottom-sheet:not(.expanded) .hospital-list{display:none}
.bottom-sheet:not(.expanded) .notice{margin-bottom:0}
@media(max-width:760px){.screen{--sheet-collapsed:max(20%,178px)}.bottom-sheet{height:var(--sheet-collapsed);min-height:0}.hospital-detail{bottom:calc(var(--sheet-collapsed) + 10px)}}
/* Prevent long hospital text from widening the bottom sheet. */
.bottom-sheet,.hospital-list,.card,.card-head,.actions{min-width:0;max-width:100%}
.hospital-list,.card{width:100%}
.card-head{display:grid;grid-template-columns:minmax(0,1fr) auto}
.card h3,.address{min-width:0;max-width:100%}
.actions{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}
.actions a,.actions button{min-width:0;width:100%}
/* Compact summary height while the hospital list is collapsed. */
.screen{--sheet-collapsed:120px}
@media(max-width:760px){.screen{--sheet-collapsed:112px}}
.hospital-marker.needs-verification{background:linear-gradient(145deg,#f6ad48,#e97918);box-shadow:0 5px 14px #8d4b1855}.map-legend{position:absolute;z-index:5;top:calc(125px + env(safe-area-inset-top));left:14px;display:flex;gap:8px;padding:7px 9px;border:1px solid #dce3df;border-radius:11px;background:#fffffff0;color:#59665f;font-size:8px;font-weight:700;box-shadow:0 3px 12px #17241e1f}.map-legend span{display:flex;align-items:center;gap:4px}.map-legend i{width:8px;height:8px;border-radius:50%;background:var(--red)}.map-legend span:last-child i{background:#e97918}
.bottom-nav{position:absolute;z-index:12;left:0;right:0;bottom:0;height:calc(64px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr;padding:7px 42px env(safe-area-inset-bottom);border-top:1px solid #e1e7e4;background:#fff;box-shadow:0 -5px 18px #17251e16}.bottom-nav button{display:grid;place-items:center;align-content:center;gap:1px;border:0;background:transparent;color:#8a958f;font-family:inherit;cursor:pointer}.bottom-nav span{height:24px;font-size:23px;line-height:24px;font-weight:400}.bottom-nav strong{font-size:9px}.bottom-nav button.active{color:var(--red)}.bottom-sheet{bottom:calc(64px + env(safe-area-inset-bottom))}.bottom-sheet.expanded{height:calc(72% - 64px)}.hospital-detail{bottom:calc(var(--sheet-collapsed) + 76px + env(safe-area-inset-bottom))}.map-controls{right:14px}.modal-backdrop{position:absolute;z-index:20;inset:0;display:flex;align-items:flex-end;background:#101b1673;opacity:0;pointer-events:none;transition:.2s}.modal-backdrop.visible{opacity:1;pointer-events:auto}.guardian-panel{width:100%;max-height:82%;padding:20px 18px calc(22px + env(safe-area-inset-bottom));overflow:auto;border-radius:25px 25px 0 0;background:#f8faf9;box-shadow:0 -12px 40px #0c15104d;transform:translateY(30px);transition:.22s}.modal-backdrop.visible .guardian-panel{transform:none}.guardian-panel header{display:flex;align-items:center;justify-content:space-between}.guardian-panel header small{color:#8a948f;font-size:9px}.guardian-panel h2{margin:2px 0 0;font-size:20px}.guardian-panel header button{width:32px;height:32px;border:0;border-radius:50%;background:#e9eeeb;color:#617069;font-size:20px}.guardian-help{margin:10px 0 14px;padding:10px 12px;border-radius:12px;background:#eef3f0;color:#68766f;font-size:9px;line-height:1.6}.guardian-auth{padding:20px 12px;text-align:center}.guardian-auth p{margin:0 0 12px;color:#65716b;font-size:11px}.guardian-auth a,.guardian-form>button{display:grid;place-items:center;height:42px;border:0;border-radius:12px;background:#16231d;color:#fff;text-decoration:none;font:800 11px inherit}.guardian-form{display:grid;grid-template-columns:1fr 1fr;gap:9px}.guardian-form div{display:grid;gap:5px}.guardian-form .phone-field,.guardian-form>button{grid-column:1/-1}.guardian-form label{color:#65716b;font-size:9px;font-weight:700}.guardian-form input{width:100%;height:40px;padding:0 11px;border:1px solid #dce4e0;border-radius:11px;background:#fff;outline:none;font:600 11px inherit}.guardian-form input:focus{border-color:#83968c}.guardian-list{display:grid;gap:8px;margin-top:14px}.guardian-item{display:flex;align-items:center;justify-content:space-between;padding:11px 12px;border:1px solid #e0e7e3;border-radius:13px;background:#fff}.guardian-item div{min-width:0}.guardian-item strong{display:block;font-size:12px}.guardian-item span{display:block;margin-top:2px;color:#7f8b85;font-size:9px}.guardian-item button{border:0;background:transparent;color:#d44339;font:700 9px inherit}.guardian-message{width:100%;height:40px;margin-top:7px;border:0;border-radius:12px;background:#ef3325;color:#fff;font:800 10px inherit}.toast{position:absolute;z-index:30;left:24px;right:24px;bottom:145px;margin:0;padding:11px 13px;border-radius:12px;background:#16231dec;color:#fff;text-align:center;font-size:10px;opacity:0;transform:translateY(8px);pointer-events:none;transition:.2s}.toast.visible{opacity:1;transform:none}.detail-actions.with-guardian{grid-template-columns:1fr 1fr 1.25fr}.detail-actions .guardian-action{background:#16231d;color:#fff}
@media(max-width:760px){.bottom-sheet.expanded{height:calc(68% - 64px)}.hospital-detail{bottom:calc(var(--sheet-collapsed) + 74px + env(safe-area-inset-bottom))}}
.hospital-detail.route-mode{bottom:calc(76px + env(safe-area-inset-bottom));max-height:290px}.route-hospital-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px;padding-right:2px}.route-hospital-label span{color:var(--red);font-size:9px;font-weight:800}.route-hospital-label strong{color:#1769ff;font-size:10px}.route-hospital-actions{display:grid;grid-template-columns:.8fr 1.25fr 1fr;gap:6px;margin-top:11px}.route-hospital-actions a,.route-hospital-actions button{height:38px;display:grid;place-items:center;border:0;border-radius:11px;text-decoration:none;font:800 9px inherit;cursor:pointer}.route-hospital-actions a{background:#eef2f0;color:#34413b}.route-hospital-actions .guardian-action{background:var(--red);color:#fff}.route-hospital-actions .route-stop{background:#16231d;color:#fff}
.screen.routing .bottom-sheet{transform:translateY(calc(100% + 80px));opacity:0;pointer-events:none}.bottom-sheet{transition:height .28s ease,transform .28s ease,opacity .2s ease}
