*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:#0f172a;min-height:100vh;color:#e2e8f0}.app{max-width:900px;margin:0 auto;padding:20px}.header-actions{display:flex;align-items:center;gap:16px}.admin-link{color:#64748b;text-decoration:none;font-size:.9rem;padding:8px 12px;border-radius:6px;background:#1e293b}.admin-link:hover{color:#e2e8f0;background:#334155}.hotel-info{display:flex;align-items:center;gap:12px}.hotel-selector{padding:10px 14px;background:#1e293b;border:1px solid #334155;border-radius:8px;color:#fff;font-size:1.1rem;font-weight:600;cursor:pointer;min-width:200px}.hotel-selector:focus{outline:none;border-color:#3b82f6}.hotel-selector option{background:#1e293b;color:#fff}.hotel-info h1{font-size:1.5rem;font-weight:700}.connection{font-size:.75rem;padding:4px 8px;border-radius:4px;background:#ef4444;color:#fff}.connection.connected{background:#22c55e}.view-toggle{display:flex;gap:4px;background:#1e293b;padding:4px;border-radius:8px}.view-toggle button{padding:8px 16px;border:none;background:transparent;color:#94a3b8;border-radius:6px;cursor:pointer}.view-toggle button.active{background:#3b82f6;color:#fff}.date-selector{display:flex;align-items:center;gap:12px;margin-bottom:24px}.date-selector label{color:#64748b;font-size:.9rem}.date-selector input{padding:10px 14px;background:#1e293b;border:1px solid #334155;border-radius:8px;color:#fff;font-size:1rem}.scrape-btn{padding:10px 20px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-weight:600;cursor:pointer}.scrape-btn:disabled{opacity:.6}.direct-price-card{background:linear-gradient(135deg,#1e3a5f,#1e293b);border:2px solid #3b82f6;border-radius:16px;padding:24px;margin-bottom:24px;text-align:center}.direct-price-card .label{font-size:.85rem;color:#94a3b8;margin-bottom:8px;text-transform:uppercase;letter-spacing:1px}.direct-price-card .price{margin-bottom:8px}.direct-price-card .currency{font-size:1.5rem;color:#3b82f6}.direct-price-card .amount{font-size:3rem;font-weight:700;color:#fff}.direct-price-card .room-type{color:#64748b;font-size:.9rem}.direct-price-card .status-note{margin-top:12px;font-size:.8rem;color:#64748b}.progress{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.step{padding:6px 12px;background:#1e293b;border-radius:6px;font-size:.85rem;color:#64748b}.step.active{background:#3b82f6;color:#fff}.step.done{background:#22c55e;color:#fff}.bml-summary{display:flex;gap:16px;justify-content:center;margin-bottom:24px}.bml-stat{text-align:center;padding:16px 24px;border-radius:12px;min-width:80px}.bml-stat .count{font-size:2rem;font-weight:700}.bml-stat.beat .count{color:#22c55e}.bml-stat.meet .count{color:#f59e0b}.bml-stat.lose .count{color:#ef4444}.bml-stat .label{font-size:.75rem;color:#64748b;text-transform:uppercase}.ota-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin-bottom:24px}.ota-card{background:#1e293b;border-radius:12px;padding:16px;border-left:4px solid #64748b}.ota-card.beat{border-left-color:#22c55e}.ota-card.meet{border-left-color:#f59e0b}.ota-card.lose{border-left-color:#ef4444}.ota-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.channel-name{font-weight:600;text-transform:capitalize}.bml-badge{font-size:.7rem;padding:3px 8px;border-radius:4px;font-weight:600}.bml-badge.beat{background:#22c55e33;color:#22c55e}.bml-badge.meet{background:#f59e0b33;color:#f59e0b}.bml-badge.lose{background:#ef444433;color:#ef4444}.ota-price{font-size:1.5rem;font-weight:700}.ota-diff{font-size:.8rem;color:#64748b;margin-top:4px}.google-section{background:#1e293b;border-radius:12px;padding:20px}.google-section h3{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;font-size:1rem}.direct-badge{font-size:.75rem;padding:4px 10px;border-radius:4px;background:#ef444433;color:#ef4444}.direct-badge.visible{background:#22c55e33;color:#22c55e}.google-winner{display:flex;align-items:center;gap:12px;padding:12px;background:#0f172a;border-radius:8px;margin-bottom:12px}.winner-label{color:#64748b;font-size:.85rem}.winner-channel{font-weight:600;flex:1}.winner-price{font-size:1.2rem;font-weight:700;color:#f59e0b}.google-prices{display:flex;flex-direction:column;gap:8px}.google-price-row{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#0f172a;border-radius:6px}.google-price-row .rank{color:#64748b;font-size:.85rem;width:20px}.google-price-row .channel{flex:1}.google-price-row .price{font-weight:600}.calendar-view{background:#1e293b;border-radius:16px;padding:24px}.calendar-header{display:flex;align-items:center;gap:16px;margin-bottom:20px}.calendar-header button{padding:8px 12px;background:#334155;border:none;border-radius:6px;color:#fff;cursor:pointer}.month-title{font-size:1.2rem;font-weight:600;flex:1}.load-btn{background:#3b82f6!important}.calendar-legend{display:flex;gap:16px;margin-bottom:16px;justify-content:center}.legend-item{font-size:.75rem;padding:4px 10px;border-radius:4px}.legend-item.beat{background:#22c55e33;color:#22c55e}.legend-item.meet{background:#f59e0b33;color:#f59e0b}.legend-item.lose{background:#ef444433;color:#ef4444}.legend-item.unknown{background:#64748b33;color:#64748b}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.weekday{text-align:center;padding:8px;font-size:.75rem;color:#64748b;text-transform:uppercase}.calendar-day{aspect-ratio:1;background:#0f172a;border-radius:8px;padding:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:transform .1s}.calendar-day:hover:not(.empty){transform:scale(1.05)}.calendar-day.empty{background:transparent;cursor:default}.calendar-day.today{border:2px solid #3b82f6}.calendar-day.beat{background:#22c55e33}.calendar-day.meet{background:#f59e0b33}.calendar-day.lose{background:#ef444433}.day-number{font-weight:600;font-size:1rem}.day-price{font-size:.7rem;color:#94a3b8}.day-bml{font-size:.6rem;color:#64748b}.admin{max-width:1000px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;background:#0f172a;min-height:100vh;color:#e2e8f0}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #1e293b}header h1{font-size:1.5rem}.back-link{color:#3b82f6;text-decoration:none}.card{background:#1e293b;border-radius:12px;padding:20px;margin-bottom:20px}.card h2{font-size:1.1rem;margin-bottom:16px;color:#94a3b8}.card.danger{border:1px solid #ef4444}.card.danger h2{color:#ef4444}.status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin-bottom:16px}.status-item{background:#0f172a;padding:12px;border-radius:8px}.status-item .label{display:block;font-size:.75rem;color:#64748b;margin-bottom:4px}.status-item .value{font-size:1.1rem;font-weight:600}.status-badge.running{color:#22c55e}.btn{padding:8px 16px;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:500}.btn-primary{background:#3b82f6;color:#fff}.btn-secondary{background:#334155;color:#fff}.btn-danger{background:#ef4444;color:#fff}.btn-sm{padding:4px 10px;font-size:.8rem}.form-row{margin-bottom:12px}.form-row label{display:block;margin-bottom:4px;color:#94a3b8;font-size:.9rem}.form-row input[type=text],.form-row input[type=number],.form-row select{width:100%;max-width:300px;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#fff}.channel-checkboxes{display:flex;gap:16px;flex-wrap:wrap}.channel-checkboxes label{display:flex;align-items:center;gap:6px}.hotels-list{margin-bottom:20px}.hotel-row{display:flex;align-items:center;gap:16px;padding:12px;background:#0f172a;border-radius:8px;margin-bottom:8px}.hotel-info{flex:1}.hotel-id{font-size:.8rem;color:#64748b;margin-left:8px}.hotel-url{flex:2;font-size:.85rem;color:#64748b;overflow:hidden;text-overflow:ellipsis}.add-hotel-form{padding-top:16px;border-top:1px solid #334155}.add-hotel-form h4{margin-bottom:12px;color:#94a3b8}.add-hotel-form input{display:block;width:100%;max-width:400px;padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#fff;margin-bottom:8px}.bml-overview{display:flex;gap:16px;margin-bottom:12px}.bml-stat{flex:1;text-align:center;padding:16px;border-radius:8px}.bml-stat.beat{background:#22c55e26}.bml-stat.meet{background:#f59e0b26}.bml-stat.lose{background:#ef444426}.bml-stat .pct{display:block;font-size:2rem;font-weight:700}.bml-stat.beat .pct{color:#22c55e}.bml-stat.meet .pct{color:#f59e0b}.bml-stat.lose .pct{color:#ef4444}.bml-stat .label{font-size:.85rem;color:#64748b}.bml-meta{display:flex;gap:24px;color:#64748b;font-size:.85rem}table{width:100%;border-collapse:collapse}th,td{padding:10px 12px;text-align:left;border-bottom:1px solid #334155}th{font-size:.75rem;text-transform:uppercase;color:#64748b}td{font-size:.9rem}.status-pill{padding:2px 8px;border-radius:4px;font-size:.75rem}.status-pill.success{background:#22c55e33;color:#22c55e}.status-pill.error{background:#ef444433;color:#ef4444}.status-pill.blocked{background:#f59e0b33;color:#f59e0b}.db-filters{display:flex;gap:12px;margin-bottom:16px}.db-filters select{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#fff}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid #334155;color:#64748b;font-size:.85rem}.empty{padding:20px;text-align:center;color:#64748b}.hotel-actions{display:flex;gap:8px}.populate-progress{margin-top:16px;padding:16px;background:#0f172a;border-radius:8px;border:1px solid #3b82f6}.progress-header{display:flex;justify-content:space-between;margin-bottom:12px;font-weight:600}.progress-pct{color:#3b82f6;font-size:1.2rem}.progress-bar{height:8px;background:#334155;border-radius:4px;overflow:hidden;margin-bottom:12px}.progress-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#22c55e);transition:width .3s ease}.progress-details{display:flex;gap:16px;font-size:.85rem;color:#94a3b8}.progress-details .status-badge{padding:2px 8px;border-radius:4px;font-size:.75rem}.status-badge.running{background:#3b82f633;color:#3b82f6}.status-badge.completed{background:#22c55e33;color:#22c55e}.status-badge.failed{background:#ef444433;color:#ef4444}.progress-done{margin-top:12px;padding:12px;background:#22c55e1a;border-radius:6px;color:#22c55e;display:flex;justify-content:space-between;align-items:center}.progress-error{margin-top:12px;padding:12px;background:#ef44441a;border-radius:6px;color:#ef4444;display:flex;justify-content:space-between;align-items:center}.report-controls{display:flex;gap:12px;margin-bottom:20px}.report-controls select{padding:8px 12px;background:#0f172a;border:1px solid #334155;border-radius:6px;color:#fff;min-width:200px}.report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.summary-stat{background:#0f172a;padding:16px;border-radius:8px;text-align:center}.summary-stat .value{display:block;font-size:2rem;font-weight:700;color:#3b82f6}.summary-stat .label{font-size:.8rem;color:#64748b}.recommendations{background:#3b82f61a;border:1px solid #3b82f6;border-radius:8px;padding:16px;margin-bottom:20px}.recommendations h4{margin-bottom:12px;color:#3b82f6}.recommendations ul{margin:0;padding-left:20px}.recommendations li{margin-bottom:6px;color:#94a3b8}.anomalies-list h4,.problematic-dates h4{margin-bottom:12px;color:#94a3b8}.anomaly-card{background:#0f172a;border-radius:8px;padding:12px;margin-bottom:8px;border-left:4px solid #64748b}.anomaly-card.high{border-left-color:#ef4444}.anomaly-card.medium{border-left-color:#f59e0b}.anomaly-card.low{border-left-color:#22c55e}.anomaly-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.anomaly-type{font-weight:600}.severity-badge{padding:2px 8px;border-radius:4px;font-size:.75rem;text-transform:uppercase}.severity-badge.high{background:#ef444433;color:#ef4444}.severity-badge.medium{background:#f59e0b33;color:#f59e0b}.severity-badge.low{background:#22c55e33;color:#22c55e}.anomaly-details{color:#94a3b8;font-size:.9rem;margin-bottom:4px}.anomaly-dates{font-size:.8rem;color:#64748b}.problematic-dates{margin-top:20px}.mini-bml{font-size:.85rem}.mini-bml .beat{color:#22c55e}.mini-bml .meet{color:#f59e0b}.mini-bml .lose{color:#ef4444}.no-issues{padding:20px;text-align:center;color:#22c55e;background:#22c55e1a;border-radius:8px}
