:root{
  --bg:#031722;--bg2:#062b3d;--panel:rgba(255,255,255,.085);--panel2:rgba(255,255,255,.115);
  --line:rgba(255,255,255,.14);--text:#f7fbfc;--muted:#a9c4cb;--mint:#55e4b8;--cyan:#5ecbff;
  --blue:#4da7ff;--amber:#ffc45b;--red:#ff7670;--ink:#05242e;--shadow:0 24px 80px rgba(0,0,0,.30);
  --r:26px;--r2:18px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--text);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 12% -2%,#17718a 0,transparent 28%),radial-gradient(circle at 86% 8%,rgba(63,192,164,.18),transparent 23%),linear-gradient(165deg,#073b4b 0,#041f2d 35%,#03131c 100%)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent 70%)}
a{color:inherit}.app{max-width:1240px;margin:0 auto;padding:16px 18px 118px}.section-anchor{scroll-margin-top:18px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:4px 2px 17px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand img{width:46px;height:46px;border-radius:15px;box-shadow:0 10px 28px rgba(0,0,0,.28)}.brand strong{display:block;font-size:18px;letter-spacing:.01em}.brand small{display:block;margin-top:2px;color:var(--muted);font-size:12px}.top-actions{display:flex;align-items:center;gap:8px}.live-pill,.install-btn{border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--muted);border-radius:999px;padding:9px 12px;backdrop-filter:blur(20px);font:inherit;font-size:12px}.install-btn{display:none;color:#fff;cursor:pointer}.install-btn.show{display:inline-flex}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--amber);margin-right:7px;box-shadow:0 0 0 5px rgba(255,196,91,.10)}.dot.ok{background:var(--mint);box-shadow:0 0 0 5px rgba(85,228,184,.11)}
.hero{position:relative;min-height:390px;border:1px solid var(--line);border-radius:36px;padding:34px;overflow:hidden;background:linear-gradient(135deg,rgba(5,64,82,.97),rgba(3,29,42,.88));box-shadow:var(--shadow)}.hero:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 68% 28%,rgba(94,203,255,.16),transparent 25%),linear-gradient(120deg,transparent 0 54%,rgba(255,255,255,.035) 55% 56%,transparent 57%);pointer-events:none}.hero-noise{position:absolute;inset:0;opacity:.12;background-image:radial-gradient(rgba(255,255,255,.8) .6px,transparent .6px);background-size:8px 8px;mask-image:linear-gradient(90deg,black,transparent 72%)}.hero-copy{position:relative;z-index:3;max-width:720px}.eyebrow,.overline{font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:900;color:#a6edd7}.hero h1{font-size:clamp(43px,7.4vw,82px);line-height:.92;letter-spacing:-.06em;margin:12px 0 16px}.hero h1 span{background:linear-gradient(90deg,var(--mint),#9ee8ff);-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{max-width:690px;font-size:17px;line-height:1.55;color:#c0d8de;margin:0}.area-box{display:grid;grid-template-columns:auto minmax(230px,310px);gap:6px 12px;align-items:center;width:min(100%,620px);margin-top:25px;padding:12px 14px;border:1px solid rgba(255,255,255,.14);border-radius:18px;background:rgba(1,19,28,.34);backdrop-filter:blur(18px)}.area-box label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:900}.area-box select{grid-row:1/3;grid-column:2;border:0;outline:0;background:#0b3a4c;color:#fff;border-radius:13px;padding:11px 36px 11px 12px;font:inherit;font-weight:800}.area-box>span{font-size:11px;color:#d2e6ea;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hero-art{position:absolute;right:0;bottom:0;width:53%;height:100%;z-index:1;opacity:.95}.ridge{position:absolute;left:2%;right:-15%;bottom:0;clip-path:polygon(0 74%,11% 54%,19% 62%,30% 30%,39% 52%,48% 22%,58% 46%,69% 20%,80% 46%,90% 31%,100% 55%,100% 100%,0 100%)}.r1{height:74%;background:linear-gradient(180deg,rgba(111,218,215,.15),rgba(7,44,55,.55));filter:blur(.2px)}.r2{height:57%;transform:translateY(8px);background:linear-gradient(180deg,rgba(91,202,188,.24),rgba(3,30,40,.82));clip-path:polygon(0 76%,10% 58%,22% 67%,35% 43%,44% 65%,57% 39%,68% 65%,78% 49%,88% 70%,100% 58%,100% 100%,0 100%)}.r3{height:38%;background:#061f2a;clip-path:polygon(0 70%,16% 62%,26% 70%,44% 55%,58% 73%,75% 58%,100% 68%,100% 100%,0 100%)}.river{position:absolute;right:8%;bottom:-13%;width:64%;height:45%;border:2px solid rgba(94,203,255,.28);border-radius:50% 0 0 0;transform:rotate(-12deg);filter:blur(.3px)}.hero-orbit{position:absolute;right:13%;top:20%;width:112px;height:112px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(255,255,255,.20);background:radial-gradient(circle,rgba(85,228,184,.14),rgba(5,37,48,.24));box-shadow:0 0 0 22px rgba(255,255,255,.02),0 0 0 44px rgba(255,255,255,.015)}.hero-orbit b{font-size:42px;color:var(--mint);font-weight:900}.hero-orbit span{position:absolute;bottom:18px;font-size:9px;letter-spacing:.2em;color:#cceae4}
.pulse-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:14px}.pulse-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:11px;text-decoration:none;padding:14px 15px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.065);backdrop-filter:blur(18px);transition:.2s}.pulse-card:hover{transform:translateY(-2px);background:rgba(255,255,255,.10)}.pulse-icon{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:rgba(94,203,255,.09);font-size:20px}.pulse-card small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.pulse-card strong{display:block;margin-top:3px;font-size:13px;line-height:1.3}.pulse-card i{font-size:24px;color:var(--mint);font-style:normal}
.layout{display:grid;gap:16px;margin-top:16px}.layout-main{grid-template-columns:1fr 1fr}.territory-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.card{border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:20px;backdrop-filter:blur(24px);box-shadow:0 18px 52px rgba(0,0,0,.15)}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:15px}.card-title{display:flex;align-items:center;gap:11px}.ico{width:40px;height:40px;flex:0 0 auto;display:grid;place-items:center;border-radius:14px;background:linear-gradient(135deg,rgba(94,203,255,.16),rgba(85,228,184,.11));border:1px solid rgba(255,255,255,.08);font-size:20px}.alert-ico{color:#ffd5a6;font-weight:900;background:rgba(255,196,91,.10)}.card h2{margin:2px 0 0;font-size:19px;letter-spacing:-.01em}.subtle{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.4}.source-badge,.version{font-size:9px;letter-spacing:.09em;font-weight:900;border:1px solid rgba(85,228,184,.26);color:#a5f3dc;background:rgba(85,228,184,.08);padding:6px 8px;border-radius:999px}.source-badge.rfi{border-color:rgba(94,203,255,.28);color:#afe8ff;background:rgba(94,203,255,.08)}.ghost-link{font-size:11px;color:var(--muted);text-underline-offset:3px}.card-note{margin-top:13px;padding-top:12px;border-top:1px solid rgba(255,255,255,.09);color:var(--muted);font-size:10px;line-height:1.5}
.weather-card{background:linear-gradient(145deg,rgba(15,86,101,.55),rgba(255,255,255,.07))}.weather-current{display:flex;justify-content:space-between;align-items:center;gap:18px}.temp{font-size:66px;line-height:.9;font-weight:760;letter-spacing:-.065em}.temp sup{font-size:24px;color:#d8eef2;vertical-align:top;margin-left:3px}.weather-text{margin-top:9px;font-size:13px;color:var(--muted)}.weather-icon{font-size:58px;filter:drop-shadow(0 10px 26px rgba(0,0,0,.30))}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:18px}.metric{padding:11px;border-radius:15px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.07)}.metric small{display:block;color:var(--muted);font-size:10px}.metric b{display:block;margin-top:4px;font-size:14px}.forecast-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.forecast-day{padding:10px;border-radius:15px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.06)}.forecast-day>span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.forecast-day b{display:block;margin-top:5px;font-size:13px}.forecast-day small{display:block;margin-top:2px;color:var(--muted);font-size:10px}.source-line{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:13px;padding-top:12px;border-top:1px solid rgba(255,255,255,.09);font-size:10px;color:var(--muted)}.source-line a{text-underline-offset:3px}.valley-weather{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.weather-point{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;padding:11px 12px;border-radius:16px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.065)}.weather-point .wx{font-size:20px}.weather-point strong{font-size:12px}.weather-point small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.weather-point b{font-size:19px;letter-spacing:-.03em}.weather-point.station{border-color:rgba(85,228,184,.22);background:rgba(85,228,184,.065)}
.departures-card{background:linear-gradient(145deg,rgba(6,60,83,.55),rgba(255,255,255,.075))}.departures-head{align-items:flex-start}.compact-select{display:grid;gap:4px;min-width:164px}.compact-select label{font-size:9px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:900}.compact-select select{border:1px solid var(--line);background:#0c3a4c;color:#fff;border-radius:12px;padding:9px 30px 9px 10px;font:inherit;font-size:12px}.departure-summary{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 11px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.06);font-size:11px}.departure-summary span{display:flex;align-items:center;gap:8px}.departure-summary small{color:var(--muted)}.pulse-dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 5px rgba(85,228,184,.08)}.departures-list{display:grid;gap:8px;margin-top:9px}.departure-row{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:10px;padding:11px 12px;border-radius:16px;background:rgba(255,255,255,.065);border:1px solid rgba(255,255,255,.07);text-decoration:none;transition:.2s}.departure-row:hover{transform:translateY(-1px);background:rgba(255,255,255,.10)}.departure-line span{width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,#3da9ff,#49dec0);font-size:17px;font-weight:900}.departure-row.line-17 .departure-line span{background:linear-gradient(135deg,#55c9fa,#55e4a7)}.departure-route strong{display:block;font-size:13px}.departure-route small{display:block;margin-top:3px;font-size:9px;color:var(--muted)}.departure-time{text-align:right}.departure-time strong{display:block;font-size:19px}.departure-time span{display:block;margin-top:2px;color:var(--mint);font-size:9px;font-weight:900}.info-strip{margin-top:10px;padding:10px 11px;border-radius:13px;background:rgba(255,196,91,.07);border:1px solid rgba(255,196,91,.16);color:#ead7ae;font-size:10px;line-height:1.45}
.segmented{display:inline-flex;gap:4px;padding:4px;margin-bottom:10px;border-radius:13px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07)}.seg{border:0;border-radius:10px;padding:7px 10px;color:var(--muted);background:transparent;font:inherit;font-size:10px;font-weight:900;cursor:pointer}.seg.active{color:#fff;background:rgba(85,228,184,.13)}.alerts{display:grid;gap:8px}.alert{display:block;text-decoration:none;padding:11px 12px;border-radius:15px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.065);transition:.2s}.alert:hover{background:rgba(255,255,255,.095);transform:translateY(-1px)}.alert.relevant{border-color:rgba(85,228,184,.22);background:rgba(85,228,184,.055)}.alert-top{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:5px}.alert-badge{font-size:8px;text-transform:uppercase;letter-spacing:.08em;font-weight:900;padding:4px 6px;border-radius:999px}.alert-badge.critical{color:#ffc4c0;background:rgba(255,118,112,.12);border:1px solid rgba(255,118,112,.22)}.alert-badge.local{color:#aef4df;background:rgba(85,228,184,.10);border:1px solid rgba(85,228,184,.2)}.alert-badge.general{color:#b8e9ff;background:rgba(94,203,255,.09);border:1px solid rgba(94,203,255,.18)}.alert-date{color:var(--muted);font-size:9px}.alert strong{display:block;font-size:12px;line-height:1.35}.alert p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.4}
.network-card,.train-card,.control-card{margin-top:16px}.network-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:13px}.network-tools{display:flex;gap:8px;align-items:center}.network-tools input{width:min(38vw,280px);border:1px solid var(--line);background:rgba(3,29,42,.72);color:#fff;border-radius:13px;padding:10px 12px;font:inherit;font-size:12px;outline:none}.network-tools input::placeholder{color:#8ba8b0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);background:rgba(255,255,255,.07);color:#fff;border-radius:13px;padding:10px 12px;text-decoration:none;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.btn.secondary{white-space:nowrap}.season-banner{display:flex;align-items:center;gap:8px;padding:9px 11px;margin-bottom:10px;border-radius:13px;background:rgba(85,228,184,.055);border:1px solid rgba(85,228,184,.15);font-size:10px;color:#d0eee6}.season-banner span{color:var(--mint)}.line-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.line-item{position:relative;display:flex;flex-direction:column;gap:9px;min-height:132px;padding:13px;border-radius:17px;background:linear-gradient(145deg,rgba(255,255,255,.062),rgba(255,255,255,.035));border:1px solid rgba(255,255,255,.075)}.line-item.featured{border-color:rgba(85,228,184,.25);background:linear-gradient(145deg,rgba(85,228,184,.085),rgba(94,203,255,.04))}.line-item-top{display:flex;align-items:center;gap:10px}.line-num{width:39px;height:39px;flex:0 0 auto;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#45a9ff,#48d9ba);font-size:16px;font-weight:950}.line-item h3{margin:0;font-size:11px;line-height:1.35}.line-item .tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:auto}.tiny-tag{font-size:8px;color:var(--muted);padding:4px 6px;border-radius:999px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.06)}.line-link{display:flex;align-items:center;justify-content:space-between;gap:8px;text-decoration:none;font-size:10px;font-weight:850;color:#c9f3e7}.line-link.disabled{color:#8ba5ac;pointer-events:none}.line-item.offseason{opacity:.78}.network-footer{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.08)}.network-footer strong{font-size:11px}.mini-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.mini-chip{font-size:8px;color:#d8e7ea;padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.06)}
.station-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.station{display:flex;align-items:center;gap:10px;padding:12px;border-radius:16px;text-decoration:none;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.07);transition:.2s}.station:hover{transform:translateY(-1px);background:rgba(94,203,255,.09);border-color:rgba(94,203,255,.20)}.station-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:rgba(94,203,255,.09);font-size:18px}.station strong{display:block;font-size:11px}.station small{display:block;margin-top:2px;color:var(--muted);font-size:9px}.station i{margin-left:auto;font-style:normal;color:var(--cyan);font-size:17px}
.zone-list{display:grid;gap:8px;margin-bottom:10px}.zone{display:flex;align-items:center;gap:10px;padding:11px;border-radius:15px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.065)}.zone-code{width:40px;height:40px;display:grid;place-items:center;border-radius:12px;color:#062a34;background:linear-gradient(135deg,#91eacb,#65c9ff);font-weight:950}.zone strong{display:block;font-size:11px}.zone small{display:block;color:var(--muted);font-size:9px;margin-top:2px}.big-action{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px;border-radius:16px;text-decoration:none;background:linear-gradient(135deg,rgba(85,228,184,.10),rgba(94,203,255,.06));border:1px solid rgba(85,228,184,.18)}.big-action b{display:block;font-size:11px}.big-action small{display:block;margin-top:3px;color:var(--muted);font-size:9px;line-height:1.35}.big-action i{font-style:normal;font-size:20px;color:var(--mint)}.road-links{display:grid;grid-template-columns:1fr 1fr;gap:8px}.road-link{display:flex;gap:9px;align-items:center;padding:11px;border-radius:15px;text-decoration:none;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.065)}.road-link:hover{background:rgba(255,255,255,.09)}.road-link span:first-child{font-size:18px}.road-link strong{display:block;font-size:10px}.road-link small{display:block;margin-top:2px;color:var(--muted);font-size:8px}
.status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.status-item{padding:11px;border-radius:14px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.06)}.status-item b{display:block;font-size:10px}.status-item span{display:block;margin-top:3px;color:var(--muted);font-size:9px}.status-ok{color:var(--mint)!important}.status-bad{color:#ffaaa5!important}.control-actions{display:flex;gap:8px;margin-top:11px}.poster{display:none;margin-top:13px}.poster.open{display:block}.poster img{display:block;width:100%;max-width:680px;margin:0 auto;border-radius:22px;border:1px solid var(--line);box-shadow:var(--shadow)}
.skeleton{height:60px;border-radius:15px;background:linear-gradient(90deg,rgba(255,255,255,.04),rgba(255,255,255,.095),rgba(255,255,255,.04));background-size:230% 100%;animation:shimmer 1.25s linear infinite}.skeleton.tall{height:180px}.line-skeleton{height:132px}.station-skeleton{height:64px}.departure-skeleton{height:64px}@keyframes shimmer{to{background-position:-230% 0}}.empty-state{padding:16px;border-radius:15px;border:1px dashed rgba(255,255,255,.16);text-align:center;color:var(--muted);font-size:10px}.empty-state strong{display:block;color:#fff;margin-bottom:4px;font-size:11px}
.bottom-nav{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);z-index:50;width:min(92vw,660px);display:grid;grid-template-columns:repeat(5,1fr);gap:5px;padding:7px;border:1px solid rgba(255,255,255,.15);background:rgba(3,23,34,.82);backdrop-filter:blur(26px);border-radius:21px;box-shadow:0 18px 55px rgba(0,0,0,.38)}.bottom-nav a{display:grid;place-items:center;gap:2px;padding:7px 5px;border-radius:14px;text-decoration:none;color:#afc9d0}.bottom-nav a.active,.bottom-nav a:hover{background:rgba(94,203,255,.11);color:#fff}.bottom-nav span{font-size:18px}.bottom-nav small{font-size:8px}.toast{position:fixed;right:16px;bottom:96px;z-index:80;display:none;max-width:min(90vw,380px);padding:11px 13px;border:1px solid var(--line);border-radius:13px;background:#0a3444;box-shadow:var(--shadow);font-size:11px}.toast.show{display:block}
@media(max-width:980px){.pulse-grid{grid-template-columns:1fr 1fr}.line-grid{grid-template-columns:repeat(2,1fr)}.station-grid{grid-template-columns:repeat(2,1fr)}.hero-art{width:48%;opacity:.6}.status-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app{padding:10px 11px 104px}.brand small{display:none}.top-actions .install-btn{padding:8px 10px}.live-pill{font-size:10px}.hero{min-height:430px;padding:24px 20px;border-radius:29px}.hero h1{font-size:50px}.hero p{font-size:14px;max-width:94%}.hero-art{width:100%;height:55%;opacity:.55}.hero-orbit{right:12%;top:5%;width:88px;height:88px}.hero-orbit b{font-size:33px}.area-box{position:absolute;left:20px;right:20px;bottom:19px;width:auto;grid-template-columns:1fr}.area-box select{grid-row:auto;grid-column:auto}.area-box>span{white-space:normal}.pulse-grid{grid-template-columns:1fr 1fr}.layout-main,.territory-grid{grid-template-columns:1fr}.card{padding:16px;border-radius:22px}.network-head{align-items:flex-start;flex-direction:column}.network-tools{width:100%}.network-tools input{width:100%;min-width:0}.line-grid{grid-template-columns:1fr 1fr}.network-footer{grid-template-columns:1fr}.station-grid{grid-template-columns:1fr 1fr}.road-links{grid-template-columns:1fr 1fr}.metric-grid{grid-template-columns:repeat(2,1fr)}.valley-weather{grid-template-columns:1fr 1fr}.compact-select{min-width:145px}.status-grid{grid-template-columns:1fr 1fr}.bottom-nav{bottom:7px}}
@media(max-width:520px){.topbar{gap:8px}.brand strong{font-size:15px}.brand img{width:41px;height:41px}.live-pill{padding:8px 9px}.hero{min-height:445px}.hero h1{font-size:44px}.pulse-grid{grid-template-columns:1fr}.pulse-card{padding:11px 12px}.weather-current .temp{font-size:56px}.valley-weather{grid-template-columns:1fr}.departures-head{display:grid}.compact-select{width:100%;min-width:0}.line-grid{grid-template-columns:1fr}.station-grid{grid-template-columns:1fr}.road-links{grid-template-columns:1fr}.network-tools{display:grid;grid-template-columns:1fr}.btn.secondary{width:100%}.status-grid{grid-template-columns:1fr 1fr}.forecast-strip{grid-template-columns:repeat(3,1fr)}.forecast-day{padding:8px}.source-line{align-items:flex-start;flex-direction:column}.departure-row{grid-template-columns:43px 1fr auto;gap:8px;padding:10px}.departure-line span{width:37px;height:37px}.departure-route small{max-width:150px}.control-actions{display:grid;grid-template-columns:1fr 1fr}.bottom-nav small{font-size:7px}}

.network-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.network-actions .btn{font-size:9px;padding:8px 10px}

/* === Valbelluna Monitor 2.1 · dashboard trasporti integrata === */
.source-badge.bus{border-color:rgba(255,196,91,.28);color:#ffe0a3;background:rgba(255,196,91,.08)}
.source-badge.bus.ready{border-color:rgba(85,228,184,.30);color:#b5f7e3;background:rgba(85,228,184,.09)}
.bus-search-panel{margin:2px 0 12px;padding:12px;border:1px solid rgba(94,203,255,.15);border-radius:17px;background:rgba(3,29,42,.30)}
.bus-search-panel.waiting{border-style:dashed}
.bus-search-row{display:grid;grid-template-columns:1fr auto;gap:8px}
.bus-search-row input{min-width:0;border:1px solid var(--line);background:rgba(3,29,42,.78);color:#fff;border-radius:13px;padding:11px 12px;font:inherit;font-size:12px;outline:none}
.bus-search-row input::placeholder{color:#87a7af}
.bus-stop-results{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}
.stop-result{display:flex;align-items:center;gap:8px;max-width:100%;border:1px solid rgba(94,203,255,.16);background:rgba(94,203,255,.06);color:#fff;border-radius:13px;padding:8px 10px;text-align:left;cursor:pointer;font:inherit}
.stop-result:hover{background:rgba(94,203,255,.11);border-color:rgba(94,203,255,.28)}
.stop-result>span{font-size:17px}.stop-result strong{display:block;font-size:10px}.stop-result small{display:block;margin-top:2px;color:var(--muted);font-size:8px}
.gtfs-wait{display:flex;flex-direction:column;gap:3px;width:100%;padding:9px 10px;border-radius:12px;background:rgba(255,196,91,.055);color:#e8d9bb;font-size:10px;line-height:1.4}
.gtfs-wait span{color:var(--muted)}
.curated-fallback{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 10px;padding:10px 11px;border:1px solid rgba(255,255,255,.07);border-radius:15px;background:rgba(255,255,255,.035)}
.curated-fallback>div:first-child strong{display:block;font-size:10px}.curated-fallback>div:first-child small{display:block;margin-top:2px;color:var(--muted);font-size:9px;line-height:1.35}
.curated-fallback.compact-mode{opacity:.7}.curated-fallback.compact-mode>div:first-child small{display:none}
.bus-active-filters{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.active-filter{display:inline-flex;align-items:center;gap:6px;padding:5px 7px;border-radius:999px;border:1px solid rgba(85,228,184,.18);background:rgba(85,228,184,.07);color:#c8f5e8;font-size:9px;font-weight:800}
.active-filter button{display:grid;place-items:center;width:16px;height:16px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.10);color:#fff;cursor:pointer}
.line-link.line-monitor{width:100%;margin:0;padding:0;border:0;background:transparent;font:inherit;text-align:left;cursor:pointer}
.line-link.line-monitor:disabled{cursor:not-allowed;color:#77939a}
.line-item.selected{border-color:rgba(94,203,255,.42);box-shadow:inset 0 0 0 1px rgba(94,203,255,.12)}

.rail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:-4px 0 11px;color:var(--muted);font-size:10px}
.mini-refresh{border:1px solid rgba(94,203,255,.15);background:rgba(94,203,255,.055);color:#c9efff;border-radius:999px;padding:6px 9px;font:inherit;font-size:9px;font-weight:800;cursor:pointer}
.rail-boards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.rail-board{overflow:hidden;border:1px solid rgba(255,255,255,.075);border-radius:18px;background:rgba(3,26,37,.36)}
.rail-board-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border-bottom:1px solid rgba(255,255,255,.07);background:linear-gradient(90deg,rgba(94,203,255,.07),rgba(85,228,184,.035))}
.rail-board-head>div{display:flex;align-items:center;gap:9px;min-width:0}.rail-board-head strong{display:block;font-size:12px}.rail-board-head small{display:block;margin-top:2px;color:var(--muted);font-size:8px}.rail-board-head a{flex:0 0 auto;color:#a9ddf1;font-size:8px;text-underline-offset:3px}
.rail-row{display:grid;grid-template-columns:58px minmax(0,1fr) 72px 44px;gap:8px;align-items:center;padding:9px 11px;border-bottom:1px solid rgba(255,255,255,.055)}
.rail-row:last-child{border-bottom:0}.rail-train small,.rail-platform small{display:block;color:var(--muted);font-size:7px;text-transform:uppercase;letter-spacing:.08em}.rail-train b{display:block;margin-top:2px;font-size:11px}.rail-destination{min-width:0}.rail-destination strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px}.rail-destination small{display:block;margin-top:2px;color:var(--muted);font-size:7.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rail-time{text-align:right}.rail-time>strong{display:block;font-size:16px}.rail-delay{display:inline-block;margin-top:2px;border-radius:999px;padding:2px 5px;font-size:7px;font-weight:900}.rail-delay.ontime{color:#aef1dd;background:rgba(85,228,184,.08)}.rail-delay.late{color:#ffd0cc;background:rgba(255,118,112,.11)}.rail-delay.early{color:#bde8ff;background:rgba(94,203,255,.09)}.rail-platform{text-align:center}.rail-platform b{display:block;margin-top:2px;font-size:13px;color:#dff5ff}
.rail-empty{padding:19px 12px;color:var(--muted);font-size:10px;text-align:center}.rail-empty.error{color:#f1b9b5}.rail-notice{margin:8px 10px 10px;padding:8px 9px;border-radius:11px;border:1px solid rgba(255,196,91,.13);background:rgba(255,196,91,.055);color:#e7d4ae;font-size:8px;line-height:1.4}

@media(max-width:980px){.rail-boards{grid-template-columns:1fr}}
@media(max-width:620px){.bus-search-row{grid-template-columns:1fr}.curated-fallback{align-items:stretch;flex-direction:column}.curated-fallback .compact-select{width:100%}.rail-row{grid-template-columns:50px minmax(0,1fr) 60px 37px;gap:6px;padding:8px}.rail-destination small{display:none}.rail-board-head a{display:none}}
.bus-choose-stop{display:flex;align-items:flex-start;gap:11px;padding:17px;border:1px dashed rgba(94,203,255,.28);border-radius:16px;background:linear-gradient(135deg,rgba(94,203,255,.065),rgba(85,228,184,.035));color:#dff6ff}
.bus-choose-stop>span{font-size:24px}.bus-choose-stop strong{display:block;font-size:12px}.bus-choose-stop small{display:block;margin-top:4px;color:var(--muted);font-size:9px;line-height:1.45}
.rail-leaving{display:inline-block;margin-top:2px;border-radius:999px;padding:2px 5px;font-size:7px;font-weight:900;color:#fff1bd;background:rgba(255,196,91,.13)}
.rail-board.stale{border-color:rgba(255,196,91,.20)}.rail-board.stale .rail-board-head{background:linear-gradient(90deg,rgba(255,196,91,.075),rgba(255,255,255,.025))}

/* v2.8 · TPLWEB route finder */
.tpl-route-panel{margin:0 0 18px;padding:16px;border:1px solid rgba(255,255,255,.09);border-radius:18px;background:linear-gradient(180deg,rgba(21,41,55,.78),rgba(10,25,36,.54));box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.tpl-route-intro{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:13px}.tpl-route-intro>div{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:center}.tpl-route-intro strong{font-size:.98rem}.tpl-route-intro small{grid-column:1/-1;color:var(--muted);line-height:1.4}.source-badge.tpl{background:rgba(52,211,153,.13);border-color:rgba(52,211,153,.28);color:#9bf3cc}.tpl-route-status{font-size:.76rem;color:var(--muted);white-space:nowrap;padding-top:3px}.tpl-route-status.ok{color:#8ee6bd}.tpl-route-status.bad{color:#ffb0aa}
.tpl-route-search{display:grid;grid-template-columns:minmax(0,1fr) 38px minmax(0,1fr) auto;gap:10px;align-items:end}.tpl-route-search label{display:flex;flex-direction:column;gap:5px}.tpl-route-search label span{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.tpl-route-search input{width:100%;min-width:0;border:1px solid rgba(255,255,255,.11);background:rgba(4,14,22,.68);color:var(--text);border-radius:12px;padding:11px 12px;outline:none}.tpl-route-search input:focus{border-color:rgba(93,202,255,.55);box-shadow:0 0 0 3px rgba(93,202,255,.08)}.swap-route{height:42px;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.045);color:var(--text);font-size:1.1rem;cursor:pointer}.swap-route:hover{background:rgba(255,255,255,.08)}
.tpl-presets{display:flex;flex-wrap:wrap;gap:7px;margin:11px 0 0}.tpl-presets button{border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.035);color:var(--muted);font-size:.73rem;border-radius:999px;padding:6px 9px;cursor:pointer}.tpl-presets button:hover{color:var(--text);border-color:rgba(93,202,255,.32)}
.tpl-route-results{margin-top:13px}.tpl-route-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border-radius:13px;background:rgba(2,10,16,.42);margin-bottom:9px}.tpl-route-head strong{display:block}.tpl-route-head small{display:block;color:var(--muted);margin-top:2px}.tpl-route-count{font-size:.72rem;padding:5px 8px;border-radius:999px;background:rgba(93,202,255,.11);color:#9edfff;white-space:nowrap}.tpl-line-list{display:grid;gap:8px}.tpl-line-result{display:grid;grid-template-columns:74px minmax(0,1fr) auto;gap:11px;align-items:center;padding:11px 12px;border:1px solid rgba(255,255,255,.075);border-radius:13px;background:rgba(255,255,255,.025)}.tpl-line-result.direct{border-color:rgba(52,211,153,.16)}.tpl-line-number{display:flex;align-items:center;justify-content:center;min-height:38px;border-radius:11px;background:rgba(52,211,153,.12);color:#a7f3d0;font-weight:800;letter-spacing:.02em}.tpl-line-result.connection .tpl-line-number{background:rgba(251,191,36,.11);color:#fde68a;font-size:.83rem}.tpl-line-result strong{font-size:.86rem}.tpl-line-result small{display:block;color:var(--muted);line-height:1.35;margin-top:2px}.tpl-line-kind{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);white-space:nowrap}.tpl-route-note{margin-top:9px;color:var(--muted);font-size:.72rem;line-height:1.45}.tpl-route-empty{padding:12px;border:1px dashed rgba(255,255,255,.09);border-radius:13px;color:var(--muted);font-size:.82rem}
@media(max-width:760px){.tpl-route-intro{display:block}.tpl-route-status{display:block;margin-top:7px}.tpl-route-search{grid-template-columns:1fr 38px 1fr}.tpl-route-search .btn{grid-column:1/-1}.tpl-line-result{grid-template-columns:62px minmax(0,1fr)}.tpl-line-kind{grid-column:2}.tpl-presets{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.tpl-presets button{white-space:nowrap}}
@media(max-width:520px){.tpl-route-search{grid-template-columns:1fr 36px}.tpl-route-search label:first-child{grid-column:1}.tpl-route-search .swap-route{grid-column:2;grid-row:1;align-self:end}.tpl-route-search label:nth-of-type(2){grid-column:1/-1}.tpl-route-search .btn{grid-column:1/-1}.tpl-line-result{grid-template-columns:54px minmax(0,1fr);padding:10px}.tpl-line-number{font-size:.9rem}}

/* v3.0 · copertura territoriale continua */
.coverage-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.coverage-row span{display:inline-flex;align-items:baseline;gap:5px;padding:7px 9px;border:1px solid rgba(255,255,255,.10);border-radius:999px;background:rgba(255,255,255,.045);color:#c5dce1;font-size:9px;text-transform:uppercase;letter-spacing:.06em}.coverage-row b{font-size:13px;color:#b8f2df}
.valley-navigator{margin-top:16px;overflow:hidden}.valley-nav-head{align-items:flex-start}.valley-axis-wrap{padding:14px;border:1px solid rgba(255,255,255,.07);border-radius:18px;background:linear-gradient(180deg,rgba(6,37,49,.54),rgba(3,24,34,.34));overflow:hidden}.valley-axis-label{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-bottom:12px;color:var(--muted);font-size:8px;text-transform:uppercase;letter-spacing:.12em}.valley-axis-label b{text-align:center;color:#d9eff4;font-size:10px;letter-spacing:.05em}.valley-hubs{position:relative;display:flex;gap:8px;align-items:stretch;overflow-x:auto;padding:9px 4px 13px;scrollbar-width:thin}.valley-hubs:before{content:"";position:absolute;left:24px;right:24px;top:35px;height:2px;background:linear-gradient(90deg,rgba(94,203,255,.16),rgba(85,228,184,.65),rgba(94,203,255,.16));z-index:0}.valley-hub{position:relative;z-index:1;flex:0 0 128px;display:flex;flex-direction:column;gap:5px;align-items:flex-start;text-align:left;padding:11px;border:1px solid rgba(255,255,255,.08);border-radius:15px;background:rgba(5,30,41,.92);color:#fff;cursor:pointer;font:inherit;transition:.18s}.valley-hub:hover{transform:translateY(-2px);border-color:rgba(85,228,184,.28);background:#0a3b4d}.valley-hub.active{border-color:rgba(85,228,184,.48);box-shadow:0 0 0 2px rgba(85,228,184,.07)}.valley-hub .hub-dot{width:13px;height:13px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 5px rgba(85,228,184,.10);margin-bottom:3px}.valley-hub[data-rail="1"] .hub-dot{background:#78c9ff;box-shadow:0 0 0 5px rgba(94,203,255,.11)}.valley-hub strong{font-size:10px;line-height:1.25}.valley-hub small{font-size:8px;color:var(--muted);line-height:1.25}.valley-hub .hub-temp{margin-top:auto;font-size:12px;font-weight:900;color:#d8f7ee}.corridor-strip{display:flex;align-items:flex-start;gap:12px;margin-top:11px}.corridor-strip>strong{flex:0 0 auto;font-size:10px;padding-top:6px}.corridor-strip>div{display:flex;flex-wrap:wrap;gap:6px}.corridor-btn{border:1px solid rgba(94,203,255,.12);background:rgba(94,203,255,.045);color:#cfeaf3;border-radius:999px;padding:6px 9px;font:inherit;font-size:8px;font-weight:800;cursor:pointer}.corridor-btn:hover{border-color:rgba(94,203,255,.3);background:rgba(94,203,255,.09)}
.network-tools select{border:1px solid var(--line);background:#082f40;color:#fff;border-radius:13px;padding:10px 30px 10px 10px;font:inherit;font-size:11px;outline:none}.line-group{position:absolute;right:10px;top:9px;font-size:7px;text-transform:uppercase;letter-spacing:.08em;color:#99b8c0;padding:3px 5px;border-radius:999px;background:rgba(255,255,255,.05)}.line-item[data-group="backbone"] .line-group{color:#9ff0d2;background:rgba(85,228,184,.08)}.line-item[data-group="work"] .line-group{color:#ffe1a7;background:rgba(255,196,91,.08)}
.route-field{position:relative}.route-suggestions{position:absolute;left:0;right:0;top:100%;z-index:35;margin-top:5px;display:none;max-height:260px;overflow:auto;border:1px solid rgba(255,255,255,.12);border-radius:13px;background:#082b3a;box-shadow:0 18px 45px rgba(0,0,0,.38)}.route-suggestions.open{display:block}.route-suggestion{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:9px 10px;border:0;border-bottom:1px solid rgba(255,255,255,.06);background:transparent;color:#fff;text-align:left;font:inherit;cursor:pointer}.route-suggestion:last-child{border-bottom:0}.route-suggestion:hover{background:rgba(94,203,255,.08)}.route-suggestion strong{font-size:10px}.route-suggestion small{font-size:8px;color:var(--muted)}.route-suggestion .code{font-size:7px;color:#8fb0b9}
.coverage-summary{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}.coverage-summary span{padding:5px 7px;border-radius:999px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.06);font-size:8px;color:var(--muted)}
@media(max-width:900px){.network-tools{flex-wrap:wrap}.network-tools select{flex:1 1 180px}.valley-hub{flex-basis:118px}}
@media(max-width:760px){.coverage-row{margin-bottom:92px}.valley-axis-wrap{padding:11px}.valley-axis-label{grid-template-columns:1fr}.valley-axis-label span{display:none}.valley-hub{flex-basis:108px}.corridor-strip{display:block}.corridor-strip>div{margin-top:7px}.network-tools select{width:100%}.route-suggestions{position:fixed;left:12px;right:12px;top:auto;bottom:92px;max-height:42vh}}
@media(max-width:520px){.coverage-row span{font-size:8px}.coverage-row b{font-size:11px}.valley-hub{flex-basis:102px}.valley-hub strong{font-size:9px}.corridor-btn{white-space:nowrap}}

/* v4.0 · partenze programmate sui 16 nodi */
.hub-next-bus{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;padding:4px 6px;border-radius:8px;background:rgba(85,228,184,.075);border:1px solid rgba(85,228,184,.11);color:#b8f2df;font-size:7px;font-weight:900;letter-spacing:.01em}
.hub-next-bus.hub-bus-empty{color:#809ba3;background:rgba(255,255,255,.025);border-color:rgba(255,255,255,.05)}
.hub-schedule-control{border-color:rgba(85,228,184,.14);background:linear-gradient(135deg,rgba(85,228,184,.055),rgba(94,203,255,.035))}
.hub-schedule-control .compact-select{min-width:210px}.hub-schedule-control select{max-width:250px}
.source-badge.bus:not(.ready){border-color:rgba(255,196,91,.28);color:#ffe0a2;background:rgba(255,196,91,.08)}
.departure-row .departure-route small{line-height:1.35}
@media(max-width:620px){.hub-schedule-control .compact-select,.hub-schedule-control select{width:100%;max-width:none}.hub-next-bus{font-size:6.8px}}

/* === v4.4.1 · Mobile UX refinement === */
@media (max-width:760px){
  html{-webkit-text-size-adjust:100%}
  body{overflow-x:hidden}
  .app{padding:8px 10px calc(96px + env(safe-area-inset-bottom))}
  .topbar{padding:3px 2px 12px;min-width:0}
  .brand{min-width:0;gap:9px}
  .brand>span{min-width:0}
  .brand strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .top-actions{min-width:0;flex:0 1 auto}
  .live-pill{max-width:122px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:8px 9px}
  .install-btn{min-height:40px}

  .hero{min-height:0;padding:22px 18px 18px;border-radius:26px}
  .hero-copy{max-width:none}
  .hero h1{font-size:clamp(38px,11.2vw,46px);line-height:.94;margin:10px 0 13px}
  .hero p{font-size:14px;line-height:1.5;max-width:100%;padding-right:0}
  .hero-art{width:100%;height:45%;opacity:.34;pointer-events:none}
  .hero-orbit{width:74px;height:74px;right:8%;top:8%;opacity:.6}
  .hero-orbit b{font-size:28px}.hero-orbit span{bottom:10px;font-size:7px}
  .coverage-row{margin:14px 0 0;gap:6px}
  .coverage-row span{padding:6px 8px;font-size:8px;background:rgba(3,29,42,.58);backdrop-filter:blur(10px)}
  .coverage-row b{font-size:11px}
  .area-box{position:relative;left:auto;right:auto;bottom:auto;width:100%;margin-top:15px;padding:11px 12px;grid-template-columns:1fr;gap:6px;border-radius:16px;background:rgba(1,19,28,.56)}
  .area-box select{grid-row:auto;grid-column:auto;width:100%;min-height:46px;padding:11px 38px 11px 12px;font-size:16px}
  .area-box>span{font-size:10px;line-height:1.35;white-space:normal}

  .pulse-grid{gap:10px;margin-top:11px}
  .pulse-card{min-height:64px;padding:11px 12px;border-radius:18px}
  .pulse-icon{width:38px;height:38px}.pulse-card i{font-size:20px}

  .card{padding:15px;border-radius:20px;overflow:hidden}
  .card-head{gap:9px;min-width:0}
  .card-title{min-width:0;align-items:flex-start}
  .card-title>div{min-width:0}
  .card h2{font-size:18px;line-height:1.18}
  .subtle{font-size:11px;line-height:1.45}
  .source-badge,.version{flex:0 0 auto;max-width:44%;white-space:normal;text-align:center;line-height:1.2}
  .ghost-link{flex:0 0 auto}

  .weather-current{gap:12px}.weather-icon{font-size:48px}.temp{font-size:56px}
  .metric-grid{gap:7px}.metric{padding:10px}.forecast-strip{gap:6px}
  .valley-axis-wrap{padding:10px;margin-inline:-2px}
  .valley-hubs{margin-inline:-4px;padding-inline:4px;scroll-snap-type:x proximity}
  .valley-hub{scroll-snap-align:start;flex-basis:112px;min-height:112px}
  .corridor-strip>div{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px;scrollbar-width:none}
  .corridor-strip>div::-webkit-scrollbar,.tpl-presets::-webkit-scrollbar{display:none}
  .corridor-btn{min-height:36px;padding:7px 10px}

  input,select,textarea{font-size:16px!important}
  button,.btn,a.stop-result{touch-action:manipulation}
  .btn,.mini-refresh,.seg,.swap-route{min-height:44px}
  .seg{padding:9px 13px;font-size:12px}

  .tpl-route-panel,.bus-search-panel{padding:11px;margin-inline:-1px}
  .tpl-route-intro{gap:8px}.tpl-route-intro strong{font-size:14px}
  .tpl-route-search{grid-template-columns:1fr 44px 1fr;gap:8px}
  .tpl-route-search input{min-height:46px;padding:11px 12px}
  .swap-route{height:46px}
  .tpl-route-search .btn{min-height:46px;font-size:13px}
  .route-suggestions{left:10px;right:10px;bottom:calc(82px + env(safe-area-inset-bottom));max-height:45vh}
  .route-suggestion{min-height:44px;padding:10px 11px}
  .route-suggestion strong{font-size:12px}.route-suggestion small{font-size:10px}
  .bus-search-row input{min-height:46px}.bus-search-row .btn{min-height:46px;font-size:13px}
  .curated-fallback{align-items:stretch;flex-direction:column;gap:9px;padding:11px}
  .curated-fallback .compact-select,.curated-fallback select{width:100%;max-width:none}
  .compact-select select{min-height:46px}

  .departure-summary{gap:8px;flex-wrap:wrap}
  .departure-row{grid-template-columns:44px minmax(0,1fr) auto;gap:8px;padding:10px}
  .departure-route{min-width:0}
  .departure-route strong{font-size:12px;line-height:1.25}
  .departure-route small{max-width:none!important;font-size:9px;line-height:1.35;overflow-wrap:anywhere}
  .departure-time strong{font-size:18px}.departure-time span{font-size:8px}

  .network-head{gap:11px}.network-tools{gap:7px}
  .network-tools input,.network-tools select{width:100%;min-height:46px}
  .network-tools .btn{width:100%;min-height:44px;font-size:12px}
  .line-grid{gap:8px}.line-item{min-height:122px;padding:12px}

  .rail-toolbar{align-items:stretch;flex-direction:column;gap:7px}
  .mini-refresh{align-self:flex-start;padding:8px 12px;font-size:11px}
  .rail-board-head{padding:10px}.rail-board-head strong{font-size:11px}

  .status-grid{gap:7px}.status-item{padding:10px;min-width:0}.status-item b{font-size:10px;overflow-wrap:anywhere}.status-item span{font-size:9px;overflow-wrap:anywhere}
  .control-actions .btn{min-height:46px;font-size:12px}

  .bottom-nav{width:calc(100vw - 16px);bottom:max(6px,env(safe-area-inset-bottom));padding:6px;border-radius:18px;gap:3px}
  .bottom-nav a{min-height:48px;padding:5px 3px;border-radius:12px}
  .bottom-nav span{font-size:17px}.bottom-nav small{font-size:8px}
  .toast{left:10px;right:10px;bottom:calc(84px + env(safe-area-inset-bottom));max-width:none}
}

@media (max-width:520px){
  .topbar{align-items:center}.brand img{width:40px;height:40px;border-radius:13px}.brand strong{font-size:14px}
  .live-pill{max-width:108px;font-size:9px}
  .hero{padding:20px 16px 16px;border-radius:24px}
  .hero h1{font-size:clamp(36px,11vw,42px)}
  .hero p{font-size:13px}
  .hero-orbit{display:none}
  .coverage-row{display:grid;grid-template-columns:1fr 1fr}
  .coverage-row span:last-child{grid-column:1/-1}
  .pulse-grid{grid-template-columns:1fr}
  .card{padding:14px}
  .card-head{flex-wrap:wrap}
  .source-badge,.version{max-width:100%}
  .valley-weather{grid-template-columns:1fr}
  .metric-grid{grid-template-columns:1fr 1fr}
  .forecast-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.forecast-day{min-width:0;padding:8px 6px}

  .tpl-route-search{display:grid;grid-template-columns:1fr;gap:8px}
  .tpl-route-search label:first-child,.tpl-route-search label:nth-of-type(2),.tpl-route-search .btn{grid-column:1}
  .tpl-route-search .swap-route{grid-column:1;grid-row:auto;justify-self:center;width:46px;transform:rotate(90deg)}
  .tpl-line-result{grid-template-columns:50px minmax(0,1fr);gap:8px}
  .tpl-line-kind{grid-column:2}
  .tpl-route-head{align-items:flex-start;flex-direction:column}
  .bus-search-row{grid-template-columns:1fr}

  .departure-row{grid-template-columns:40px minmax(0,1fr) 62px}
  .departure-line span{width:36px;height:36px;font-size:15px}
  .departure-time strong{font-size:17px}

  .line-grid,.station-grid,.road-links{grid-template-columns:1fr}
  .status-grid{grid-template-columns:1fr}
  .control-actions{grid-template-columns:1fr}
  .segmented{display:grid;grid-template-columns:1fr 1fr;width:100%}.seg{width:100%}
}

@media (max-width:380px){
  .app{padding-left:8px;padding-right:8px}
  .hero{padding-left:14px;padding-right:14px}
  .hero h1{font-size:35px}
  .live-pill{max-width:92px}
  .coverage-row{grid-template-columns:1fr}
  .coverage-row span:last-child{grid-column:auto}
  .bottom-nav{width:calc(100vw - 10px)}
  .bottom-nav small{font-size:7px}
}


/* v4.4.2 · MeteoMeano LIVE: estensione discreta della card esistente */
.station-live-details{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:9px}
.station-live-details[hidden],.station-update[hidden]{display:none!important}
.station-live-details>div{min-width:0;padding:9px 10px;border-radius:13px;background:rgba(85,228,184,.055);border:1px solid rgba(85,228,184,.13)}
.station-live-details small{display:block;color:var(--muted);font-size:9px;line-height:1.2}
.station-live-details b{display:block;margin-top:4px;font-size:12px;line-height:1.25;overflow-wrap:anywhere}
.station-update{display:flex;align-items:center;gap:7px;margin-top:9px;padding:8px 10px;border-radius:12px;background:rgba(85,228,184,.055);color:#cfeee7;font-size:9px;line-height:1.35}
.station-live-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#55e4b8;box-shadow:0 0 0 4px rgba(85,228,184,.09)}
@media(max-width:760px){.station-live-details{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:380px){.station-live-details{grid-template-columns:1fr 1fr}.station-live-details>div{padding:8px}.station-update{align-items:flex-start}}


/* === v4.4.5 · PWA/mobile hardening === */
@media (max-width:760px){
  .app{
    padding-top:calc(8px + env(safe-area-inset-top));
    padding-left:max(10px,env(safe-area-inset-left));
    padding-right:max(10px,env(safe-area-inset-right));
  }
  .bottom-nav{
    width:auto;
    left:max(8px,env(safe-area-inset-left));
    right:max(8px,env(safe-area-inset-right));
    transform:none;
  }
  .source-line a,.ghost-link{
    display:inline-flex;
    align-items:center;
    min-height:40px;
    padding:8px 4px;
  }
}
@media (max-width:380px){
  .app{
    padding-left:max(8px,env(safe-area-inset-left));
    padding-right:max(8px,env(safe-area-inset-right));
  }
  .bottom-nav{
    left:max(5px,env(safe-area-inset-left));
    right:max(5px,env(safe-area-inset-right));
  }
}

/* v4.4.7 — topologia linee: estensione conservativa della 4.4.5 */
.line-path{display:flex;align-items:center;gap:5px;min-width:0;overflow-x:auto;padding:2px 1px 7px;scrollbar-width:thin;scrollbar-color:rgba(85,228,184,.24) transparent}
.line-path::-webkit-scrollbar{height:3px}.line-path::-webkit-scrollbar-thumb{background:rgba(85,228,184,.24);border-radius:99px}
.path-node{flex:0 0 auto;max-width:180px;padding:5px 7px;border-radius:10px;border:1px solid rgba(94,203,255,.16);background:rgba(94,203,255,.055);color:#dcecef;font-size:8px;font-weight:780;line-height:1.15;white-space:nowrap}
.path-link{flex:0 0 auto;color:var(--mint);font-size:11px;font-weight:900;opacity:.78}
.line-actions{display:grid;gap:7px;margin-top:1px;padding-top:8px;border-top:1px solid rgba(255,255,255,.065)}
.line-source-note{font-size:9px;line-height:1.35;color:#91aeb5}
.line-route-check{width:100%;display:flex;align-items:center;justify-content:space-between;gap:9px;padding:7px 8px;border-radius:10px;border:1px solid rgba(85,228,184,.13);background:rgba(85,228,184,.045);color:#c9f3e7;font:inherit;text-align:left;cursor:pointer}
.line-route-check:hover{border-color:rgba(85,228,184,.32);background:rgba(85,228,184,.075)}
.line-route-check span{font-size:8px;color:#8fb3b8;white-space:nowrap}.line-route-check b{font-size:9px;line-height:1.2;text-align:right}
.line-item.offseason{opacity:1}
@media(max-width:520px){.path-node{max-width:160px;font-size:8px}.line-route-check{align-items:flex-start}.line-route-check b{max-width:68%;}}


/* === v4.4.7 · tutte le linee realmente azionabili/collegate === */
.line-clickable{cursor:pointer}
.line-title-route{min-width:0;flex:1;padding:4px 5px;margin:-4px -5px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:9px}
.line-title-route:hover,.line-title-route:focus-visible{background:rgba(94,203,255,.075);outline:1px solid rgba(94,203,255,.18)}
.line-title-route h3{margin:0}.line-title-route small{display:block;margin-top:3px;color:#8fb3b8;font-size:7px;font-weight:750;letter-spacing:.02em}
.path-node{font:inherit;cursor:pointer;text-align:center}
.path-node:hover,.path-node:focus-visible{border-color:rgba(94,203,255,.4);background:rgba(94,203,255,.11);outline:none}
.path-link.path-segment{flex:0 0 auto;width:24px;height:24px;padding:0;border:1px solid rgba(85,228,184,.14);border-radius:999px;background:rgba(85,228,184,.045);color:#72e5c6;font:900 11px/1 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;cursor:pointer}
.path-link.path-segment:hover,.path-link.path-segment:focus-visible{border-color:rgba(85,228,184,.42);background:rgba(85,228,184,.12);outline:none}
.catalog-route-context{margin-bottom:10px;padding:11px;border:1px solid rgba(85,228,184,.24);border-radius:14px;background:linear-gradient(145deg,rgba(85,228,184,.09),rgba(94,203,255,.045))}
.catalog-route-head{display:flex;align-items:center;gap:10px}.line-num.mini{width:34px;height:34px;border-radius:10px;font-size:13px}.catalog-route-head>div{min-width:0;flex:1}.catalog-route-head strong{display:block;font-size:11px;color:#d8fff3}.catalog-route-head small{display:block;margin-top:2px;color:#9ebbc1;font-size:9px;line-height:1.35}.catalog-connected{flex:0 0 auto;padding:4px 6px;border-radius:999px;background:rgba(85,228,184,.12);border:1px solid rgba(85,228,184,.22);color:#9ff0d2;font-size:7px;font-weight:900;letter-spacing:.08em}
.catalog-route-path{display:flex;align-items:center;gap:5px;overflow-x:auto;margin-top:9px;padding-bottom:3px;scrollbar-width:thin;scrollbar-color:rgba(85,228,184,.24) transparent}.catalog-route-path b{flex:0 0 auto;padding:4px 6px;border-radius:8px;background:rgba(255,255,255,.045);font-size:8px;color:#e2f0f2}.catalog-route-path span{flex:0 0 auto;color:#65dcbf;font-size:9px}.tpl-line-result.expected-line{border-color:rgba(85,228,184,.34);background:rgba(85,228,184,.075)}.tpl-route-empty.catalog-kept{border-color:rgba(85,228,184,.16);background:rgba(85,228,184,.035)}
@media(max-width:520px){.line-title-route small{font-size:7px}.path-link.path-segment{width:26px;height:26px}.catalog-route-head{align-items:flex-start}.catalog-connected{margin-top:2px}}
