@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap);body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0}.App,body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.App{line-height:1.6;min-height:100vh;text-align:center}.App-header{align-items:center;background:linear-gradient(135deg,#0f0f23,#1a1a2e 50%,#16213e);color:#fff;display:flex;flex-direction:column;justify-content:flex-start;min-height:100vh;overflow:hidden;padding:3rem 2rem;position:relative}.App-header:before{background:radial-gradient(circle at 20% 80%,#7877c61a 0,#0000 50%),radial-gradient(circle at 80% 20%,#ff77c61a 0,#0000 50%);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.main-nav{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;gap:2rem;justify-content:space-between;margin-bottom:2rem;max-width:1200px;padding:0 0 2rem;position:relative;width:100%;z-index:2}.nav-center{display:flex;flex:1 1;justify-content:center}.nav-user{min-width:fit-content}.nav-brand h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#fff,#e0e7ff);-webkit-background-clip:text;background-clip:text;font-size:2rem;font-weight:800;letter-spacing:-.02em;margin:0}.nav-links{display:flex;gap:1rem}.nav-btn{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:2px solid #fff3;border-radius:12px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:600;padding:.8rem 1.5rem;transition:all .3s ease}.nav-btn:hover{background:#fff3;border-color:#ffffff4d;box-shadow:0 8px 25px #0003;transform:translateY(-2px)}.nav-btn.active{background:linear-gradient(135deg,#667eea,#764ba2);border-color:#ffffff4d;box-shadow:0 8px 25px #667eea4d}.nav-btn.active:hover{box-shadow:0 12px 30px #667eea66;transform:translateY(-2px)}.dashboard-page h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#fff,#e0e7ff);-webkit-background-clip:text;background-clip:text;font-size:2.5rem;font-weight:700;letter-spacing:-.02em;margin-bottom:2rem;position:relative;text-align:center;z-index:1}@media (max-width:1024px){.main-nav{flex-direction:column;gap:1.5rem;padding-bottom:1.5rem}.nav-center{order:2}.nav-user{order:3}}@media (max-width:768px){.nav-brand h1{font-size:1.5rem}.nav-links{justify-content:center;width:100%}.nav-btn{font-size:.9rem;padding:.7rem 1.2rem}}.App-header h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#fff,#e0e7ff);-webkit-background-clip:text;background-clip:text;font-size:clamp(2rem,5vw,3.5rem);font-weight:700;letter-spacing:-.02em;margin-bottom:3rem;position:relative;z-index:1}.data-container{grid-gap:2.5rem;display:grid;gap:2.5rem;grid-template-areas:"weather crypto" "weather stock";grid-template-columns:1fr 1fr;grid-template-rows:auto auto;max-width:1400px;position:relative;width:100%;z-index:1}.data-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffff2;border:1px solid #fff3;border-radius:20px;box-shadow:0 4px 6px -1px #0000000d,0 10px 25px -3px #00000014,0 0 0 1px #ffffff4d;color:#1e293b;overflow:hidden;padding:2.5rem;position:relative;transition:all .4s cubic-bezier(.25,.8,.25,1)}.data-card:before{background:linear-gradient(90deg,#6366f1,#8b5cf6,#ec4899);content:"";height:4px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.data-card:hover{box-shadow:0 1px 3px #0000000d,0 20px 50px #0000001f,0 0 0 1px #ffffff4d;transform:translateY(-8px) scale(1.02)}.data-card:hover:before{opacity:1}.data-card h2{align-items:center;color:#1e293b;display:flex;font-size:1.75rem;font-weight:700;gap:.75rem;letter-spacing:-.025em;margin-bottom:2rem;margin-top:0}.weather-card{background:linear-gradient(135deg,#6366f1,#8b5cf6 50%,#a855f7);border:1px solid #ffffff1a;color:#fff;grid-area:weather;overflow:hidden;position:relative}.weather-card:before{background:linear-gradient(90deg,#8b5cf6,#6366f1,#a855f7)!important}.weather-card h2{color:#fff;font-size:1.75rem;font-weight:700}.current-weather,.weather-main{margin-bottom:2rem}.weather-main{align-items:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffff26;border:1px solid #fff3;border-radius:16px;box-shadow:0 4px 15px #0000001a;display:flex;justify-content:space-between;padding:1.5rem}.temperature{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#fff,#e0f2fe);-webkit-background-clip:text;background-clip:text;font-size:clamp(2.5rem,8vw,4rem);font-weight:800;line-height:1}.weather-desc{font-size:1.25rem;font-weight:500;opacity:.95;text-align:right}.weather-details{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr;margin-top:1rem;opacity:.95}.weather-details p{background:#ffffff1a;border-radius:12px;font-weight:500;margin:0;padding:.75rem}.forecast h3{font-size:1.25rem;font-weight:700;letter-spacing:-.025em;margin-bottom:1.5rem;opacity:.95}.forecast-hint{color:#ffffffb3;font-size:.875rem;font-style:italic;font-weight:400;opacity:.8}.forecast-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(3,1fr)}.forecast-day{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1f;border:2px solid #ffffff1a;border-radius:16px;cursor:pointer;overflow:hidden;padding:1.5rem 1rem;position:relative;text-align:center;transition:all .4s cubic-bezier(.25,.8,.25,1);-webkit-user-select:none;user-select:none}.forecast-day:before{background:linear-gradient(90deg,#60a5fa,#3b82f6,#2563eb);content:"";height:3px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.forecast-day:hover{background:#fff3;border-color:#ffffff4d;box-shadow:0 8px 25px #00000026;transform:translateY(-4px) scale(1.05)}.forecast-day:hover:before{opacity:1}.forecast-day.selected{background:#60a5fa40;border-color:#60a5fa80;box-shadow:0 8px 25px #60a5fa4d;transform:translateY(-4px) scale(1.05)}.forecast-day.selected:before{opacity:1}.day-name{font-size:.9rem;font-weight:600;margin-bottom:.5rem}.weather-icon{font-size:1.5rem;margin:.5rem 0}.temps{display:flex;gap:.5rem;justify-content:center;margin:.5rem 0}.high{font-weight:600}.low{opacity:.7}.precipitation{font-size:.8rem;opacity:.8}.hourly-forecast{animation:slideDown .3s ease-out;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;margin-top:20px;padding:20px}.hourly-forecast h4{color:#333;font-size:1em;font-weight:600;margin-bottom:15px;opacity:.9}.hourly-row{display:flex;gap:12px;overflow-x:auto;padding-bottom:5px}.hourly-row::-webkit-scrollbar{height:6px}.hourly-row::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}.hourly-row::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.hourly-item{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff1a;border:1px solid #ffffff26;border-radius:10px;flex-shrink:0;min-width:80px;padding:12px 8px;text-align:center;transition:all .2s ease}.hourly-item:hover{background:#ffffff26;transform:translateY(-1px)}.hour-time{font-size:.8em;font-weight:600;margin-bottom:6px;opacity:.9}.hour-icon{font-size:1.2em;margin:6px 0}.hour-temp{font-size:.9em;font-weight:600;margin:6px 0}.hour-details{font-size:.7em;line-height:1.2;opacity:.8}.hour-details div{margin:2px 0}.stock-card{background:linear-gradient(135deg,#0ea5e9,#0284c7 50%,#0369a1);border:1px solid #ffffff1a;color:#fff;grid-area:stock;overflow:hidden;position:relative}.stock-card:before{background:linear-gradient(90deg,#38bdf8,#0ea5e9,#0284c7)!important}.stock-header{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.stock-card h2{align-items:center;color:#fff;display:flex;font-size:1.75rem;font-weight:700;gap:.5rem;margin:0}.time-range-selector{display:flex;flex-wrap:wrap;gap:.5rem}.time-range-btn{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;font-size:.8rem;font-weight:500;padding:.4rem .8rem;transition:all .2s ease}.time-range-btn:hover{background:#fff3;border-color:#ffffff4d;transform:translateY(-1px)}.time-range-btn.active{background:#ffffffe6;border-color:#ffffffe6;color:#047857;font-weight:600}.time-range-btn.active:hover{background:#fff;transform:translateY(-1px)}.demo-badge{background:#fff3;border-radius:4px;color:#fff;font-size:.7rem;font-weight:400;letter-spacing:.5px;padding:.2rem .5rem;text-transform:uppercase}.demo-note{font-size:.9rem;font-style:italic;opacity:.8}.data-card.error{opacity:.7}.data-card.error p{font-style:italic;margin:2rem 0;text-align:center}.stock-main{align-items:center;-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffff26;border:1px solid #fff3;border-radius:16px;box-shadow:0 4px 15px #0000001a;display:flex;justify-content:space-between;margin-bottom:1.5rem;padding:1.5rem}.stock-price{align-items:baseline;display:flex;gap:.5rem}.price{font-size:2.5rem;font-weight:300;line-height:1}.currency{font-size:1rem;opacity:.8}.stock-change{align-items:center;display:flex;font-size:1.1rem;font-weight:600;gap:.3rem}.stock-change.positive{background:#2ecc711a;border-radius:8px;color:#2ecc71;padding:.5rem 1rem}.stock-change.negative{background:#e74c3c1a;border-radius:8px;color:#e74c3c;padding:.5rem 1rem}.change-arrow{font-size:.9rem}.stock-details{opacity:.9;text-align:left}.stock-details p{display:flex;justify-content:space-between;margin:.5rem 0}.market-status.open{color:#2ecc71;font-weight:600}.market-status.closed{color:#e74c3c;font-weight:600}.shares-euro-section{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#3498db1a,#9b59b61a);border:1px solid #fff3;border-radius:16px;margin:1.5rem 0;padding:1.25rem}.shares-title{align-items:center;color:#fffffff2;display:flex;font-size:1.1rem;font-weight:600;gap:.5rem;justify-content:center;margin:0 0 1rem;text-align:center}.shares-values{display:flex;flex-direction:column;gap:.75rem}.shares-value{align-items:center;background:#ffffff1a;border-radius:12px;display:flex;justify-content:space-between;padding:.75rem 1rem;transition:all .3s ease}.shares-value:hover{background:#ffffff26;transform:translateY(-1px)}.shares-value.usd{border-left:3px solid #2ecc71}.shares-value.eur{border-left:3px solid #3498db}.shares-label{font-size:.9rem;font-weight:500;opacity:.8}.shares-amount{color:#fffffff2;font-size:1.1rem;font-weight:600}.exchange-rate{margin-top:.5rem;opacity:.7;text-align:center}.exchange-rate small{color:#fffc;font-size:.8rem}.trend-chart{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff1a;border-radius:12px;margin:1.5rem 0;padding:1rem;width:100%}.trend-svg{display:block}.trend-header{font-size:.9rem;justify-content:space-between}.trend-header,.trend-timeframe{align-items:center;display:flex;margin-bottom:.5rem}.trend-timeframe{font-size:.8rem;gap:.5rem;justify-content:center;opacity:.8}.time-arrow{color:#3498db;font-weight:700}.trend-label{font-weight:500;opacity:.9}.trend-direction{border-radius:6px;font-size:.8rem;font-weight:600;padding:.2rem .5rem}.trend-direction.up{background:#2ecc711a;color:#2ecc71}.trend-direction.down{background:#e74c3c1a;color:#e74c3c}.trend-svg{height:120px;margin:.5rem 0;width:100%}.trend-placeholder,.trend-svg{background:#ffffff0d;border-radius:8px}.trend-placeholder{font-style:italic;margin:1rem 0;opacity:.7;padding:2rem;text-align:center}.word-card{background:linear-gradient(135deg,#f59e0b,#ea580c 50%,#dc2626);border:1px solid #ffffff1a;color:#fff;grid-area:crypto;overflow:hidden;position:relative}.word-card:before{background:linear-gradient(90deg,#fbbf24,#f59e0b,#ea580c)!important}.word-card h2{color:#fff;font-weight:700;margin-bottom:1.5rem}.word-container{display:flex;flex-direction:column;gap:1.5rem}.word-header{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:#ffffff26;border:1px solid #fff3;border-radius:16px;box-shadow:0 4px 15px #0000001a;padding:1.5rem;text-align:center}.word-title{color:#fff;font-size:2.2rem;font-weight:700;letter-spacing:1px;margin:0 0 .5rem;text-transform:capitalize}.word-pronunciation{background:#ffffff1a;border-radius:8px;color:#fffc;display:inline-block;font-family:Courier New,monospace;font-size:1rem;padding:.3rem .8rem}.word-part-of-speech{background:#ffffff1a;border-radius:8px;color:#ffffffe6;font-size:.9rem;font-style:italic;margin:0 auto;padding:.5rem 1rem;text-align:center;width:fit-content}.word-definition{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff26;border:1px solid #fff3;border-radius:12px;padding:1.5rem}.word-definition p{color:#fff;font-size:1.1rem;font-weight:400;line-height:1.6;margin:0;text-align:center}.word-example{background:#ffffff1a;border-left:4px solid #fff6;border-radius:12px;padding:1rem}.word-example h4{color:#fffc;font-size:.9rem;font-weight:600;letter-spacing:.5px;margin:0 0 .5rem;text-transform:uppercase}.word-example p{color:#fffffff2;font-size:1rem;line-height:1.5;margin:0}.word-footer{padding:.5rem;text-align:center}.word-date{background:#ffffff1a;border-radius:20px;color:#ffffffb3;display:inline-block;font-size:.8rem;font-weight:500;padding:.4rem 1rem}.status-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #ffffff1a;border-radius:16px;font-size:.95rem;font-weight:500;margin-bottom:1.5rem;opacity:.9;padding:1rem 1.5rem}.error{align-items:center;background:#e74c3c1a;border:1px solid #e74c3c4d;border-radius:12px;display:flex;flex-direction:column;gap:1rem;padding:2rem}.retry-btn{background:#3498db;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;padding:.5rem 1rem;transition:background .2s ease}.retry-btn:hover{background:#2980b9}.location-notice{align-items:center;background:#3498db1a;border:1px solid #3498db4d;border-radius:12px;display:flex;flex-direction:column;gap:1rem;margin-bottom:1rem;padding:1.5rem}.location-btn{background:#f39c12;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;padding:.5rem 1rem;transition:background .2s ease}.location-btn:hover{background:#e67e22}.loading{align-items:center;display:flex;flex-direction:column;gap:1rem}.loading-spinner{animation:spin 1s ease-in-out infinite;border:3px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:40px;width:40px}@media (max-width:1200px){.data-container{gap:2rem;grid-template-areas:"weather stock" "weather crypto";grid-template-columns:1fr 1fr}}@media (max-width:768px){.App-header{padding:2rem 1rem}.data-container{gap:1.5rem;grid-template-areas:"weather" "stock" "crypto";grid-template-columns:1fr;max-width:100%}.data-card{margin:0 .5rem;padding:2rem 1.5rem}.forecast-row{gap:.75rem}.forecast-day{padding:1rem .75rem}.weather-main{padding:1rem}.hourly-row{gap:.75rem}.hourly-item{min-width:70px;padding:1rem .5rem}}@media (max-width:480px){.App-header{padding:1.5rem .75rem}.data-card{margin:0 .25rem;padding:1.5rem 1rem}.weather-main{flex-direction:column;gap:1rem}.weather-desc,.weather-main{text-align:center}.forecast-day{padding:.75rem .5rem}.data-card{padding:1.5rem}.forecast-row{gap:.5rem;grid-template-columns:1fr}.stock-main{text-align:center}.stock-header,.stock-main{flex-direction:column;gap:1rem}.stock-header{align-items:stretch}.time-range-selector{justify-content:center}.time-range-btn{font-size:.75rem;padding:.5rem .75rem}.temperature{font-size:2.5rem}.price{font-size:2rem}.trend-chart{margin:1rem 0;padding:.75rem}.trend-header{font-size:.8rem}}.access-denied{margin:0 auto;max-width:600px;padding:4rem 2rem;text-align:center}.access-denied h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#e74c3c,#c0392b);-webkit-background-clip:text;background-clip:text;font-size:2.5rem;margin-bottom:1rem}.access-denied p{color:#fffc;font-size:1.2rem;margin-bottom:2rem}.access-denied .nav-btn{margin:.5rem}.calendars-page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1200px;padding:20px}.calendars-header{margin-bottom:30px;text-align:center}.calendars-header h1{color:#333;margin-bottom:10px}.calendars-header p{color:#666;font-size:16px}.calendar-container{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin-bottom:30px;padding:20px}.calendar-container h2{color:#333;margin-bottom:20px;text-align:center}.legend{background:#f8f9fa;border-radius:8px;display:flex;gap:30px;justify-content:center;margin-bottom:25px;padding:15px}.legend-item{align-items:center;color:#000;display:flex;font-weight:500;gap:8px}.legend-color{border:2px solid #ddd;border-radius:4px;height:20px;width:20px}.legend-color.vanessa{background-color:#4caf50}.legend-color.aoife{background-color:#9c27b0}.legend-color.weekend{background-color:#fff}.legend-color.green-brown-bin{background:linear-gradient(45deg,#4caf50 50%,#8b4513 0)}.legend-color.black-bin{background-color:#666}.legend-color.normal-day{background-color:#fff}.calendar-day.green-brown-diagonal{background:linear-gradient(45deg,#4caf50 50%,#8b4513 0)}.months-grid{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(3,1fr)}.month-calendar{background:#fafbfc;border:2px solid #e1e5e9;border-radius:8px;padding:15px}.month-calendar h3{color:#333;font-size:18px;margin-bottom:15px;text-align:center}.calendar-grid{background:#fff;border:1px solid #ddd;border-radius:6px;overflow:hidden}.day-headers{background:#333;color:#fff;display:grid;grid-template-columns:repeat(7,1fr)}.day-header{border-right:1px solid #555;font-size:12px;font-weight:600;padding:10px 5px;text-align:center}.day-header:last-child{border-right:none}.calendar-body{display:grid;grid-template-rows:repeat(auto,1fr)}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-day{align-items:center;border-bottom:1px solid #e1e5e9;border-right:1px solid #e1e5e9;display:flex;flex-direction:column;justify-content:center;min-height:60px;padding:5px;position:relative;transition:all .2s ease}.calendar-day:last-child{border-right:none}.calendar-day.active:hover{box-shadow:0 2px 8px #00000026;transform:scale(1.02);z-index:1}.calendar-day.inactive{background:#f8f9fa}.day-number{font-size:14px;font-weight:600;margin-bottom:2px}.day-person{font-size:10px;font-weight:500;line-height:1.2;text-align:center}.work-calendar-section{margin:30px 0}.work-calendar-toggle{background:#e8f5e8;border:2px solid #c3e6c3;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;margin-bottom:15px;padding:15px 20px;text-align:left;transition:all .2s ease;width:100%}.work-calendar-toggle:hover{background:#d4edda;border-color:#a3d9a3}.work-calendar-toggle:active{transform:translateY(1px)}.bin-calendar-section{margin:30px 0}.bin-calendar-toggle{background:#f8f9fa;border:2px solid #ddd;border-radius:8px;cursor:pointer;font-size:16px;font-weight:600;margin-bottom:15px;padding:15px 20px;text-align:left;transition:all .2s ease;width:100%}.bin-calendar-toggle:hover{background:#e9ecef;border-color:#adb5bd}.bin-calendar-toggle:active{transform:translateY(1px)}@media (max-width:1024px){.months-grid{gap:20px;grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.calendars-page{padding:15px}.months-grid{gap:20px;grid-template-columns:1fr}.legend{align-items:center;flex-direction:column;gap:15px}.calendar-day{min-height:50px;padding:3px}.day-number{font-size:12px}.day-person{font-size:9px}}@media (max-width:480px){.calendar-day{min-height:40px;padding:2px}.day-number{font-size:11px}.day-person{font-size:8px}.day-header{font-size:11px;padding:8px 3px}}.fpl-page{background:#f8f9fa;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0 auto;max-width:1400px;min-height:100vh;padding:20px}.fpl-header{background:#fff;border-radius:16px;box-shadow:0 4px 12px #0000001a;margin-bottom:30px;padding:30px;text-align:center}.fpl-header h1{color:#37003c;font-size:2.5rem;font-weight:700;margin-bottom:10px}.fpl-header p{color:#666;font-size:1.1rem;margin:0}.team-selector{align-items:center;display:flex;flex-direction:column;gap:10px;margin:20px 0}.team-selector label{color:#37003c;font-size:1rem;font-weight:600}.team-dropdown{background:#fff;border:2px solid #ddd;border-radius:8px;color:#333;cursor:pointer;font-size:1rem;font-weight:500;min-width:280px;padding:10px 15px;transition:all .3s ease}.team-dropdown:hover{border-color:#37003c}.team-dropdown:focus{border-color:#37003c;box-shadow:0 0 0 3px #37003c1a;outline:none}.last-updated{color:#888;font-size:.9rem;margin-top:15px}.error-container,.loading-container{background:#fff;border-radius:16px;box-shadow:0 4px 12px #0000001a;padding:60px 20px;text-align:center}.spinner{animation:spin 1s linear infinite;border:4px solid #f3f3f3;border-radius:50%;border-top-color:#37003c;height:40px;margin:0 auto 20px;width:40px}.refresh-btn,.retry-btn{background:#37003c;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 24px;transition:all .2s ease}.refresh-btn:hover,.retry-btn:hover{background:#00ff87;color:#37003c;transform:translateY(-2px)}.team-stats{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:30px}.stat-card{background:#fff;border-radius:12px;border-top:4px solid #37003c;box-shadow:0 4px 12px #0000001a;padding:25px;text-align:center}.stat-card h3{color:#37003c;font-size:1rem;font-weight:600;margin:0 0 10px}.stat-value{color:#00ff87;font-size:2rem;font-weight:700;text-shadow:0 2px 4px #00ff874d}.formation-info{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin-bottom:30px;padding:25px}.formation-info h3{color:#37003c;font-size:1.3rem;margin:0 0 20px}.formation-display{display:flex;flex-wrap:wrap;gap:15px}.formation-position{align-items:center;background:#f8f9fa;border-radius:8px;display:flex;gap:8px;padding:10px 15px}.position-badge{border-radius:4px;color:#fff;font-size:.8rem;font-weight:600;padding:4px 8px;text-transform:uppercase}.position-count{color:#333;font-weight:600}.position-section{margin-bottom:40px}.position-title{border-left:4px solid #37003c;color:#37003c;font-size:1.4rem;font-weight:700;margin:0 0 20px;padding-left:15px}.players-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.player-card{background:#fff;border:2px solid #0000;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;transition:all .3s ease}.player-card:hover{border-color:#00ff87;box-shadow:0 8px 24px #00000026;transform:translateY(-4px)}.player-photo{align-items:center;background:linear-gradient(135deg,#37003c,#00ff87);display:flex;height:200px;justify-content:center;overflow:hidden;position:relative}.player-photo img{filter:drop-shadow(0 4px 8px rgba(0,0,0,.3));max-height:160px;max-width:120px;object-fit:contain}.player-photo .position-badge{font-size:.7rem;padding:4px 6px;position:absolute;right:10px;top:10px}.player-info{padding:20px}.player-name{color:#37003c;font-size:1.1rem;font-weight:700;margin:0 0 5px}.player-team{color:#666;font-size:.9rem;font-weight:500;margin:0 0 15px}.player-stats{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr}.stat{border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:6px 0}.stat:last-child{border-bottom:none;grid-column:1/-1}.stat-label{color:#666;font-size:.85rem;font-weight:500}.stat .stat-value{color:#37003c;font-size:.85rem;font-weight:600}.refresh-section{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;margin-top:40px;padding:30px;text-align:center}.refresh-note{color:#666;font-size:.9rem;margin:15px 0 0}@media (max-width:768px){.fpl-page{padding:15px}.fpl-header h1{font-size:2rem}.team-stats{gap:15px;grid-template-columns:1fr 1fr}.formation-display{justify-content:center}.players-grid{gap:15px;grid-template-columns:1fr}.player-photo{height:160px}.player-photo img{max-height:130px;max-width:100px}}@media (max-width:480px){.team-stats{grid-template-columns:1fr}.stat-card{padding:20px}.stat-value{font-size:1.5rem}}.team-dropdown{margin-bottom:30px}.team-dropdown-btn{align-items:center;background:#fff;border:2px solid #37003c;border-radius:12px;box-shadow:0 4px 12px #0000001a;color:#37003c;cursor:pointer;display:flex;font-size:1.1rem;font-weight:600;justify-content:space-between;padding:20px;transition:all .3s ease;width:100%}.team-dropdown-btn:hover{background:#f8f9fa;border-color:#00ff87;box-shadow:0 6px 20px #00000026;transform:translateY(-2px)}.dropdown-arrow{color:#37003c;font-size:1rem;transition:transform .3s ease}.dropdown-arrow.open{transform:rotate(180deg)}.team-display-wide{animation:slideDown .3s ease-out;background:#fff;border:2px solid #37003c;border-radius:0 0 12px 12px;border-top:none;max-width:100%;overflow-x:auto;padding:20px}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.position-section-wide{margin-bottom:30px}.position-section-wide:last-child{margin-bottom:0}.position-title-wide{border-left:4px solid #37003c;color:#37003c;font-size:1.2rem;font-weight:700;margin:0 0 15px;padding-left:12px}.players-row{display:flex;gap:15px;min-height:160px;overflow-x:auto;padding-bottom:5px}.player-card-wide{background:#f8f9fa;border:2px solid #e9ecef;border-radius:10px;flex:0 0 auto;padding:12px;text-align:center;transition:all .3s ease;width:140px}.player-card-wide:hover{background:#e9ecef;border-color:#00ff87;box-shadow:0 6px 20px #00000026;transform:translateY(-4px)}.player-photo-small{align-items:center;background:linear-gradient(135deg,#37003c,#00ff87);border-radius:8px;display:flex;height:80px;justify-content:center;margin-bottom:8px;overflow:hidden;position:relative}.player-photo-small img{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));max-height:70px;max-width:60px;object-fit:contain}.position-badge-overlay{border-radius:3px;color:#fff;font-size:.6rem;font-weight:600;padding:2px 4px;position:absolute;right:4px;text-transform:uppercase;top:4px}.player-info-wide{text-align:center}.player-name-wide{color:#37003c;font-size:.85rem;font-weight:700;line-height:1.1;margin:0 0 3px}.player-team-wide{color:#666;font-size:.7rem;font-weight:500;margin:0 0 8px}.player-stats-inline{display:flex;flex-direction:column;gap:3px}.stat-inline{border-radius:3px;font-size:.7rem;font-weight:600;padding:2px 4px;text-align:center}.stat-inline.price{background:#e8f5e8;color:#2d5a2d}.stat-inline.ownership{background:#e8f4fd;color:#1a5490}.stat-inline.points{background:#fff3cd;color:#856404}.stat-inline.predicted{background:#f3e8ff;color:#6b21a8}.stat-inline.value-ratio{background:#fef3c7;color:#92400e}@media (max-width:1200px){.fpl-page{max-width:100%;padding:15px}.player-card-wide{width:130px}.players-row{gap:12px}.team-dropdown-btn{font-size:1rem;padding:15px}}@media (max-width:768px){.team-dropdown-btn{font-size:.95rem;padding:12px 15px}.team-display-wide{border-radius:0 0 12px 12px;margin:0;padding:15px}.player-card-wide{width:120px}.players-row{gap:10px;padding:0 15px}.player-photo-small{height:70px}.player-photo-small img{max-height:60px;max-width:50px}}@media (max-width:480px){.player-card-wide{padding:8px;width:100px}.player-name-wide{font-size:.75rem}.player-team-wide,.stat-inline{font-size:.65rem}.stat-inline{padding:1px 3px}.player-photo-small{height:60px}.player-photo-small img{max-height:50px;max-width:40px}}.auth-container{align-items:center;background:linear-gradient(135deg,#0f0f23,#1a1a2e 50%,#16213e);display:flex;justify-content:center;min-height:100vh;overflow:hidden;padding:20px;position:relative}.auth-container:before{background:radial-gradient(circle at 20% 80%,#7877c61a 0,#0000 50%),radial-gradient(circle at 80% 20%,#ff77c61a 0,#0000 50%);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.auth-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#fffffffa;border:1px solid #fff3;border-radius:20px;box-shadow:0 20px 40px #0000001a;max-width:450px;padding:40px;position:relative;width:100%;z-index:1}.auth-header{margin-bottom:30px;text-align:center}.auth-header h2{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#667eea,#764ba2);-webkit-background-clip:text;background-clip:text;font-size:2rem;font-weight:700;margin:0 0 10px}.auth-header p{color:#666;font-size:1rem;margin:0}.auth-form{gap:20px}.auth-form,.form-group{display:flex;flex-direction:column}.form-group{gap:8px}.form-group label{color:#333;font-size:.95rem;font-weight:600}.form-group input{background:#fafbfc;border:2px solid #e1e5e9;border-radius:12px;font-size:1rem;padding:12px 16px;transition:all .3s ease}.form-group input:focus{background:#fff;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-group input.error{background:#fdf2f2;border-color:#e74c3c}.form-group input.error:focus{border-color:#e74c3c;box-shadow:0 0 0 3px #e74c3c1a}.field-error{color:#e74c3c;font-size:.875rem;margin-top:4px}.error-message{background:#fdf2f2;border-left:4px solid #e74c3c;border-radius:8px;color:#e74c3c;font-size:.95rem;padding:12px 16px}.auth-button{align-items:center;border:none;border-radius:12px;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:8px;justify-content:center;min-height:50px;padding:14px 20px;transition:all .3s ease}.auth-button.primary{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 4px 15px #667eea4d;color:#fff}.auth-button.primary:hover:not(:disabled){box-shadow:0 8px 25px #667eea66;transform:translateY(-2px)}.auth-button:disabled{cursor:not-allowed;opacity:.7;transform:none!important}.button-spinner{animation:spin 1s linear infinite;border:2px solid #0000;border-radius:50%;border-top-color:currentcolor;height:16px;width:16px}@keyframes spin{to{transform:rotate(1turn)}}.auth-footer{border-top:1px solid #e1e5e9;margin-top:30px;padding-top:20px;text-align:center}.auth-footer p{color:#666;margin:0}.link-button{background:none;border:none;color:#667eea;cursor:pointer;font-size:inherit;font-weight:600;padding:0;text-decoration:underline}.link-button:hover{color:#764ba2}.demo-credentials{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;margin-top:25px;padding:20px}.demo-credentials h4{color:#333;font-size:1rem;margin:0 0 10px}.demo-credentials p{color:#666;font-size:.9rem;margin:0 0 15px}.demo-examples{display:flex;flex-direction:column;gap:8px}.demo-examples code{background:#e9ecef;border:1px solid #dee2e6;border-radius:6px;color:#495057;font-size:.85rem;padding:8px 12px}.admin-creds,.regular-creds{margin-bottom:15px}.admin-creds strong{color:#dc3545}.admin-creds code{background:#f8d7da;border-color:#f5c6cb;color:#721c24}.aoife-creds strong{color:#9c27b0}.aoife-creds code{background:#f3e5f5;border-color:#e1bee7;color:#4a148c}.regular-creds strong{color:#667eea}.user-profile{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;border-radius:12px;display:flex;gap:12px;padding:8px 16px}.user-avatar{border:2px solid #ffffff4d;border-radius:50%;height:40px;width:40px}.user-info{align-items:flex-start;display:flex;flex-direction:column}.user-name{color:#fff;font-size:.9rem;font-weight:600;margin:0}.user-email{color:#ffffffb3;font-size:.8rem;margin:0}.admin-badge{background:#dc3545;border-radius:4px;color:#fff;font-size:.65rem;font-weight:700;letter-spacing:.5px;margin-left:8px;padding:2px 6px;text-transform:uppercase}.logout-button{background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;font-size:.85rem;padding:8px 12px;transition:all .3s ease}.logout-button:hover{background:#fff3;border-color:#ffffff4d}@media (max-width:768px){.auth-container{padding:15px}.auth-card{padding:30px 20px}.auth-header h2{font-size:1.75rem}.user-profile{flex-direction:column;gap:8px;padding:12px}.user-info{align-items:center;text-align:center}}@media (max-width:480px){.auth-card{padding:25px 15px}.demo-examples{font-size:.8rem}}
/*# sourceMappingURL=main.bc067741.css.map*/