@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,300&family=DM+Mono:wght@400;500&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--font-sans: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "DM Mono", "SF Mono", monospace;--bg-primary: #F2F2F7;--bg-secondary: #FFFFFF;--bg-tertiary: #E5E5EA;--bg-card: #FFFFFF;--bg-card-hover: #F9F9FB;--text-primary: #1C1C1E;--text-secondary: #48484A;--text-tertiary: #8E8E93;--text-quaternary: #AEAEB2;--border: rgba(60, 60, 67, .12);--border-strong: rgba(60, 60, 67, .22);--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 16px rgba(0,0,0,.08), 0 1px 4px rgba(0,0,0,.04);--shadow-lg: 0 8px 32px rgba(0,0,0,.1), 0 2px 8px rgba(0,0,0,.06);--green: #34C759;--green-bg: rgba(52, 199, 89, .12);--yellow: #FF9F0A;--yellow-bg: rgba(255, 159, 10, .12);--red: #FF3B30;--red-bg: rgba(255, 59, 48, .12);--blue: #007AFF;--blue-bg: rgba(0, 122, 255, .1);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--header-height: 60px}@media(prefers-color-scheme:dark){:root{--bg-primary: #000000;--bg-secondary: #1C1C1E;--bg-tertiary: #2C2C2E;--bg-card: #1C1C1E;--bg-card-hover: #2C2C2E;--text-primary: #FFFFFF;--text-secondary: #EBEBF5;--text-tertiary: #EBEBF599;--text-quaternary: #EBEBF54D;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow-md: 0 4px 16px rgba(0,0,0,.4);--shadow-lg: 0 8px 32px rgba(0,0,0,.5);--green-bg: rgba(52, 199, 89, .18);--yellow-bg: rgba(255, 159, 10, .18);--red-bg: rgba(255, 59, 48, .18);--blue-bg: rgba(0, 122, 255, .18)}}html{font-size:16px}body{font-family:var(--font-sans);background-color:var(--bg-primary);color:var(--text-primary);min-height:100vh;line-height:1.5;transition:background-color .3s ease,color .3s ease}#root{min-height:100vh;display:flex;flex-direction:column}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes spin{to{transform:rotate(360deg)}}.animate-fade-in-up{animation:fadeInUp .4s ease both}.animate-fade-in{animation:fadeIn .3s ease both}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.app-header{position:sticky;top:0;z-index:100;background:#f2f2f7d9;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-bottom:1px solid var(--border)}@media(prefers-color-scheme:dark){.app-header{background:#000000d9}}.header-inner{max-width:680px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between}.header-brand{display:flex;align-items:center;gap:12px}.brand-logo{width:38px;height:38px;background:linear-gradient(135deg,#007aff,#05c);border-radius:10px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #007aff59}.brand-icon{font-size:18px;filter:brightness(0) invert(1)}.brand-name{font-size:20px;font-weight:700;letter-spacing:-.02em;color:var(--text-primary);line-height:1.1}.brand-accent{color:var(--blue)}.brand-tagline{font-size:11px;color:var(--text-tertiary);font-weight:400;letter-spacing:.02em}.header-actions{display:flex;align-items:center;gap:12px}.last-updated{font-size:11px;color:var(--text-quaternary);font-family:var(--font-mono)}.notif-btn{width:36px;height:36px;border-radius:10px;border:1px solid var(--border);background:var(--bg-secondary);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.notif-btn:hover{background:var(--bg-tertiary);transform:scale(1.05)}.notif-btn.notif-active{background:var(--blue-bg);border-color:var(--blue)}.brand-icon-img{width:38px;height:38px;object-fit:contain;border-radius:10px}.travel-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-md);border:1px solid var(--border);flex:1;min-width:0;transition:transform .2s ease,box-shadow .2s ease}.travel-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.card-direction{font-size:13px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px}.card-route{font-size:14px;font-weight:500;color:var(--text-secondary)}.status-pill{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:20px;white-space:nowrap}.status-green{background:var(--green-bg);color:var(--green)}.status-yellow{background:var(--yellow-bg);color:var(--yellow)}.status-red{background:var(--red-bg);color:var(--red)}.status-blue{background:var(--blue-bg);color:var(--blue)}.status-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dot-green{background:var(--green);animation:pulse 2s infinite}.dot-yellow{background:var(--yellow);animation:pulse 1.5s infinite}.dot-red{background:var(--red);animation:pulse 1s infinite}.dot-blue{background:var(--blue)}.card-time{display:flex;align-items:baseline;gap:4px;margin-bottom:8px;transition:opacity .2s ease}.time-number{font-size:56px;font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--text-primary);font-variant-numeric:tabular-nums;font-family:var(--font-sans)}.time-unit{font-size:20px;font-weight:400;color:var(--text-tertiary);padding-bottom:6px}.time-loading{font-size:48px;font-weight:300;color:var(--text-quaternary);animation:pulse 1.5s infinite}@keyframes time-flash-anim{0%{opacity:1}30%{opacity:.3}to{opacity:1}}.time-flash .time-number{animation:time-flash-anim .5s ease}.deviation{font-size:13px;font-weight:500;margin-bottom:8px;min-height:18px}.deviation.over{color:var(--yellow)}.deviation.over[style*=red],.deviation.heavy{color:var(--red)}.deviation.under,.deviation.normal{color:var(--green)}.deviation.building{color:var(--text-quaternary);font-style:italic;font-weight:400}.baseline-label{color:var(--text-quaternary);font-weight:400}.card-distance{font-size:12px;color:var(--text-quaternary);font-family:var(--font-mono)}@media(max-width:480px){.time-number{font-size:48px}.travel-card{padding:18px}}.airport-card{background:var(--bg-card);border-radius:var(--radius-lg);padding:18px 20px;border:1px solid var(--border);box-shadow:var(--shadow-sm);flex:1;min-width:0;transition:transform .2s ease,box-shadow .2s ease}.airport-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.airport-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}.airport-code{font-size:13px;font-weight:700;color:#fff;background:var(--blue);padding:3px 8px;border-radius:6px;letter-spacing:.05em;font-family:var(--font-mono)}.airport-name{font-size:13px;font-weight:500;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.airport-time{display:flex;align-items:baseline;gap:4px;margin-bottom:6px}.airport-mins{font-size:42px;font-weight:700;letter-spacing:-.03em;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1}.airport-unit{font-size:16px;font-weight:400;color:var(--text-tertiary);padding-bottom:4px}.airport-loading{font-size:36px;font-weight:300;color:var(--text-quaternary);animation:pulse 1.5s infinite}.airport-distance{font-size:11px;color:var(--text-quaternary);font-family:var(--font-mono)}.incident-card{display:flex;gap:14px;background:var(--bg-card);border-radius:var(--radius-md);padding:16px;border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:transform .2s ease}.incident-card:hover{transform:translate(3px)}.incident-card.severity-red{border-left:3px solid var(--red)}.incident-card.severity-yellow{border-left:3px solid var(--yellow)}.incident-card.severity-blue{border-left:3px solid var(--blue)}.incident-icon{font-size:22px;flex-shrink:0;line-height:1.2}.incident-body{flex:1;min-width:0}.incident-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}.incident-badge{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:20px}.badge-red{background:var(--red-bg);color:var(--red)}.badge-yellow{background:var(--yellow-bg);color:var(--yellow)}.badge-blue{background:var(--blue-bg);color:var(--blue)}.incident-direction{font-size:12px;font-weight:500;color:var(--text-tertiary);background:var(--bg-tertiary);padding:2px 8px;border-radius:20px}.incident-time{font-size:12px;color:var(--text-quaternary);margin-left:auto;font-family:var(--font-mono)}.incident-description{font-size:14px;font-weight:500;color:var(--text-primary);margin-bottom:4px;line-height:1.4}.incident-location{font-size:12px;color:var(--text-tertiary)}.closure-badge{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:20px;background:var(--red);color:#fff}.incident-footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.incident-lanes{font-size:12px;color:var(--text-tertiary)}.message-board-section{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);overflow:hidden}.board-header{display:flex;align-items:center;gap:8px;padding:14px 18px 10px}.board-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 2s infinite;flex-shrink:0}.board-label{font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em}.board-display{padding:0 18px 16px}.board-location{font-size:11px;color:var(--text-quaternary);margin-bottom:8px}.board-screen{background:#0a0a0a;border-radius:var(--radius-sm);padding:14px 16px;border:2px solid #222;box-shadow:inset 0 2px 8px #00000080}@media(prefers-color-scheme:dark){.board-screen{border-color:#333}}.board-line{font-family:var(--font-mono);font-size:15px;font-weight:500;color:#ff9500;text-transform:uppercase;letter-spacing:.12em;line-height:1.7;text-shadow:0 0 8px rgba(255,149,0,.6)}.notif-prompt{background:linear-gradient(135deg,#ff950014,#ff64000a);border:1px solid rgba(255,149,0,.25);border-radius:var(--radius-lg);padding:16px 20px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.notif-prompt-bird{flex-shrink:0;display:flex;align-items:center;justify-content:center}.notif-bird-img{width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 2px 12px rgba(255,120,0,.4));border-radius:16px}.notif-prompt-body{flex:1;min-width:180px}.notif-prompt-title{font-size:15px;font-weight:700;color:var(--text-primary);margin-bottom:4px}.notif-prompt-desc{font-size:13px;color:var(--text-secondary);line-height:1.4}.notif-prompt-actions{display:flex;gap:8px;flex-shrink:0}.notif-enable-btn{background:#f70;color:#fff;border:none;border-radius:var(--radius-sm);padding:9px 18px;font-size:14px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:all .2s ease;box-shadow:0 2px 8px #ff770059}.notif-enable-btn:hover{background:#e56a00;transform:scale(1.02)}.notif-dismiss-btn{background:transparent;color:var(--text-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 14px;font-size:14px;font-family:var(--font-sans);cursor:pointer;transition:all .2s ease}.notif-dismiss-btn:hover{background:var(--bg-tertiary)}@media(max-width:480px){.notif-bird-img{width:56px;height:56px}.notif-prompt-actions{width:100%}.notif-enable-btn{flex:1}}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;max-width:680px;margin:0 auto;width:100%;padding:20px 16px 40px;display:flex;flex-direction:column;gap:24px}.section{display:flex;flex-direction:column;gap:12px}.section-header{display:flex;align-items:center;justify-content:space-between}.section-title{font-size:13px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em}.cards-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:400px){.cards-grid{grid-template-columns:1fr}}.skeleton{height:160px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-card) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-lg)!important;box-shadow:none!important}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.refresh-btn{font-size:12px;font-weight:500;color:var(--blue);background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:6px;font-family:var(--font-sans);transition:background .15s ease}.refresh-btn:hover{background:var(--blue-bg)}.incident-count{background:var(--red-bg);color:var(--red);font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}.no-incidents{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);padding:32px 20px;text-align:center}.no-incidents-icon{font-size:32px;margin-bottom:8px}.no-incidents-title{font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.no-incidents-desc{font-size:13px;color:var(--text-tertiary)}.incidents-list{display:flex;flex-direction:column;gap:8px}.app-footer{text-align:center;padding:20px 16px;border-top:1px solid var(--border)}.app-footer p{font-size:11px;color:var(--text-quaternary);line-height:1.6}.footer-links{display:flex;align-items:center;gap:8px;margin-top:6px}.footer-links a{font-size:11px;color:var(--text-quaternary);text-decoration:none;transition:color .2s}.footer-links a:hover{color:#f70}.footer-links span{font-size:11px;color:var(--text-quaternary)}.app-version{font-size:10px;color:var(--text-quaternary);font-family:var(--font-mono);margin-top:4px}.legal-page{min-height:100vh;background:var(--bg-primary);padding:0 0 60px}.legal-container{max-width:720px;margin:0 auto;padding:0 20px}.legal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-bottom:1px solid var(--border);margin-bottom:40px}.legal-back{font-size:14px;color:#f70;text-decoration:none;font-weight:500;transition:opacity .2s}.legal-back:hover{opacity:.7}.legal-brand{display:flex;align-items:center;gap:8px}.legal-icon{width:28px;height:28px;border-radius:7px;object-fit:contain}.legal-brand-name{font-size:16px;font-weight:700;color:var(--text-primary);letter-spacing:-.5px}.legal-brand-name span{color:#f70}.legal-title{font-size:36px;font-weight:700;color:var(--text-primary);letter-spacing:-.03em;margin-bottom:8px;line-height:1.1}.legal-effective{font-size:13px;color:var(--text-tertiary);margin-bottom:2px}.legal-entity{font-size:13px;color:var(--text-tertiary);margin-bottom:32px}.legal-alert{background:var(--red-bg);border:1px solid var(--red);border-radius:var(--radius-md);padding:14px 18px;font-size:14px;color:var(--red);margin-bottom:36px;line-height:1.5}.legal-highlight{background:var(--blue-bg);border:1px solid rgba(0,122,255,.2);border-radius:var(--radius-md);padding:14px 18px;font-size:14px;color:var(--text-secondary);margin-bottom:36px;line-height:1.5}section{margin-bottom:36px}section h2{font-size:18px;font-weight:700;color:var(--text-primary);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}section h3{font-size:15px;font-weight:600;color:var(--text-secondary);margin:16px 0 8px}section p{font-size:14px;color:var(--text-secondary);line-height:1.7;margin-bottom:12px}section ul{margin:8px 0 12px;padding-left:24px}section ul li{font-size:14px;color:var(--text-secondary);line-height:1.7;margin-bottom:6px}section a{color:#f70;text-decoration:none}section a:hover{text-decoration:underline}.legal-contact{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 20px;margin-top:12px}.legal-contact p{margin-bottom:4px;font-size:14px}.legal-contact a{color:#f70}.legal-footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.legal-footer p{font-size:12px;color:var(--text-quaternary)}.legal-links{display:flex;gap:20px}.legal-links a{font-size:12px;color:#f70;text-decoration:none}.legal-links a:hover{text-decoration:underline}@media(max-width:480px){.legal-title{font-size:28px}.legal-footer{flex-direction:column}}
