:root{--pm-primary: #102a43;--pm-accent: #3b82f6;--pm-surface: #ffffff;--pm-surface-alt: #f8fafc;--pm-surface-raised: #f1f5f9;--pm-text: #0f172a;--pm-text-mutated: #64748b;--pm-text-light: #94a3b8;--pm-border: #e2e8f0;--red-line: #ef4444;--red-line-light: #fee2e2;--blue-line: #3b82f6;--blue-line-light: #dbeafe;--interchange: #8b5cf6;--app-max-width: 480px;--header-height: 60px;--nav-height: 72px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--glass: rgba(255, 255, 255, .85);--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--pm-bg: #cbd5e1}[data-theme=dark]{--pm-primary: #0f172a;--pm-accent: #60a5fa;--pm-surface: #1e293b;--pm-surface-alt: #0f172a;--pm-surface-raised: #334155;--pm-text: #f8fafc;--pm-text-mutated: #94a3b8;--pm-text-light: #64748b;--pm-border: #334155;--pm-bg: #020617;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .3);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .4), 0 2px 4px -2px rgb(0 0 0 / .4);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .4), 0 4px 6px -4px rgb(0 0 0 / .4)}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{font-family:Outfit,-apple-system,BlinkMacSystemFont,sans-serif;background-color:var(--pm-bg);color:var(--pm-text);line-height:1.5;display:flex;justify-content:center;align-items:flex-start;min-height:100vh;margin:0}.app-container{width:100%;max-width:var(--app-max-width);height:100vh;height:100dvh;background-color:var(--pm-surface-alt);position:relative;display:flex;flex-direction:column;box-shadow:0 25px 50px -12px #00000040;overflow:hidden}h1{font-size:1.25rem;font-weight:700;color:#fff;line-height:1.2}h2{font-size:1.5rem;font-weight:700;margin-bottom:.25rem}h3{font-size:1.1rem;font-weight:600}a{text-decoration:none;color:inherit}button{font-family:inherit;border:none;background:none;cursor:pointer}.app-header{height:var(--header-height);background:var(--pm-primary);display:flex;align-items:center;padding:0 1.25rem;z-index:10;flex-shrink:0;box-shadow:var(--shadow-sm)}.header-left{display:flex;align-items:center;gap:.75rem;color:#fff}.header-logo{width:32px;height:32px}.header-title{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem}.badge{font-size:.35rem;text-transform:uppercase;background:#fff3;padding:2px 6px;border-radius:4px;letter-spacing:.05em;font-weight:600}.header-right{display:flex;align-items:center;gap:.5rem}.theme-btn{color:#fff;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px;background:#ffffff1a;transition:background .2s}.theme-btn:active{background:#fff3}.app-content{flex:1;overflow-y:auto;padding-bottom:2rem;position:relative}.view{display:none;padding:1.25rem;animation:fadeIn .3s ease}.view.active{display:block}.home-notice{background:#ef44441a;border:1px solid rgba(239,68,68,.2);color:var(--red-line);padding:.75rem 1rem;border-radius:var(--radius-md);margin-bottom:1rem;font-size:.85rem;line-height:1.4}.search-card{background:var(--pm-surface);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-md);margin-bottom:1.5rem;margin-top:.5rem;position:relative}.route-form{position:relative}.input-group{display:flex;align-items:center;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--pm-border);position:relative}.input-group.destination{border-bottom:none}.input-icon{color:var(--pm-accent);display:flex;align-items:center;justify-content:center;width:24px;height:24px}.destination-icon{color:var(--red-line)}.input-wrapper{flex:1;display:flex;flex-direction:column}.input-wrapper label{font-size:.75rem;font-weight:600;color:var(--pm-text-mutated);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.02em}.input-wrapper input{border:none;background:transparent;font-size:1.1rem;font-weight:600;color:var(--pm-text);outline:none;font-family:inherit;width:100%}.input-wrapper input::placeholder{color:var(--pm-border);font-weight:400}.suggestions-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--pm-surface);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-height:200px;overflow-y:auto;z-index:20;display:none}.suggestions-dropdown.show{display:block}.suggestion-item{padding:.75rem 1rem;font-size:.95rem;cursor:pointer;display:flex;align-items:center;gap:.5rem;border-bottom:1px solid var(--pm-border)}.suggestion-item:last-child{border-bottom:none}.suggestion-item:hover,.suggestion-item:active{background-color:var(--pm-surface-raised)}.line-tag{width:8px;height:8px;border-radius:50%;display:inline-block}.line-tag.red{background:var(--red-line)}.line-tag.blue{background:var(--blue-line)}.line-tag.interchange{background:var(--interchange)}.swap-btn{position:absolute;right:0;top:50%;transform:translateY(-50%) translate(10px);width:40px;height:40px;border-radius:50%;background:var(--pm-surface);border:1px solid var(--pm-border);color:var(--pm-text-mutated);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);z-index:5;transition:all .2s ease}.swap-btn:active{background:var(--pm-surface-raised);transform:translateY(-50%) translate(10px) scale(.95)}.btn-primary{width:100%;background:var(--pm-primary);color:#fff;padding:1rem;border-radius:var(--radius-md);font-weight:600;font-size:1rem;margin-top:1.5rem;transition:transform .1s ease,box-shadow .2s}.btn-primary:active{transform:translateY(2px);opacity:.9}.quick-links{margin-top:1rem}.section-title-sm{font-size:.9rem;font-weight:600;color:var(--pm-text-mutated);margin-bottom:.75rem}.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}.info-card{background:var(--pm-surface);border-radius:var(--radius-md);padding:1rem .5rem;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.5rem;box-shadow:var(--shadow-sm);color:var(--pm-accent);font-weight:500;font-size:.8rem;cursor:pointer}.info-card span{color:var(--pm-text)}.page-header{margin-bottom:1.5rem}.page-header p{color:var(--pm-text-mutated);font-size:.95rem}.corridor-group{background:var(--pm-surface);border-radius:var(--radius-lg);padding:1.25rem;margin-bottom:1.5rem;box-shadow:var(--shadow-sm)}.corridor-header{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--pm-border)}.line-dot{width:12px;height:12px;border-radius:50%}.corridor-header.red-line .line-dot{background:var(--red-line)}.corridor-header.blue-line .line-dot{background:var(--blue-line)}.corridor-header h3{font-size:1.05rem;flex:1}.stats{font-size:.8rem;color:var(--pm-text-mutated);font-weight:500}.station-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.st-item{display:flex;align-items:center;justify-content:space-between;padding:.5rem 0;font-size:.95rem}.st-badge{font-size:.7rem;padding:2px 6px;border-radius:4px;font-weight:600}.st-badge.underground{background:var(--pm-surface-raised);color:var(--pm-text-mutated)}.st-badge.elevated{background:var(--pm-border);color:var(--pm-text)}.st-badge.interchange{background:#ede9fe;color:var(--interchange)}.header-right{margin-left:auto}.lang-select{background:#fff3;color:#fff;border:none;border-radius:4px;padding:4px 8px;font-weight:600;cursor:pointer;outline:none;font-family:inherit}.lang-select option{background:var(--pm-primary);color:#fff}.subpage-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.back-btn{width:40px;height:40px;border-radius:50%;background:var(--pm-surface);box-shadow:var(--shadow-sm);display:flex;align-items:center;justify-content:center;color:var(--pm-text)}.back-btn:active{background:var(--pm-surface-raised)}.info-content{background:var(--pm-surface);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-sm)}.table-wrapper{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;text-align:left}.data-table th,.data-table td{padding:.75rem;border-bottom:1px solid var(--pm-border)}.data-table th{font-weight:600;color:var(--pm-text-mutated);font-size:.85rem;text-transform:uppercase}.data-table td{font-weight:500}.note{font-size:.8rem;color:var(--pm-text-mutated);margin-top:1rem}.menu-list{background:var(--pm-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.menu-item{width:100%;display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem;font-size:1rem;color:var(--pm-text);border-bottom:1px solid var(--pm-border);transition:background .2s;text-align:left}.menu-item:last-child{border-bottom:none}.menu-item:active{background:var(--pm-surface-raised)}.menu-item .chevron{margin-left:auto;color:var(--pm-text-mutated)}.menu-item svg:not(.chevron){color:var(--pm-accent)}.menu-divider{height:8px;background:var(--pm-surface-alt);border-bottom:1px solid var(--pm-border);border-top:1px solid var(--pm-border)}.content-page p{margin-bottom:1rem;color:var(--pm-text)}.content-page ol,.content-page ul{padding-left:1.5rem;margin-bottom:1rem;color:var(--pm-text)}.ql-align-center{text-align:center}.ql-align-right{text-align:right}.ql-align-justify{text-align:justify}.ql-video{width:100%;height:auto;aspect-ratio:16/9;display:block;margin:1rem 0}.content-page li{margin-bottom:.5rem}.news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;padding:1rem 0}.news-card{display:flex;flex-direction:column;background:var(--pm-surface);border:1px solid var(--pm-border);border-radius:8px;overflow:hidden;text-decoration:none;transition:transform .2s ease,box-shadow .2s ease}.news-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.news-card-image{width:100%;height:160px;background-color:var(--pm-border);overflow:hidden}.news-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.news-card:hover .news-card-image img{transform:scale(1.05)}.news-card-content{padding:1rem;display:flex;flex-direction:column;flex-grow:1}.news-source-meta{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--pm-text-mutated);margin-bottom:.5rem;text-transform:uppercase;font-weight:600}.news-source-name{color:var(--pm-accent)}.news-list-title{margin:0;font-size:1.1rem;color:var(--pm-text);line-height:1.4;font-weight:600}.article-hero{width:100%;height:auto;min-height:200px;max-height:350px;object-fit:cover;display:block}.article-body{font-size:1.05rem;line-height:1.6;color:var(--pm-text)}.article-body h2{font-size:1.25rem;color:var(--pm-primary);margin-top:1.5rem;margin-bottom:.75rem;line-height:1.4}.article-body p{margin-bottom:1rem}.article-body ul{padding-left:1.5rem;margin-bottom:1rem}.faq-list{display:flex;flex-direction:column;gap:1rem;padding-bottom:2rem}.faq-item{background:var(--pm-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.faq-question{width:100%;padding:1rem;display:flex;justify-content:space-between;align-items:center;font-weight:600;color:var(--pm-text);text-align:left;gap:1rem;font-size:.95rem}.faq-question .chevron{transition:transform .3s ease;flex-shrink:0;color:var(--pm-text-mutated)}.faq-item.open .faq-question .chevron{transform:rotate(180deg)}.faq-answer{max-height:0;overflow:hidden;transition:max-height .3s ease}.faq-answer-content{padding:0 1rem 1rem;color:var(--pm-text-mutated);font-size:.9rem;line-height:1.5}.bottom-nav{height:var(--nav-height);background:var(--pm-surface);flex-shrink:0;z-index:10;display:flex;justify-content:space-around;align-items:center;border-top:1px solid var(--pm-border);box-shadow:0 -4px 6px -1px #0000000d;padding-bottom:env(safe-area-inset-bottom)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--pm-text-mutated);padding:.5rem 1rem;transition:color .2s ease}.nav-item.active{color:var(--pm-accent)}.nav-item span{font-size:.75rem;font-weight:500}.route-results-container{background:var(--pm-surface);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-md);margin-top:-.5rem}.summary-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--pm-border)}.summary-box{display:flex;flex-direction:column;align-items:center}.summary-box .val{font-size:1.25rem;font-weight:700;color:var(--pm-text)}.summary-box .lbl{font-size:.7rem;color:var(--pm-text-mutated);text-transform:uppercase;font-weight:600;letter-spacing:.05em}.timeline{position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;top:10px;bottom:10px;left:7px;width:4px;background:var(--pm-border);border-radius:2px}.tl-node{position:relative;margin-bottom:1.25rem}.tl-node:last-child{margin-bottom:0}.tl-dot{position:absolute;left:-2rem;width:18px;height:18px;border-radius:50%;background:var(--pm-surface);border:4px solid var(--pm-border);top:2px;z-index:2}.tl-dot.start{border-color:var(--pm-accent)}.tl-dot.end{border-color:var(--red-line)}.tl-dot.interchange{border-color:var(--interchange);background:var(--pm-surface);width:22px;height:22px;left:-2.1rem}.tl-dot.intermediate.red{border-color:var(--red-line);width:12px;height:12px;left:-1.7rem;top:5px}.tl-dot.intermediate.blue{border-color:var(--blue-line);width:12px;height:12px;left:-1.7rem;top:5px}.tl-content h4{font-size:1.05rem;color:var(--pm-text)}.tl-content .meta{font-size:.8rem;color:var(--pm-text-mutated);display:flex;gap:.5rem;align-items:center;margin-top:.15rem}.line-indicator{padding:2px 6px;border-radius:4px;font-size:.7rem;font-weight:600}.line-indicator.red{background:var(--red-line-light);color:var(--red-line)}.line-indicator.blue{background:var(--blue-line-light);color:var(--blue-line)}.station-page-tags{display:flex;gap:.5rem;margin-top:.5rem;margin-bottom:1.5rem;flex-wrap:wrap}.station-tag{display:inline-flex;align-items:center;padding:.35rem .85rem;border-radius:100px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;line-height:1}.station-tag.line-tag{width:auto;height:auto;border-radius:100px;color:#fff}.station-tag.line-tag.red{background:var(--red-line)}.station-tag.line-tag.blue{background:var(--blue-line)}.station-tag.line-tag.red.blue{background:var(--interchange)}.station-tag.status-tag{background:var(--pm-surface-raised);color:var(--pm-text);border:1px solid var(--pm-border)}.hidden{display:none!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 480px){.app-container{height:100vh;height:100dvh}}.contact-form-card{background:var(--pm-surface);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-md)}.contact-subtitle{color:var(--pm-text-mutated);font-size:.95rem;margin-bottom:1.5rem;line-height:1.5}.contact-form{display:flex;flex-direction:column;gap:1.25rem}.cf-field{display:flex;flex-direction:column;gap:.4rem}.cf-label{display:flex;align-items:center;gap:.4rem;font-size:.8rem;font-weight:600;color:var(--pm-text-mutated);text-transform:uppercase;letter-spacing:.04em}.cf-label svg{color:var(--pm-accent);flex-shrink:0}.cf-required{color:var(--red-line);font-size:.9rem;line-height:1}.cf-optional{font-weight:400;color:var(--pm-text-light);font-size:.75rem;text-transform:none;letter-spacing:0;margin-left:.1rem}.cf-input{width:100%;background:var(--pm-surface-alt);border:1.5px solid var(--pm-border);border-radius:var(--radius-sm);padding:.75rem 1rem;font-size:1rem;font-family:inherit;color:var(--pm-text);outline:none;transition:border-color .2s,box-shadow .2s;-webkit-appearance:none}.cf-input::placeholder{color:var(--pm-text-light)}.cf-input:focus{border-color:var(--pm-accent);box-shadow:0 0 0 3px #3b82f626;background:var(--pm-surface)}.cf-textarea{resize:vertical;min-height:110px;line-height:1.5}.cf-field.error .cf-input{border-color:var(--red-line);box-shadow:0 0 0 3px #ef44441f}.cf-error{font-size:.8rem;color:var(--red-line);display:none;margin-top:.1rem}.cf-field.error .cf-error{display:block}.cf-submit{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:.25rem}.cf-success{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2rem 1rem;gap:.75rem;animation:fadeIn .4s ease}.cf-success-icon{width:64px;height:64px;border-radius:50%;background:#dcfce7;color:#16a34a;display:flex;align-items:center;justify-content:center;margin-bottom:.5rem}[data-theme=dark] .cf-success-icon{background:#16a34a33}.cf-success h3{font-size:1.2rem;color:var(--pm-text)}.cf-success p{color:var(--pm-text-mutated);font-size:.95rem}.cf-reset-btn{margin-top:.75rem;padding:.65rem 1.5rem;border-radius:var(--radius-md);background:var(--pm-surface-raised);color:var(--pm-accent);font-weight:600;font-size:.95rem;font-family:inherit;border:1.5px solid var(--pm-border);cursor:pointer;transition:background .2s}.cf-reset-btn:active{background:var(--pm-border)}
