:root{--brand:#5b2a86;--ink:#26243f;--heading:#2c2956;--muted:#7b7b92;--ok:#2e9e6b;--line:#ededf4;--card:#ffffff;--ping:#5b8def}*{box-sizing:border-box}body,html{margin:0;padding:0;color:var(--ink);background:linear-gradient(180deg,#e9e3fb,#f1eefb 28%,#f6f4fc) no-repeat fixed;min-height:100vh;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.screen{max-width:30rem;margin:0 auto;padding:.75rem 1.1rem 3rem}.topbar{display:flex;align-items:center;justify-content:space-between;padding:.4rem 0 .5rem}.logo{display:inline-grid;place-items:center;width:2rem;height:2rem;border-radius:.55rem;background:var(--brand);color:#fff;font-weight:700}.logo-img{height:2rem;width:auto;max-width:60vw;object-fit:contain}.hero{text-align:center;margin:.25rem 0 1.25rem}.hero-art{width:8.5rem;height:8.5rem;margin:0 auto;border-radius:1.75rem;display:grid;place-items:center;font-size:3.75rem;background:linear-gradient(150deg,#d9ccff,#c7e0ff);box-shadow:0 10px 30px rgba(80,60,160,.18)}.hero h1{margin:1rem 0 0;font-size:1.5rem;font-weight:800;line-height:1.2;color:var(--heading)}.hero-loc{margin:.35rem 0 0;color:var(--muted);font-weight:600}.hero-photo{position:relative;aspect-ratio:955/700;border-radius:1.5rem;overflow:hidden;box-shadow:0 14px 36px rgba(80,60,160,.22)}.hero-photo-img{object-fit:cover}.hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(38,36,63,0) 40%,rgba(38,36,63,.82))}.hero-photo-cap{position:absolute;left:1.15rem;right:1.15rem;bottom:1rem;z-index:1;text-align:left}.hero-photo-cap h1{margin:0;font-size:1.6rem;font-weight:800;line-height:1.2;color:#fff;text-shadow:0 2px 14px rgba(0,0,0,.45)}.hero-photo-loc{margin:0 0 .2rem;color:rgba(255,255,255,.9);font-weight:600;font-size:.95rem;text-shadow:0 1px 10px rgba(0,0,0,.45)}.card{background:var(--card);border-radius:1.25rem;padding:1.1rem 1.15rem;margin-bottom:.9rem;box-shadow:0 6px 24px rgba(60,40,120,.07)}.card h2{margin:0 0 .25rem;font-size:1.1rem;font-weight:700;color:var(--heading)}.card-sub{margin:0 0 .6rem;font-size:.92rem}.card-sub,.cta{color:var(--muted)}.cta{margin:0}.arrival{display:flex;gap:1rem}.arrival-col{flex:1 1}.arrival-label{display:block;color:var(--muted);font-size:.85rem;margin-bottom:.15rem}.arrival-value{display:block;font-size:1.5rem;font-weight:800;line-height:1.1;color:var(--heading)}.updated{display:flex;align-items:center;gap:.4rem;margin:0 0 .3rem;color:var(--muted);font-size:.85rem}.ping{width:.6rem;height:.6rem;border-radius:50%;background:var(--ping);box-shadow:0 0 0 0 rgba(91,141,239,.5);animation:ping 2s ease-out infinite}@keyframes ping{70%,to{box-shadow:0 0 0 .5rem rgba(91,141,239,0)}}.rows{display:flex;flex-direction:column}.row{border-top:1px solid var(--line)}.row:first-child{border-top:0}.row-head{width:100%;display:flex;align-items:center;gap:.6rem;padding:.85rem 0;background:none;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.row-head:disabled{cursor:default}.row-title{flex:1 1;font-weight:600;color:var(--ink)}.row-meta{color:var(--muted);font-size:.82rem;white-space:nowrap}.row-meta .eta{color:var(--brand)}.row-chev{color:var(--muted);font-size:1.4rem;line-height:1;transition:transform .15s ease}.row-open .row-chev{transform:rotate(90deg)}.row-body{padding:0 0 .85rem;color:var(--muted);font-size:.92rem}.row-body p{margin:0}.dot{width:.7rem;height:.7rem;border-radius:50%;flex-shrink:0;border:2px solid var(--line);background:transparent}.dot-done{background:var(--ok);border-color:var(--ok)}.dot-current{background:var(--brand);border-color:var(--brand)}.reconnecting{background:#fff7e6;color:#8a6d00;border-radius:.6rem;padding:.5rem .8rem;font-size:.9rem;margin-bottom:.8rem;text-align:center}.hero-done{background:linear-gradient(150deg,#c9f5dd,#bfe9ff)}.feedback h2{text-align:center}.fb-q{border:0;padding:0;margin:0 0 .85rem}.fb-q legend{padding:0;font-weight:600;color:var(--ink);margin-bottom:.4rem}.fb-send{width:100%;margin-top:.6rem;padding:.75rem 1.2rem;border:0;border-radius:.6rem;background:var(--brand);color:#fff;font:inherit;font-weight:700;cursor:pointer}.fb-send:disabled{opacity:.5;cursor:default}.fb-error{color:#c62828;font-size:.9rem;margin:.5rem 0 0;text-align:center}.moods{display:flex;justify-content:center;gap:1rem;margin:.25rem 0 .5rem}.mood{width:4.5rem;height:4.5rem;font-size:2.5rem;line-height:1;background:#f4f2fa;border:2px solid transparent;border-radius:1rem;cursor:pointer;transition:transform .1s ease}.mood:hover{transform:scale(1.05)}.mood-on{border-color:var(--brand);background:#fff}.mood:disabled{opacity:.6;cursor:default}.feedback-comment{width:100%;border:1px solid var(--line);border-radius:.6rem;padding:.6rem;font:inherit;resize:vertical}.feedback-thanks{text-align:center;font-weight:700;color:var(--brand);margin:.25rem 0}.mood:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.lang{display:flex;gap:.25rem}.lang button{min-width:2.75rem;min-height:2.75rem;border:1px solid var(--line);background:#fff;border-radius:.5rem;font-weight:600;cursor:pointer}.lang button.active{background:var(--brand);color:#fff;border-color:var(--brand)}.lang button:focus-visible,.row-head:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.tv{min-height:100vh;display:flex;flex-direction:column;gap:2rem;align-items:center;justify-content:center;text-align:center;padding:4vh 4vw}.tv h1{font-size:clamp(1.5rem,4vw,3rem);margin:0}.tv-stay{display:flex;flex-direction:column;gap:.5rem}.tv-label{color:var(--muted);font-size:clamp(1rem,2vw,1.5rem)}.tv-big{font-size:clamp(3rem,12vw,9rem);font-weight:800;line-height:1;color:var(--brand)}.tv-busy{display:flex;flex-direction:column;gap:.75rem;align-items:center}.tv-counts{font-size:clamp(1rem,2.5vw,1.75rem);color:var(--muted)}.badge{display:inline-block;padding:.4em 1em;border-radius:999px;font-size:clamp(1.25rem,3vw,2.5rem);font-weight:700;color:#fff}.badge-low{background:var(--ok)}.badge-moderate{background:#b8860b}.badge-high{background:#c62828}.tv-notice{max-width:50rem;font-size:clamp(1.1rem,2.5vw,2rem);padding:1rem 1.5rem;background:#fff4f4;border:2px solid #c62828;border-radius:1rem}