*{margin:0;padding:0;box-sizing:border-box}
body{background:#0F172A;color:#E2E8F0;font-family:-apple-system,BlinkMacSystemFont,'SF Pro',system-ui,sans-serif;min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}
.wrap{max-width:480px;margin:0 auto;padding:16px 12px;padding-top:calc(16px + env(safe-area-inset-top,0px))}
.hdr{text-align:center;margin-bottom:16px;padding-top:16px}
.hdr-title{font-size:20px;font-weight:700;margin-bottom:2px}
.hdr-road{font-size:12px;color:#94A3B8}
.status-card{border-radius:16px;padding:14px 16px;text-align:center;margin-bottom:16px;transition:all .5s}
.status-title{font-size:22px;font-weight:700;margin-bottom:2px}
.status-msg{font-size:13px;opacity:.9;font-variant-numeric:tabular-nums}
.status-time{margin-top:4px;font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}
.barrier-wrap{display:flex;flex-direction:column;align-items:center;margin:16px 0}
.cards{display:flex;gap:8px;margin-bottom:16px}
.card{flex:1;background:#1E293B;border-radius:12px;padding:12px 10px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:space-between;min-height:76px}
.card-label{font-size:9px;color:#94A3B8;text-transform:uppercase;letter-spacing:1px;margin-bottom:4px}
.card-value{font-size:18px;font-weight:700;display:flex;align-items:center;flex:1;font-variant-numeric:tabular-nums}
.card-sub{font-size:10px;color:#64748B;margin-top:2px}
.section{background:#1E293B;border-radius:12px;padding:12px;margin-bottom:16px}
.section-hdr{font-size:12px;font-weight:600;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}
.refresh-btn{background:none;border:1px solid #334155;border-radius:6px;color:#94A3B8;padding:4px 10px;font-size:10px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;min-width:32px;justify-content:center}
.refresh-btn:active{background:#334155}
.refresh-btn svg{width:12px;height:12px}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.refresh-btn.refreshing svg{animation:spin .6s linear infinite}
.refresh-btn.refresh-done{border-color:#16A34A;color:#6EE7B7}
.empty{text-align:center;color:#64748B;font-size:12px;padding:16px}
.info-text{font-size:11px;color:#94A3B8;line-height:1.5}
.error{background:#7F1D1D;border-radius:8px;padding:10px;font-size:11px;color:#FCA5A5;margin-bottom:12px}
.footer{text-align:center;font-size:9px;color:#475569;padding-bottom:calc(20px + env(safe-area-inset-bottom,0px))}
.hidden{display:none}
.feedback-btns{display:flex;gap:8px;margin-top:10px}
.fb-btn{flex:1;padding:10px;border-radius:8px;border:none;font-size:12px;font-weight:600;cursor:pointer;text-align:center}
.fb-btn:active{opacity:.7}
.fb-open{background:#064E3B;color:#6EE7B7}
.fb-closed{background:#7F1D1D;color:#FCA5A5}
.fb-msg{font-size:11px;color:#6EE7B7;text-align:center;margin-top:8px}
.setup-row{display:flex;gap:8px;margin-bottom:8px}
.setup-btn{flex:1;padding:10px;border-radius:8px;border:1px solid #334155;background:#1E293B;color:#E2E8F0;font-size:11px;font-weight:600;text-align:center;cursor:pointer;display:flex;align-items:center;justify-content:center;min-height:42px}
.setup-btn:active{background:#334155}
.setup-btn.coffee-btn{background:#FBBF24;color:#000;border-color:#FBBF24}
.setup-btn.coffee-btn:active{background:#D97706}
.feedback-link{display:block;margin-top:10px;padding:8px;border-radius:6px;border:1px solid #334155;color:#94A3B8;font-size:11px;text-align:center;text-decoration:none}
.feedback-link:active{background:#334155}
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:100;align-items:center;justify-content:center;padding:20px;display:none}
.modal-overlay.show{display:flex}.modal{background:#1E293B;border-radius:16px;padding:20px;max-width:400px;width:100%;max-height:80vh;overflow-y:auto}
.modal h3{font-size:16px;font-weight:700;margin-bottom:12px}
.modal p{font-size:13px;color:#94A3B8;line-height:1.6;margin-bottom:8px}
.modal ol{font-size:13px;color:#CBD5E1;line-height:1.8;padding-left:20px;margin-bottom:12px}
.modal-close{width:100%;padding:10px;border-radius:8px;border:none;background:#3B82F6;color:#FFF;font-weight:600;font-size:13px;cursor:pointer;margin-top:8px}
.modal-close:active{background:#2563EB}
.closure-card{background:#0F172A;border-radius:8px;padding:10px;margin-bottom:8px}
.closure-card:last-child{margin-bottom:0}
.closure-active{border:1px solid #DC2626}
.closure-hdr{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.closure-time{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
.closure-pill{font-size:10px;color:#94A3B8;background:#334155;padding:2px 8px;border-radius:4px;white-space:nowrap;font-variant-numeric:tabular-nums}
.closure-pill-active{color:#FCA5A5;background:#7F1D1D}
.closure-train{font-size:11px;color:#CBD5E1;padding:2px 0;display:flex;align-items:center;gap:4px}
.closure-train-route{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.closure-train-time{margin-left:auto;flex-shrink:0;padding-left:6px;display:flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums}
.train-status{font-size:9px;font-weight:600;width:42px;text-align:right;flex-shrink:0}
.train-status-ontime{color:#6EE7B7}
.train-status-delayed{color:#F59E0B}
.show-more-btn{width:100%;padding:8px;margin-top:8px;background:none;border:1px solid #334155;border-radius:6px;color:#94A3B8;font-size:11px;cursor:pointer}
.show-more-btn:active{background:#334155}
.show-more-btn:disabled{cursor:default}
.closure-time-group{display:flex;align-items:baseline;gap:2px}
.closure-uncertainty{font-size:13px;color:#94A3B8;margin-left:5px;font-variant-numeric:tabular-nums}
.closure-imminent{color:#F59E0B}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
.blink-a{animation:blink 1s infinite}
.blink-b{animation:blink 1s infinite .5s}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
.pulse{animation:pulse 2s infinite}
.landing{max-width:480px;margin:0 auto;padding:40px 16px;text-align:center}
.landing h1{font-size:24px;font-weight:700;margin-bottom:8px}
.landing p{font-size:13px;color:#94A3B8;margin-bottom:24px}
.crossing-list{list-style:none}
.crossing-link{display:block;background:#1E293B;border-radius:12px;padding:16px;margin-bottom:12px;text-decoration:none;color:#E2E8F0;text-align:left}
.crossing-link:active{background:#334155}
.crossing-link h3{font-size:15px;font-weight:600;margin-bottom:4px}
.crossing-link span{font-size:11px;color:#94A3B8}
.debug-panel{background:#0A1120;border:1px solid #1E293B;border-radius:8px;padding:10px 12px;margin-bottom:16px;font-family:monospace;font-size:10px;color:#475569;line-height:1.8}
.dbg-hdr{color:#334155;font-size:9px;text-transform:uppercase;letter-spacing:1.5px;margin-bottom:4px}
.dbg-row{color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dbg-muted{color:#334155}
.dbg-divider{border-top:1px solid #1E293B;margin:6px 0}
