body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}:root{--color-primary: #7C3AED;--color-primary-light: #A78BFA;--color-primary-dark: #5B21B6;--color-bg: #FFFFFF;--color-bg-secondary: #F9FAFB;--color-text: #111827;--color-text-secondary: #6B7280;--color-border: #E5E7EB;--color-success: #10B981;--color-error: #EF4444;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1);--radius: 12px;--transition: all .3s cubic-bezier(.4, 0, .2, 1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--color-bg);color:var(--color-text);line-height:1.6}.app{min-height:100vh;background:linear-gradient(135deg,#fff,#f3f4f6);position:relative}.app-header{text-align:center;padding:3rem 1rem 2rem;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);color:#fff;position:relative;overflow:hidden}.app-header:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 50%,rgba(255,255,255,.1) 0%,transparent 50%),radial-gradient(circle at 80% 80%,rgba(255,255,255,.1) 0%,transparent 50%);animation:headerPulse 8s ease-in-out infinite}@keyframes headerPulse{0%,to{opacity:.5}50%{opacity:1}}.app-title{font-size:2.5rem;font-weight:700;margin-bottom:.5rem;display:flex;align-items:center;justify-content:center;gap:.75rem;position:relative;z-index:1}.dice-icon{display:inline-block;font-size:2.5rem;animation:rotate 3s ease-in-out infinite}@keyframes rotate{0%,to{transform:rotate(0) scale(1)}25%{transform:rotate(-10deg) scale(1.1)}75%{transform:rotate(10deg) scale(1.1)}}.app-subtitle{font-size:1.125rem;opacity:.95;position:relative;z-index:1}.app-main{max-width:800px;margin:0 auto;padding:2rem 1rem;animation:fadeIn .6s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.loading-overlay{position:fixed;inset:0;background:#fffc;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.spinner{width:48px;height:48px;border:4px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.app-title,.dice-icon{font-size:2rem}.app-subtitle{font-size:1rem}.app-main{padding:1.5rem 1rem}}.loader{position:relative;height:40px;width:6px;color:#000;animation:paddles .75s ease-out infinite}.loader:before{content:"";position:absolute;margin:0 auto;left:0;right:0;top:15px;width:12px;height:12px;background-color:#de3500;border-radius:50%;animation:ballbounce .6s ease-out infinite}@keyframes paddles{0%{box-shadow:-25px -10px,25px 10px}50%{box-shadow:-25px 8px,25px -10px}to{box-shadow:-25px -10px,25px 10px}}@keyframes ballbounce{0%{transform:translate(-20px) scaleY(1.2)}25%{transform:scaleX(1.2)}50%{transform:translate(15px) scaleY(1.2)}75%{transform:scaleX(1.2)}to{transform:translate(-20px)}}.search-station{animation:slideUp .5s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.search-title{font-size:1.5rem;font-weight:600;color:var(--color-text);margin-bottom:1.5rem;text-align:center}.search-input-container{position:relative;width:100%}.search-input{width:100%;padding:1rem 1.25rem;font-size:1rem;border:2px solid var(--color-border);border-radius:var(--radius);background:#fff;color:var(--color-text);transition:var(--transition);outline:none}.search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #7c3aed1a}.search-input::placeholder{color:var(--color-text-secondary)}.search-results{position:absolute;top:calc(100% + .5rem);left:0;right:0;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);max-height:300px;overflow-y:auto;box-shadow:var(--shadow-lg);z-index:100;animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.search-result-item{padding:.875rem 1.25rem;cursor:pointer;transition:var(--transition);border-bottom:1px solid var(--color-bg-secondary)}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:var(--color-bg-secondary);padding-left:1.5rem}.search-result-item:active{background:var(--color-primary);color:#fff}.station-name{font-weight:500}.selected-station{animation:slideUp .5s ease-out}.station-card{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);padding:2rem;text-align:center;transition:var(--transition)}.station-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-md)}.card-label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.station-name{font-size:1.75rem;font-weight:700;color:var(--color-text);margin-bottom:1.5rem}.btn-primary{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);color:#fff;border:none;border-radius:var(--radius);padding:1rem 2rem;font-size:1.125rem;font-weight:600;cursor:pointer;transition:var(--transition);display:inline-flex;align-items:center;gap:.5rem;box-shadow:var(--shadow-md)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-icon{font-size:1.25rem;animation:bounce 1s ease-in-out infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.platform-display{animation:slideUp .5s ease-out}.platform-card{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);padding:3rem 2rem;text-align:center;transition:var(--transition)}.platform-card:hover{border-color:var(--color-primary-light);box-shadow:var(--shadow-md)}.platform-number{font-size:6rem;font-weight:900;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:1rem 0 2rem;animation:scaleIn .6s cubic-bezier(.68,-.55,.265,1.55)}@keyframes scaleIn{0%{opacity:0;transform:scale(0) rotate(-180deg)}to{opacity:1;transform:scale(1) rotate(0)}}.btn-secondary{background:#fff;color:var(--color-primary);border:2px solid var(--color-primary);border-radius:var(--radius);padding:1rem 2rem;font-size:1.125rem;font-weight:600;cursor:pointer;transition:var(--transition);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background:var(--color-primary);color:#fff;transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-secondary:active:not(:disabled){transform:translateY(0)}.btn-secondary:disabled{opacity:.6;cursor:not-allowed}@media(max-width:640px){.platform-number{font-size:4rem}}.departures-list{animation:slideUp .5s ease-out}.section-title{font-size:1.75rem;font-weight:700;color:var(--color-text);margin-bottom:1.5rem;text-align:center}.departures-grid{display:grid;gap:1rem}.departure-card{background:#fff;border:1px solid var(--color-border);border-left:4px solid var(--color-primary);border-radius:var(--radius);padding:1.25rem;cursor:pointer;transition:var(--transition);animation:slideInLeft .4s ease-out both}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}.departure-card:hover{border-left-width:6px;padding-left:calc(1.25rem - 2px);box-shadow:var(--shadow-md);transform:translate(4px)}.departure-card:active{transform:translate(2px)}.departure-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.departure-time{font-size:1.5rem;font-weight:700;color:var(--color-text)}.departure-route{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);color:#fff;padding:.375rem .875rem;border-radius:6px;font-size:.875rem;font-weight:600}.departure-destination{font-size:1.125rem;color:var(--color-text-secondary);display:flex;align-items:center;gap:.5rem}.arrow{color:var(--color-primary);font-size:1.25rem}@media(max-width:640px){.departure-time{font-size:1.25rem}.departure-destination{font-size:1rem}}.trip-details{animation:slideUp .5s ease-out}.trip-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.btn-close{background:var(--color-error);color:#fff;border:none;border-radius:50%;width:40px;height:40px;font-size:1.25rem;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.btn-close:hover{transform:rotate(90deg) scale(1.1);box-shadow:var(--shadow-md)}.trip-info{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;margin-bottom:2rem;display:grid;gap:1rem}.info-item{display:flex;flex-direction:column;gap:.25rem}.info-label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.info-value{font-size:1.125rem;font-weight:600;color:var(--color-text)}.stops-title{font-size:1.25rem;font-weight:600;color:var(--color-text);margin-bottom:1.5rem}.stops-timeline{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius);padding:1.5rem;position:relative}.stop-item{position:relative;padding-left:3rem;padding-bottom:2rem;transition:var(--transition)}.stop-item:last-child{padding-bottom:0}.stop-item:before{content:"";position:absolute;left:15px;top:28px;bottom:-4px;width:2px;background:var(--color-border)}.stop-item:last-child:before{display:none}.stop-marker{position:absolute;left:10px;top:8px;width:12px;height:12px;background:#fff;border:2px solid var(--color-primary-light);border-radius:50%;transition:var(--transition)}.stop-item:first-child .stop-marker{background:var(--color-primary);border-color:var(--color-primary)}.stop-item:last-child .stop-marker{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.stop-passed{opacity:.4}.stop-current .stop-marker{background:gold;border-color:gold;width:16px;height:16px;left:8px;top:6px;box-shadow:0 0 12px #ffd70099;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.stop-departure{padding-left:calc(3rem - 3px);padding-left:3rem;padding-bottom:2rem;border-radius:8px}.stop-departure .stop-name{font-weight:700;color:var(--color-primary)}.stop-departure .stop-marker{background:var(--color-primary);border-color:var(--color-primary);width:14px;height:14px;left:9px}.stop-before-departure{opacity:.6}.stop-content{animation:fadeIn .3s ease-out}.stop-name{font-size:1.125rem;font-weight:600;color:var(--color-text);margin-bottom:.5rem}.stop-times{font-size:.875rem;color:var(--color-text-secondary);display:flex;flex-wrap:wrap;gap:.5rem}.separator{color:var(--color-border)}@media(max-width:640px){.stop-item{padding-left:2.5rem}.stop-marker{left:8px}.stop-item:before{left:13px}.stop-current .stop-marker{left:6px}.stop-departure .stop-marker{left:7px}.stop-name{font-size:1rem}.stop-times{font-size:.8125rem}}.error-message{animation:slideUp .5s ease-out}.error-card{background:#fff;border:2px solid var(--color-error);border-radius:var(--radius);padding:3rem 2rem;text-align:center}.error-emoji{font-size:4rem;margin-bottom:1rem;animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px) rotate(-5deg)}75%{transform:translate(10px) rotate(5deg)}}.error-title{font-size:1.75rem;font-weight:700;color:var(--color-error);margin-bottom:.75rem}.error-text{font-size:1.125rem;color:var(--color-text-secondary);margin-bottom:2rem;line-height:1.6}.btn-retry{background:#fff;color:var(--color-error);border:2px solid var(--color-error);border-radius:var(--radius);padding:1rem 2rem;font-size:1.125rem;font-weight:600;cursor:pointer;transition:var(--transition)}.btn-retry:hover{background:var(--color-error);color:#fff;transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-retry:active{transform:translateY(0)}
