:root{--colour-primary: #f97316;--colour-primary-hover: #ea580c;--colour-primary-light: #fff7ed;--colour-secondary: #6366f1;--colour-secondary-hover: #4f46e5;--colour-success: #10b981;--colour-success-light: #d1fae5;--colour-warning: #f59e0b;--colour-warning-light: #fef3c7;--colour-error: #ef4444;--colour-error-light: #fee2e2;--colour-background: #fefefe;--colour-surface: #ffffff;--colour-border: #f1f5f9;--colour-text: #1e293b;--colour-text-muted: #94a3b8;--colour-header: #ffffff;--colour-header-text: #1e293b;--font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-2xl: 1.25rem;--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / .04);--shadow-md: 0 4px 12px -2px rgb(0 0 0 / .06);--shadow-lg: 0 12px 24px -4px rgb(0 0 0 / .08);--shadow-xl: 0 20px 40px -8px rgb(0 0 0 / .1);--transition-fast: .15s ease;--transition-normal: .25s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--colour-text);background-color:var(--colour-background);line-height:1.6;min-height:100vh}a{color:var(--colour-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--colour-primary-hover);text-decoration:underline}button{cursor:pointer;font-family:inherit;border:none;background:none}img,svg{display:block;max-width:100%}input,select,textarea{font-family:inherit;font-size:inherit}#app{min-height:100vh;display:flex;flex-direction:column}#app>*:not(.app-footer):not(.landing-page){flex:1}.app-footer{margin-top:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px}.app-header{background-color:var(--colour-header);color:var(--colour-header-text);padding:var(--space-3) var(--space-4);position:sticky;top:0;z-index:100;border-bottom:1px solid var(--colour-border)}.header-content{display:flex;align-items:center;justify-content:space-between;max-width:1200px;margin:0 auto}.header-logo{font-family:"Fredoka",var(--font-family);font-size:1.5rem;font-weight:700;color:var(--colour-primary);text-decoration:none;letter-spacing:-.01em}.header-logo:hover{color:var(--colour-primary-hover);text-decoration:none}.landing-header .header-logo{font-size:2.25rem}.header-nav{display:none;align-items:center;gap:var(--space-3)}.header-nav.nav-open{display:flex;flex-direction:column;position:absolute;top:100%;left:0;right:0;background-color:var(--colour-surface);padding:var(--space-4);box-shadow:var(--shadow-lg);border-bottom:1px solid var(--colour-border)}.mobile-menu-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);color:var(--colour-text)}.mobile-menu-btn:hover{background-color:var(--colour-primary-light)}.hamburger{display:block;width:20px;height:2px;background-color:currentColor;position:relative}.hamburger:before,.hamburger:after{content:"";position:absolute;width:20px;height:2px;background-color:currentColor;left:0}.hamburger:before{top:-6px}.hamburger:after{top:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;line-height:1.5;transition:all var(--transition-fast);white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--colour-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--colour-primary-hover)}.btn-secondary{background-color:var(--colour-surface);color:var(--colour-text);border:1px solid var(--colour-border)}.btn-secondary:hover:not(:disabled){background-color:var(--colour-background);border-color:var(--colour-secondary)}.btn-danger{background-color:var(--colour-error);color:#fff}.btn-danger:hover:not(:disabled){background-color:#b91c1c}.btn-ghost{color:var(--colour-text-muted);background:transparent}.btn-ghost:hover:not(:disabled){background-color:var(--colour-primary-light);color:var(--colour-primary)}.btn-danger-ghost{color:var(--colour-error);background:transparent;padding:var(--space-1)}.btn-danger-ghost:hover:not(:disabled){background-color:var(--colour-error-light)}.btn-icon{padding:var(--space-1) var(--space-2);font-size:var(--font-size-sm)}.btn-full{width:100%}.form-group{display:flex;flex-direction:column;gap:var(--space-1)}.form-group label{font-size:var(--font-size-sm);font-weight:500;color:var(--colour-text)}.form-group input,.form-group select,.form-group textarea{padding:var(--space-2) var(--space-3);border:1px solid var(--colour-border);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--colour-text);background-color:var(--colour-surface);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--colour-primary);box-shadow:0 0 0 3px var(--colour-primary-light);outline:none}.form-group textarea{resize:vertical;min-height:100px}.form-hint{font-size:var(--font-size-xs);color:var(--colour-text-muted)}.form-row{display:grid;grid-template-columns:1fr;gap:var(--space-4)}.form-error{color:var(--colour-error);font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);background-color:var(--colour-error-light);border-radius:var(--radius-sm)}.form-success{color:var(--colour-success);font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);background-color:var(--colour-success-light);border-radius:var(--radius-sm)}.form-description{font-size:var(--font-size-sm);color:var(--colour-text-muted);margin-bottom:var(--space-4)}.form-section-heading{font-size:var(--font-size-lg);margin-bottom:var(--space-2)}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-4);background:linear-gradient(160deg,#fff7ed,#fef3c7,#dbeafe)}.auth-container{width:100%;max-width:420px;text-align:center}.auth-title{font-family:"Fredoka",var(--font-family);font-size:var(--font-size-3xl);font-weight:700;color:var(--colour-primary);margin-bottom:var(--space-2);letter-spacing:-.01em}.auth-subtitle{color:var(--colour-text-muted);margin-bottom:var(--space-8)}.auth-form{background:var(--colour-surface);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);display:flex;flex-direction:column;gap:var(--space-4);text-align:left}.auth-form-heading{font-size:var(--font-size-xl);text-align:center;margin-bottom:var(--space-2)}.auth-error{color:var(--colour-error);font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);background-color:var(--colour-error-light);border-radius:var(--radius-sm);text-align:center}.auth-success{color:var(--colour-success);font-size:var(--font-size-sm);padding:var(--space-2) var(--space-3);background-color:var(--colour-success-light);border-radius:var(--radius-sm);text-align:center}.auth-links{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm)}.dashboard-main{max-width:1200px;margin:0 auto;padding:var(--space-6) var(--space-4)}.dashboard-widgets{display:flex;gap:var(--space-4);margin-bottom:var(--space-6);flex-wrap:wrap}.widget{display:flex;align-items:center;gap:var(--space-3);background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-xl);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-sm);text-decoration:none;color:inherit;transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.widget:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.widget-countdown{flex-direction:column;align-items:center;text-align:center;min-width:140px}.widget-active-trip .widget-number{font-size:2rem}.widget-active-trip .widget-label{font-weight:600;color:var(--colour-text)}.widget-number{font-size:2.5rem;font-weight:800;line-height:1;color:var(--colour-primary)}.widget-label{font-size:.85rem;color:var(--colour-text-muted)}.widget-detail{font-size:.9rem;font-weight:600;margin-top:var(--space-1)}.widget-next-up{flex:1;min-width:250px}.widget-icon{font-size:1.75rem}.widget-next-info{display:flex;flex-direction:column;gap:2px}.widget-next-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--colour-text-muted);font-weight:600}.widget-next-detail{font-size:.95rem;font-weight:600}.widget-next-time{font-size:.85rem;color:var(--colour-text-muted)}.widget-weather{margin-left:auto;font-size:1.1rem}.weather-badge{display:inline-flex;align-items:center;gap:2px;font-size:.8rem;color:var(--colour-text-muted);text-decoration:none;padding:2px 6px;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.weather-badge:hover{background:var(--colour-border);color:var(--colour-text)}.weather-badge-sm{font-size:.75rem}.day-weather{margin-left:var(--space-2)}.day-weather .weather-badge{font-size:.8rem}.trip-card-weather{margin-left:var(--space-2)}.past-trips-section{margin-top:var(--space-6);border-top:1px solid var(--colour-border);padding-top:var(--space-4);grid-column:1 / -1}.past-trips-toggle{cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.past-trips-toggle::-webkit-details-marker{display:none}.past-trips-heading{font-size:var(--font-size-lg);font-weight:600;color:var(--colour-text-muted);display:flex;align-items:center;gap:var(--space-2)}.past-trips-heading:before{content:"▸";transition:transform .2s}.past-trips-section[open] .past-trips-heading:before{transform:rotate(90deg)}.past-trips-count{font-size:var(--font-size-sm);font-weight:400}.past-trips-grid{margin-top:var(--space-4);display:grid;grid-template-columns:1fr;gap:var(--space-4)}.past-trips-grid .trip-card{opacity:.75}.past-trips-grid .trip-card:hover{opacity:1}@media (max-width: 600px){.dashboard-widgets{flex-direction:column}.widget-countdown{flex-direction:row;min-width:unset;text-align:left}.widget-number{font-size:2rem}}.dashboard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6);flex-wrap:wrap;gap:var(--space-4)}.dashboard-header h1{font-size:var(--font-size-2xl);font-weight:700}.trips-grid{display:grid;grid-template-columns:1fr;gap:var(--space-4)}.trip-card{background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast),transform var(--transition-fast);cursor:pointer;position:relative}.trip-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.trip-card:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px}.trip-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2);margin-bottom:var(--space-2)}.trip-card-title{font-size:var(--font-size-lg);font-weight:600;color:var(--colour-text)}.trip-card-badge{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500;white-space:nowrap}.badge-collaborator{background-color:var(--colour-warning-light);color:var(--colour-warning)}.trip-card-dates{font-size:var(--font-size-sm);color:var(--colour-text-muted)}.trip-dates-text{color:var(--colour-text-muted)}.delete-trip-btn{position:absolute;bottom:var(--space-3);right:var(--space-3)}.trip-main{max-width:900px;margin:0 auto;padding:var(--space-6) var(--space-4)}.trip-page-header{margin-bottom:var(--space-4)}.trip-title-row{display:flex;align-items:center;gap:var(--space-3)}.trip-title{font-size:var(--font-size-2xl);font-weight:700}.trip-dates{font-size:var(--font-size-sm);color:var(--colour-text-muted);margin-top:var(--space-1)}.trip-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-6);padding-bottom:var(--space-4);border-bottom:1px solid var(--colour-border);align-items:center}.trip-action-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding:var(--space-2) var(--space-6) var(--space-2) var(--space-3);border:1px solid var(--colour-border);border-radius:var(--radius-2xl);background-color:var(--colour-surface);color:var(--colour-text);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;transition:all var(--transition-fast)}.trip-action-select:hover{border-color:var(--colour-primary)}.trip-action-select:focus{outline:2px solid var(--colour-primary);outline-offset:1px}.trip-switcher{display:inline-block}.trip-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding:var(--space-2) var(--space-6) var(--space-2) var(--space-3);border:1px solid var(--colour-border);border-radius:var(--radius-2xl);background-color:var(--colour-primary-light);color:var(--colour-text);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;transition:all var(--transition-fast)}.trip-select:hover{border-color:var(--colour-primary);background-color:var(--colour-surface)}.trip-select:focus{outline:none;border-color:var(--colour-primary);box-shadow:0 0 0 3px var(--colour-primary-light)}.trip-select option{color:var(--colour-text);background:var(--colour-surface);padding:var(--space-2)}.collaborators-section{margin-bottom:var(--space-6);padding:var(--space-4);background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-lg)}.collaborators-heading{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--space-3)}.collaborators-list{display:flex;flex-direction:column;gap:var(--space-2)}.collaborator-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);border-radius:var(--radius-sm)}.collaborator-email{font-size:var(--font-size-sm);flex:1}.collaborator-status{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-weight:500}.badge-accepted{background-color:var(--colour-success-light);color:var(--colour-success)}.badge-pending{background-color:var(--colour-warning-light);color:var(--colour-warning)}.collaborators-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.collaborators-header .collaborators-heading{margin-bottom:0}.add-collab-btn{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-lg);font-weight:700;border-radius:50%;background-color:var(--colour-primary-light);color:var(--colour-primary);padding:0;line-height:1;transition:all var(--transition-fast)}.add-collab-btn:hover{background-color:var(--colour-primary);color:#fff;transform:scale(1.1)}.collaborators-actions{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--colour-border)}.invitations-section{margin-bottom:var(--space-6)}.invitations-heading{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-3);color:var(--colour-text)}.invitations-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.invitation-card{padding:var(--space-4);background:var(--colour-surface);border:2px dashed var(--colour-warning);border-radius:var(--radius-lg);position:relative}.invitation-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-2)}.invitation-card-title{font-size:var(--font-size-base);font-weight:600;margin:0}.invitation-actions{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.itinerary-container{margin-top:var(--space-4)}.timeline{display:flex;flex-direction:column;gap:var(--space-6)}.timeline-day{display:flex;flex-direction:column;gap:var(--space-3)}.timeline-date-heading{font-size:var(--font-size-base);font-weight:600;color:var(--colour-text);padding-bottom:var(--space-2);border-bottom:2px solid var(--colour-primary);margin-bottom:var(--space-2)}.timeline-date-heading--no-date{color:var(--colour-text-muted);border-bottom-color:var(--colour-border)}.timeline-date-heading-row{display:flex;align-items:center;gap:var(--space-2)}.timeline-date-heading-row .timeline-date-heading{flex:1}.btn-add-activity{width:24px;height:24px;border-radius:50%;background-color:var(--colour-primary-light);color:var(--colour-primary);font-size:var(--font-size-lg);font-weight:700;display:flex;align-items:center;justify-content:center;line-height:1;transition:all var(--transition-fast);flex-shrink:0}.btn-add-activity:hover{background-color:var(--colour-primary);color:#fff;transform:scale(1.1)}.quick-add-form{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--colour-primary-light);border-radius:var(--radius-lg);margin-bottom:var(--space-3);flex-wrap:wrap}.quick-add-input{flex:1;min-width:150px;padding:var(--space-2) var(--space-3);border:1px solid var(--colour-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--colour-surface)}.quick-add-input:focus{border-color:var(--colour-primary);outline:none;box-shadow:0 0 0 2px var(--colour-primary-light)}.quick-add-time{width:90px;padding:var(--space-2);border:1px solid var(--colour-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--colour-surface)}.quick-add-time-group{display:flex;align-items:center;gap:var(--space-1)}.quick-add-time-toggle{font-size:var(--font-size-sm);color:var(--colour-text-muted);white-space:nowrap}.quick-add-time-selects{display:flex;align-items:center;gap:var(--space-1)}.quick-add-time-selects[hidden]{display:none}.quick-add-time-group select{padding:var(--space-2);border:1px solid var(--colour-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);background:var(--colour-surface)}.quick-add-time-group span{font-weight:600;color:var(--colour-text-muted)}.quick-add-actions{display:flex;gap:var(--space-1)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.timeline-bookings{display:flex;flex-direction:column;gap:var(--space-3)}.booking-card{background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast);cursor:pointer;border-left:4px solid var(--colour-border)}.booking-card:hover{box-shadow:var(--shadow-md)}.booking-card:focus-visible{outline:2px solid var(--colour-primary);outline-offset:2px}.booking-card--flight{border-left-color:var(--booking-flight)}.booking-card--ferry{border-left-color:var(--booking-ferry)}.booking-card--hotel{border-left-color:var(--booking-hotel)}.booking-card--campsite{border-left-color:var(--booking-campsite)}.booking-card--show_ticket{border-left-color:var(--booking-show-ticket)}.booking-card--car_hire{border-left-color:var(--booking-car-hire)}.booking-card--train{border-left-color:var(--booking-train)}.booking-card--bus_coach{border-left-color:var(--booking-bus-coach)}.booking-card--cruise{border-left-color:var(--booking-cruise)}.booking-card--parking{border-left-color:var(--booking-parking)}.booking-card--taxi_transfer{border-left-color:var(--booking-taxi-transfer)}.booking-card--motorhome_hire{border-left-color:var(--booking-motorhome-hire)}.booking-card--cottage_villa{border-left-color:var(--booking-cottage-villa)}.booking-card--theme_park{border-left-color:var(--booking-theme-park)}.booking-card--restaurant{border-left-color:var(--booking-restaurant)}.booking-card--spa_activity{border-left-color:var(--booking-spa-activity)}.booking-card--travel_insurance{border-left-color:var(--booking-travel-insurance)}.booking-card--visa_entry{border-left-color:var(--booking-visa-entry)}.booking-card--activity{border-left-color:var(--booking-activity)}.booking-card--needs-booking{border-left-style:dashed;border-left-width:4px;background:repeating-linear-gradient(-45deg,var(--colour-surface),var(--colour-surface) 8px,#fffbeb 8px,#fffbeb 16px)}.needs-booking-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);background-color:var(--colour-warning-light);color:#92400e;border-radius:var(--radius-sm);font-weight:600}.quick-add-checkbox{display:flex;align-items:center;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--colour-text-muted);cursor:pointer;white-space:nowrap}.quick-add-checkbox input[type=checkbox]{width:16px;height:16px;accent-color:var(--colour-warning)}.booking-card-summary{display:flex;align-items:flex-start;gap:var(--space-3)}.booking-card-icon{font-size:var(--font-size-2xl);flex-shrink:0;line-height:1}.booking-card-info{flex:1;min-width:0}.booking-card-top-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-bottom:var(--space-1)}.booking-ref{font-size:var(--font-size-xs);color:var(--colour-text-muted);font-family:monospace}.booking-card-provider{font-size:var(--font-size-base);font-weight:600;margin-bottom:var(--space-1)}.booking-card-meta{font-size:var(--font-size-sm);color:var(--colour-text-muted)}.booking-meta-text{display:inline-flex;align-items:center;gap:var(--space-1)}.booking-card-actions{display:flex;gap:var(--space-1);flex-shrink:0;align-items:center}.booking-notes-icon{position:relative;cursor:default;font-size:.9rem;opacity:.7}.booking-inferred-icon{cursor:default;font-size:.8rem;opacity:.7}.booking-inferred-icon:hover,.booking-notes-icon:hover{opacity:1}.booking-notes-icon:after{content:attr(title);position:absolute;bottom:100%;right:0;background:var(--colour-text);color:var(--colour-surface);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:.8rem;white-space:pre-wrap;max-width:250px;width:max-content;opacity:0;pointer-events:none;transition:opacity .15s;z-index:10;line-height:1.4}.booking-notes-icon:hover:after{opacity:1}.booking-card-detail{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--colour-border)}.booking-continuation{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border-left:4px solid var(--colour-border);border-radius:var(--radius-md);background:repeating-linear-gradient(-45deg,transparent,transparent 4px,rgba(0,0,0,.02) 4px,rgba(0,0,0,.02) 8px);opacity:.85;font-size:var(--font-size-sm);color:var(--colour-text-muted)}.booking-continuation--hotel{border-left-color:var(--booking-hotel)}.booking-continuation--campsite{border-left-color:var(--booking-campsite)}.booking-continuation--cottage_villa{border-left-color:var(--booking-cottage-villa)}.booking-continuation--motorhome_hire{border-left-color:var(--booking-motorhome-hire)}.continuation-icon{font-size:var(--font-size-lg);flex-shrink:0}.continuation-text{flex:1}.continuation-text strong{color:var(--colour-text);font-weight:500}.booking-checkout{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);border-left:4px solid var(--colour-border);border-radius:var(--radius-md);background-color:var(--colour-primary-light);font-size:var(--font-size-sm);color:var(--colour-text-muted)}.booking-checkout--campsite{border-left-color:var(--booking-campsite)}.booking-checkout--hotel{border-left-color:var(--booking-hotel)}.booking-checkout--cottage_villa{border-left-color:var(--booking-cottage-villa)}.booking-checkout--motorhome_hire{border-left-color:var(--booking-motorhome-hire)}.booking-night-badge{display:inline-block;font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2);background-color:var(--colour-primary-light);color:var(--colour-primary);border-radius:var(--radius-sm);font-weight:500;margin-left:var(--space-2)}.detail-fields{display:grid;grid-template-columns:1fr;gap:var(--space-2)}.detail-field{display:flex;gap:var(--space-2)}.detail-label{font-size:var(--font-size-sm);font-weight:500;color:var(--colour-text-muted);min-width:100px}.detail-value{font-size:var(--font-size-sm);color:var(--colour-text)}.booking-form,.booking-form-section,.booking-edit-form,#save-booking-form{display:flex;flex-direction:column;gap:var(--space-4)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#00000080;display:none;align-items:center;justify-content:center;padding:var(--space-4);z-index:10000;overflow-y:auto}.modal-overlay:not([hidden]){display:flex}.modal{background:var(--colour-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-sm{max-width:400px}.modal-lg{max-width:650px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--colour-border)}.modal-header h2{font-size:var(--font-size-lg);font-weight:600}.modal-close{font-size:var(--font-size-2xl);line-height:1;color:var(--colour-text-muted);padding:var(--space-1);border-radius:var(--radius-sm)}.modal-close:hover{color:var(--colour-text);background-color:var(--colour-background)}.modal-body{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-4)}.loading-spinner{text-align:center;padding:var(--space-8);color:var(--colour-text-muted)}.loading-inline{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--colour-text-muted)}.spinner-sm{display:inline-block;width:16px;height:16px;border:2px solid var(--colour-border);border-top-color:var(--colour-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:var(--space-12) var(--space-4);color:var(--colour-text-muted)}.error-state{text-align:center;padding:var(--space-8)}.error-text{color:var(--colour-error)}.text-muted{color:var(--colour-text-muted)}@media (min-width: 640px){.form-row{grid-template-columns:1fr 1fr}.trips-grid{grid-template-columns:repeat(2,1fr)}.detail-fields{grid-template-columns:1fr 1fr}}@media (min-width: 1024px){.mobile-menu-btn{display:none}.header-nav{display:flex;position:static;flex-direction:row;background:none;padding:0;box-shadow:none}.trips-grid{grid-template-columns:repeat(3,1fr)}.dashboard-main,.trip-main{padding:var(--space-8) var(--space-6)}.booking-card-summary{align-items:center}}@media (min-width: 1280px){.trips-grid{grid-template-columns:repeat(4,1fr)}}@media print{.app-header,.trip-actions,.booking-card-actions,.modal-overlay{display:none}.booking-card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}.landing-page{min-height:100vh;background:var(--colour-background)}.landing-header{padding:var(--space-4) var(--space-6);position:sticky;top:0;background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;border-bottom:1px solid var(--colour-border)}.landing-header-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.landing-nav{display:flex;align-items:center;gap:var(--space-3)}.btn-ghost-dark{color:var(--colour-text);background:transparent;padding:var(--space-2) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:500;text-decoration:none}.btn-ghost-dark:hover{background-color:var(--colour-primary-light);color:var(--colour-primary);text-decoration:none}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-base);border-radius:var(--radius-lg)}.hero{max-width:1200px;margin:0 auto;padding:var(--space-16) var(--space-6);display:grid;grid-template-columns:1fr;gap:var(--space-12);align-items:center}.hero-title{font-size:2.5rem;font-weight:800;color:var(--colour-text);line-height:1.1;letter-spacing:-.03em;margin-bottom:var(--space-4)}.hero-emoji{display:inline-block;animation:float 3s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.hero-subtitle{font-size:var(--font-size-lg);color:var(--colour-text-muted);line-height:1.6;max-width:500px;margin-bottom:var(--space-8)}.hero-cta{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2)}.hero-cta-note{font-size:var(--font-size-sm);color:var(--colour-text-muted)}.hero-visual{display:flex;justify-content:center}.hero-mockup{background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-2xl);padding:var(--space-6);box-shadow:var(--shadow-xl);width:100%;max-width:380px;transform:rotate(1deg)}.mockup-day{margin-bottom:var(--space-4)}.mockup-day:last-child{margin-bottom:0}.mockup-date{font-size:var(--font-size-sm);font-weight:600;color:var(--colour-text);padding-bottom:var(--space-1);border-bottom:2px solid var(--colour-primary);margin-bottom:var(--space-2)}.mockup-card{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-1);border-left:3px solid var(--colour-border);background:var(--colour-background)}.mockup-card--flight{border-left-color:#3b82f6}.mockup-card--hotel{border-left-color:#8b5cf6}.mockup-card--activity{border-left-color:#f472b6}.mockup-card--restaurant{border-left-color:#f43f5e}.mockup-card--theme{border-left-color:#ec4899;border-left-style:dashed}.mockup-badge{font-size:var(--font-size-xs);background:var(--colour-warning-light);color:#92400e;padding:.1em .4em;border-radius:var(--radius-sm);font-weight:500;margin-left:auto}.features{max-width:1200px;margin:0 auto;padding:var(--space-16) var(--space-6)}.features-title{font-size:var(--font-size-2xl);font-weight:700;text-align:center;margin-bottom:var(--space-10);color:var(--colour-text)}.features-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6)}.feature-card{text-align:center;padding:var(--space-6);border-radius:var(--radius-xl);background:var(--colour-surface);border:1px solid var(--colour-border);transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.feature-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.feature-icon{font-size:2rem;margin-bottom:var(--space-3)}.feature-card h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-2);color:var(--colour-text)}.feature-card p{font-size:var(--font-size-sm);color:var(--colour-text-muted);line-height:1.6}.cta-section{text-align:center;padding:var(--space-16) var(--space-6);background:linear-gradient(160deg,#fff7ed,#fef3c7,#dbeafe)}.cta-section h2{font-size:var(--font-size-2xl);font-weight:700;margin-bottom:var(--space-3);color:var(--colour-text)}.cta-section p{font-size:var(--font-size-lg);color:var(--colour-text-muted);margin-bottom:var(--space-6)}.landing-footer{text-align:center;padding:var(--space-8) var(--space-6);color:var(--colour-text-muted);font-size:var(--font-size-sm)}.landing-footer-brand{font-weight:600;color:var(--colour-primary);margin-top:var(--space-2)}@media (min-width: 640px){.features-grid{grid-template-columns:repeat(2,1fr)}.hero-title{font-size:3rem}}@media (min-width: 1024px){.hero{grid-template-columns:1fr 1fr;padding:var(--space-16) var(--space-6)}.features-grid{grid-template-columns:repeat(3,1fr)}.hero-title{font-size:3.5rem}}.account-main{max-width:600px;margin:0 auto;padding:var(--space-8) var(--space-4)}.account-main h1{font-size:var(--font-size-2xl);font-weight:700;margin-bottom:var(--space-8)}.account-section{margin-bottom:var(--space-8);padding:var(--space-6);background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-xl)}.account-section h2{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-4)}.account-section--danger{border-color:var(--colour-error-light)}.account-section--danger h2{color:var(--colour-error)}.account-section--danger p{font-size:var(--font-size-sm);color:var(--colour-text-muted);margin-bottom:var(--space-4)}.account-form{display:flex;flex-direction:column;gap:var(--space-4)}.profile-info{display:flex;flex-direction:column;gap:var(--space-3)}.profile-field{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) 0;border-bottom:1px solid var(--colour-border)}.profile-field:last-child{border-bottom:none}.profile-label{font-size:var(--font-size-sm);color:var(--colour-text-muted);font-weight:500}.profile-value{font-size:var(--font-size-sm);color:var(--colour-text)}.parsing-active{position:relative;pointer-events:none;opacity:.4}.parse-loading-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-6);background:var(--colour-surface);border:2px solid var(--colour-primary);border-radius:var(--radius-xl);text-align:center}.parse-loading-overlay[hidden]{display:none}.parse-loading-text{font-size:var(--font-size-lg);font-weight:600;color:var(--colour-primary)}.parsing-active .parse-loading-overlay{opacity:1;pointer-events:auto;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;z-index:10;background:#ffffffeb;border:none;border-radius:var(--radius-lg)}.source-email-section{margin-top:var(--space-4);border:1px solid var(--colour-border);border-radius:var(--radius-md)}.source-email-toggle{padding:var(--space-3);font-size:var(--font-size-sm);color:var(--colour-text-muted);cursor:pointer;font-weight:500}.source-email-toggle:hover{color:var(--colour-text)}.source-email-content{padding:var(--space-3);font-size:var(--font-size-xs);color:var(--colour-text-muted);background:var(--colour-background);border-top:1px solid var(--colour-border);white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto;font-family:var(--font-family)}.landing-tagline{font-size:var(--font-size-base);font-style:italic;color:var(--colour-primary);font-weight:500;margin-bottom:var(--space-3)}.cookie-banner{position:fixed;bottom:0;left:0;right:0;background:var(--colour-surface);border-top:1px solid var(--colour-border);box-shadow:0 -4px 12px #00000014;padding:var(--space-4) var(--space-6);z-index:300}.cookie-banner-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.cookie-banner-content p{font-size:var(--font-size-sm);color:var(--colour-text-muted);flex:1;min-width:200px}.cookie-banner-actions{display:flex;gap:var(--space-2);flex-shrink:0}.legal-page{max-width:700px;margin:0 auto;padding:var(--space-8) var(--space-4)}.legal-page h1{font-size:var(--font-size-2xl);font-weight:700;margin-bottom:var(--space-2)}.legal-updated{font-size:var(--font-size-sm);color:var(--colour-text-muted);margin-bottom:var(--space-8)}.legal-page section{margin-bottom:var(--space-6)}.legal-page h2{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-2)}.legal-page p{font-size:var(--font-size-sm);color:var(--colour-text);line-height:1.7;margin-bottom:var(--space-3)}.legal-page ul{padding-left:var(--space-6);margin-bottom:var(--space-3)}.legal-page li{font-size:var(--font-size-sm);color:var(--colour-text);line-height:1.7;margin-bottom:var(--space-1)}.terms-checkbox{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--colour-text-muted);cursor:pointer}.terms-checkbox input[type=checkbox]{width:16px;height:16px;margin-top:2px;accent-color:var(--colour-primary);flex-shrink:0}.terms-checkbox a{color:var(--colour-primary)}.landing-footer-links{margin-top:var(--space-2)}.landing-footer-links a{color:var(--colour-text-muted);font-size:var(--font-size-sm)}.landing-footer-links a:hover{color:var(--colour-primary)}.app-footer{text-align:center;padding:var(--space-8) var(--space-6);color:var(--colour-text-muted);font-size:var(--font-size-sm);margin-top:var(--space-12);border-top:1px solid var(--colour-border)}.app-footer-links{margin-top:var(--space-2)}.app-footer-links a{color:var(--colour-text-muted)}.app-footer-links a:hover{color:var(--colour-primary)}.app-footer-brand{font-weight:600;color:var(--colour-primary);margin-top:var(--space-2)}.itinerary-disclaimer{font-size:var(--font-size-xs);color:var(--colour-text-muted);font-style:italic;text-align:center;margin-top:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--colour-border)}.form-row[hidden]{display:none}.trip-extend-row{display:flex;gap:var(--space-2);margin:var(--space-3) 0}.trip-extend-btn{flex:1;text-align:center;padding:var(--space-3);color:var(--colour-text-muted);border:1px dashed var(--colour-border);border-radius:var(--radius-lg);font-size:var(--font-size-sm);transition:all var(--transition-fast)}.trip-extend-btn:hover{color:var(--colour-primary);border-color:var(--colour-primary);background-color:var(--colour-primary-light)}.trip-shrink-btn{flex:0;white-space:nowrap;text-align:center;padding:var(--space-3);color:var(--colour-text-muted);border:1px dashed var(--colour-border);border-radius:var(--radius-lg);font-size:var(--font-size-sm);transition:all var(--transition-fast)}.trip-shrink-btn:hover{color:var(--colour-error);border-color:var(--colour-error);background-color:var(--colour-error-light)}.booking-avatar{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xs);font-weight:600;color:#fff;flex-shrink:0;cursor:default}.avatar-colour-picker{display:flex;gap:var(--space-2);flex-wrap:wrap}.avatar-colour-option{width:32px;height:32px;border-radius:50%;border:3px solid transparent;cursor:pointer;transition:transform var(--transition-fast),border-color var(--transition-fast)}.avatar-colour-option:hover{transform:scale(1.15)}.avatar-colour-selected{border-color:var(--colour-text);transform:scale(1.15)}.booking-card--highlighted{animation:highlight-pulse 2s ease}@keyframes highlight-pulse{0%{box-shadow:0 0 0 3px var(--colour-primary)}to{box-shadow:var(--shadow-sm)}}.badge-owner{background-color:var(--colour-primary-light);color:var(--colour-primary)}.trip-email-address{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-3);background:var(--colour-primary-light);border-radius:var(--radius-lg);flex-wrap:wrap}.trip-email-label{font-size:var(--font-size-sm);color:var(--colour-text-muted);font-weight:500}.trip-email-value{font-size:var(--font-size-sm);font-weight:600;color:var(--colour-primary);background:var(--colour-surface);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);border:1px solid var(--colour-border)}.trip-email-clickable{cursor:pointer;transition:all var(--transition-fast)}.trip-email-clickable:hover{background:var(--colour-primary);color:#fff;border-color:var(--colour-primary)}.trip-email-copied{background:var(--colour-success-light);border-color:var(--colour-success);color:var(--colour-success)}.trip-email-warning{font-size:var(--font-size-xs);color:var(--colour-text-muted);font-style:italic}.copy-email-btn{padding:var(--space-1);font-size:var(--font-size-sm)}.page-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--space-4);color:var(--colour-text-muted)}.page-loading-spinner{width:32px;height:32px;border:3px solid var(--colour-border);border-top-color:var(--colour-primary);border-radius:50%;animation:spin .8s linear infinite}.error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;gap:var(--space-4);padding:var(--space-8)}.error-page h1{font-size:var(--font-size-2xl);color:var(--colour-text)}.error-page p{color:var(--colour-text-muted)}.view-toggle{display:flex;gap:0;margin-bottom:var(--space-4);border:1px solid var(--colour-border);border-radius:var(--radius-2xl);overflow:hidden;width:fit-content}.view-toggle-btn{padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:500;color:var(--colour-text-muted);background:var(--colour-surface);border:none;cursor:pointer;transition:all var(--transition-fast)}.view-toggle-btn.active{background:var(--colour-primary);color:#fff}.view-toggle-btn:hover:not(.active){background:var(--colour-primary-light);color:var(--colour-primary)}.gap-warnings-section{margin-bottom:var(--space-4);border:1px solid var(--colour-warning);border-radius:var(--radius-lg);background:var(--colour-warning-light)}.gap-warnings-toggle{padding:var(--space-3) var(--space-4);cursor:pointer;font-size:var(--font-size-sm);font-weight:500;color:#92400e;list-style:none;-webkit-user-select:none;user-select:none}.gap-warnings-toggle::-webkit-details-marker{display:none}.gap-warnings-toggle:before{content:"▸ ";transition:transform .2s;display:inline-block}.gap-warnings-section[open] .gap-warnings-toggle:before{transform:rotate(90deg)}.gap-warnings-container{display:flex;flex-direction:column;gap:var(--space-2);padding:0 var(--space-4) var(--space-4)}.gap-warning{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px dashed var(--colour-warning);border-radius:var(--radius-lg);background:var(--colour-warning-light);font-size:var(--font-size-sm)}.gap-warning--info{border-color:#93c5fd;background:#eff6ff}.gap-warning-icon{font-size:1.2rem;flex-shrink:0}.gap-warning-message{flex:1;color:var(--colour-text)}.gap-warning-dismiss{background:none;border:none;font-size:1.2rem;color:var(--colour-text-muted);cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm)}.gap-warning-dismiss:hover{background:#0000000d}.drive-time-indicator{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-4);color:var(--colour-text-muted);font-size:var(--font-size-xs)}.drive-time-icon{font-size:.85rem}.drive-time-text{font-weight:500}.map-container{margin-bottom:var(--space-6)}.trip-map-container{width:100%;height:400px;border-radius:var(--radius-lg);border:1px solid var(--colour-border);overflow:hidden}.trip-map-loading{display:flex;align-items:center;justify-content:center;height:300px;color:var(--colour-text-muted)}.map-booking-pin{background:none;border:none}.map-pin-emoji{font-size:1.5rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.map-pin-current .map-pin-emoji{font-size:1.8rem}.map-pin-pulse{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:32px;height:32px;border-radius:50%;background:#f973164d;animation:pinPulse 2s infinite;z-index:-1}@keyframes pinPulse{0%{transform:translate(-50%,-50%) scale(1);opacity:.6}to{transform:translate(-50%,-50%) scale(2.5);opacity:0}}.map-popup{font-size:var(--font-size-sm);line-height:1.5}.map-popup-type{color:var(--colour-text-muted);font-size:var(--font-size-xs)}.map-popup-time{color:var(--colour-text-muted)}.map-popup-location{color:var(--colour-text)}.shared-trip-badge{font-size:var(--font-size-sm);color:var(--colour-text-muted);padding:var(--space-1) var(--space-3);border:1px solid var(--colour-border);border-radius:var(--radius-2xl)}.shared-booking-card{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--colour-surface);border:1px solid var(--colour-border);border-radius:var(--radius-lg);margin-bottom:var(--space-2)}.shared-booking-icon{font-size:1.25rem;flex-shrink:0}.shared-booking-info{display:flex;flex-direction:column;gap:2px}.shared-booking-info strong{font-size:var(--font-size-sm)}.shared-booking-meta{font-size:var(--font-size-xs);color:var(--colour-text-muted)}@media (max-width: 600px){.trip-email-address{flex-direction:column;align-items:flex-start;gap:var(--space-1);padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}.trip-email-label,.trip-email-value{font-size:var(--font-size-xs)}.trip-email-warning{font-size:.65rem}.trip-actions{gap:var(--space-1);padding-bottom:var(--space-2);margin-bottom:var(--space-3)}.trip-actions .btn{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-2)}.trip-action-select{font-size:var(--font-size-xs);padding:var(--space-1) var(--space-5) var(--space-1) var(--space-2)}#export-ics-btn,#export-pdf-btn{display:none}.view-toggle{margin-bottom:var(--space-2)}.view-toggle-btn{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}.collaborators-section:has(.text-muted){display:none}.gap-warnings-section{margin-bottom:var(--space-2)}.gap-warnings-toggle{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}}:root{--booking-flight: #3b82f6;--booking-ferry: #06b6d4;--booking-hotel: #8b5cf6;--booking-campsite: #22c55e;--booking-show-ticket: #f59e0b;--booking-car-hire: #ef4444;--booking-train: #f97316;--booking-bus-coach: #84cc16;--booking-cruise: #0ea5e9;--booking-parking: #6b7280;--booking-taxi-transfer: #eab308;--booking-motorhome-hire: #10b981;--booking-cottage-villa: #a855f7;--booking-theme-park: #ec4899;--booking-restaurant: #f43f5e;--booking-spa-activity: #14b8a6;--booking-travel-insurance: #64748b;--booking-visa-entry: #1d4ed8;--booking-activity: #f472b6}.booking-type-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#fff}.booking-type-badge--flight{background-color:var(--booking-flight)}.booking-type-badge--ferry{background-color:var(--booking-ferry)}.booking-type-badge--hotel{background-color:var(--booking-hotel)}.booking-type-badge--campsite{background-color:var(--booking-campsite)}.booking-type-badge--show_ticket{background-color:var(--booking-show-ticket)}.booking-type-badge--car_hire{background-color:var(--booking-car-hire)}.booking-type-badge--train{background-color:var(--booking-train)}.booking-type-badge--bus_coach{background-color:var(--booking-bus-coach)}.booking-type-badge--cruise{background-color:var(--booking-cruise)}.booking-type-badge--parking{background-color:var(--booking-parking)}.booking-type-badge--taxi_transfer{background-color:var(--booking-taxi-transfer)}.booking-type-badge--motorhome_hire{background-color:var(--booking-motorhome-hire)}.booking-type-badge--cottage_villa{background-color:var(--booking-cottage-villa)}.booking-type-badge--theme_park{background-color:var(--booking-theme-park)}.booking-type-badge--restaurant{background-color:var(--booking-restaurant)}.booking-type-badge--spa_activity{background-color:var(--booking-spa-activity)}.booking-type-badge--travel_insurance{background-color:var(--booking-travel-insurance)}.booking-type-badge--visa_entry{background-color:var(--booking-visa-entry)}.booking-type-badge--activity{background-color:var(--booking-activity)}.booking-icon--flight:before{content:"✈"}.booking-icon--ferry:before{content:"⛴"}.booking-icon--hotel:before{content:"🏨"}.booking-icon--campsite:before{content:"⛺"}.booking-icon--show_ticket:before{content:"🎭"}.booking-icon--car_hire:before{content:"🚗"}.booking-icon--train:before{content:"🚆"}.booking-icon--bus_coach:before{content:"🚌"}.booking-icon--cruise:before{content:"🚢"}.booking-icon--parking:before{content:"🅿"}.booking-icon--taxi_transfer:before{content:"🚕"}.booking-icon--motorhome_hire:before{content:"🚐"}.booking-icon--cottage_villa:before{content:"🏡"}.booking-icon--theme_park:before{content:"🎡"}.booking-icon--restaurant:before{content:"🍽"}.booking-icon--spa_activity:before{content:"💆"}.booking-icon--travel_insurance:before{content:"🛡"}.booking-icon--visa_entry:before{content:"🛂"}.booking-icon--activity:before{content:"🎯"}.admin-main{max-width:1200px;margin:0 auto;padding:2rem 1.5rem}.admin-main h1{margin-bottom:2rem}.admin-section{margin-bottom:2.5rem;background:var(--surface, #fff);border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #00000014}.admin-section h2{margin-bottom:1rem;font-size:1.25rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem}.stat-card{display:flex;flex-direction:column;align-items:center;padding:1.25rem 1rem;background:var(--bg, #f9fafb);border-radius:8px;border:1px solid var(--border, #e5e7eb)}.stat-value{font-size:2rem;font-weight:700;color:var(--primary, #f97316);line-height:1.2}.stat-label{font-size:.85rem;color:var(--text-muted, #6b7280);margin-top:.25rem}.health-panel{display:flex;flex-direction:column;gap:.75rem}.health-status{display:flex;align-items:center;gap:.5rem;font-size:1rem}.health-indicator{width:12px;height:12px;border-radius:50%;display:inline-block}.health-ok .health-indicator{background:#22c55e;box-shadow:0 0 6px #22c55e66}.health-degraded .health-indicator{background:#ef4444;box-shadow:0 0 6px #ef444466}.health-details{display:flex;flex-wrap:wrap;gap:1rem}.health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-top:1rem}.health-card{background:var(--bg, #f9fafb);border:1px solid var(--border, #e5e7eb);border-radius:8px;padding:1rem}.health-card h4{margin:0 0 .75rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted, #6b7280)}.health-item{display:flex;gap:.5rem;font-size:.9rem}.health-item-label{color:var(--text-muted, #6b7280)}.text-success{color:#22c55e}.text-danger{color:#ef4444}.admin-toolbar{display:flex;gap:.75rem;margin-bottom:1rem}.admin-search-input{flex:1;max-width:400px;padding:.5rem .75rem;border:1px solid var(--border, #e5e7eb);border-radius:6px;font-size:.9rem}.admin-search-input:focus{outline:2px solid var(--primary, #f97316);outline-offset:1px}.admin-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table th,.admin-table td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--border, #e5e7eb);white-space:nowrap}.admin-table th{font-weight:600;color:var(--text-muted, #6b7280);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.admin-table tbody tr:hover{background:var(--bg, #f9fafb)}.row-disabled{opacity:.6}.admin-actions{display:flex;gap:.4rem;flex-wrap:wrap}.admin-user-count{font-size:.85rem;color:var(--text-muted, #6b7280);margin-bottom:.75rem}.badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500}.badge-plan{background:#e0e7ff;color:#3730a3}.badge-active{background:#dcfce7;color:#166534}.badge-disabled{background:#fee2e2;color:#991b1b}.btn-xs{padding:.25rem .5rem;font-size:.75rem;border-radius:4px}.btn-active{background:var(--primary, #f97316);color:#fff}.admin-pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border, #e5e7eb)}.pagination-info{font-size:.85rem;color:var(--text-muted, #6b7280)}@media (max-width: 768px){.admin-main{padding:1rem}.stats-grid{grid-template-columns:repeat(2,1fr)}.admin-toolbar{flex-direction:column}.admin-search-input{max-width:100%}.admin-table{font-size:.8rem}.admin-table th,.admin-table td{padding:.4rem .5rem}}.install-banner{position:fixed;bottom:0;left:0;right:0;z-index:1000;background:var(--colour-surface, #fff);border-top:1px solid var(--colour-border, #e5e7eb);box-shadow:0 -4px 12px #0000001a;padding:12px 16px;animation:slideUp .3s ease-out}.install-banner--hiding{animation:slideDown .3s ease-in forwards}.install-banner-content{display:flex;align-items:center;gap:12px;max-width:600px;margin:0 auto}.install-banner-icon{font-size:1.5rem;flex-shrink:0}.install-banner-text{display:flex;flex-direction:column;flex:1;min-width:0}.install-banner-text strong{font-size:.9rem;color:var(--colour-text, #1e293b)}.install-banner-text span{font-size:.8rem;color:var(--colour-text-muted, #64748b)}.install-banner-btn{flex-shrink:0}.install-banner-dismiss{background:none;border:none;font-size:1.25rem;color:var(--colour-text-muted, #64748b);cursor:pointer;padding:4px 8px;flex-shrink:0}.offline-indicator{position:fixed;top:0;left:0;right:0;z-index:1001;background:#fef3c7;color:#92400e;text-align:center;padding:6px 12px;font-size:.8rem;font-weight:500;animation:slideDown-in .3s ease-out}.offline-indicator--hidden{animation:slideUp-out .3s ease-in forwards}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes slideDown-in{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes slideUp-out{0%{transform:translateY(0)}to{transform:translateY(-100%)}}
