@import"https://fonts.googleapis.com/css2?family=Manrope:wght@300&family=Space+Grotesk:wght@300;400;500;600;700&display=swap";:root{--color-primary: #1a1f36;--color-secondary: #64748b;--color-accent: #fbbf24;--color-background: #f1f5f9;--color-surface: #ffffff;--color-text: #0f172a;--color-success: #10b981;--color-error: #ef4444;--color-warning: #f59e0b;--color-info: #3b82f6;--coles-color: #ff3333;--woolworths-color: #00a000;--font-primary: "Space Grotesk", sans-serif;--font-secondary: "Manrope", sans-serif;--transition-duration: .3s;--transition-timing: cubic-bezier(.16, 1, .3, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-primary);font-size:16px;line-height:1.5;color:var(--color-text);background-color:var(--color-background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-secondary);font-weight:300}h1{font-size:clamp(2rem,5vw,3rem)}h2{font-size:clamp(1.5rem,4vw,2.5rem)}h3{font-size:clamp(1.25rem,3vw,2rem)}h4{font-size:clamp(1rem,2.5vw,1.5rem)}h5{font-size:clamp(.875rem,2vw,1.25rem)}h6{font-size:clamp(.75rem,1.5vw,1rem)}.flex{display:flex}.flex-column{flex-direction:column}.flex-center{justify-content:center;align-items:center}.transition-all{transition:all var(--transition-duration) ease-in-out}.transition-transform{transition:transform var(--transition-duration) ease-in-out}@keyframes slideInFromBottom{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.fade-in{animation:fadeIn var(--transition-duration) ease-in-out}.slide-in{animation:slideInFromBottom var(--transition-duration) ease-in-out}@media print{body{font-size:12pt;line-height:1.4;color:var(--color-text);background:var(--color-surface)}a{color:var(--color-text);text-decoration:underline}.no-print{display:none}}.footer{background-color:var(--color-background);border-top:1px solid rgba(0,0,0,.08);font-family:var(--font-primary);padding:clamp(1.5rem,3vw,2rem) 0;margin-top:auto;width:100%}.footer-container{max-width:1200px;margin:0 auto;padding:0 clamp(1rem,2vw,2rem)}.footer-content{display:flex;flex-direction:column;align-items:center;gap:1.5rem;text-align:center}.footer-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(1.5rem,3vw,2.5rem);margin:0;padding:0}.footer-link{color:var(--color-secondary);text-decoration:none;font-size:clamp(.875rem,1.6vw,.95rem);font-weight:400;transition:color var(--transition-duration) ease;padding:.25rem 0;position:relative}.footer-link:hover{color:var(--color-primary)}.footer-link:focus{color:var(--color-primary);outline:2px solid var(--color-accent);outline-offset:2px;border-radius:2px}.footer-info{display:flex;flex-direction:column;align-items:center;gap:.5rem;max-width:600px}.copyright{font-size:clamp(.875rem,1.6vw,.9rem);color:var(--color-primary);margin:0;font-weight:400}.disclaimer{font-size:clamp(.75rem,1.4vw,.8rem);color:var(--color-secondary);line-height:1.4;margin:0;font-weight:300}html{height:100%}body{height:100%;margin:0;padding:0}#root{min-height:100vh;display:flex;flex-direction:column}.App{min-height:100vh;display:flex;flex-direction:column;flex:1}.main-content{flex:1;display:flex;flex-direction:column}@media(min-width:768px){.footer-content{flex-direction:row;justify-content:space-between;align-items:center;text-align:left}.footer-info{align-items:flex-end;text-align:right}}@media(max-width:480px){.footer{padding:1.25rem 0}.footer-nav,.footer-content{gap:1.25rem}}@media(prefers-reduced-motion:reduce){.footer-link{transition:none}}@media print{.footer{border-top:1px solid var(--color-secondary);break-inside:avoid;page-break-inside:avoid}.footer-nav{display:none}.footer-content{justify-content:center}.footer-info{text-align:center;align-items:center}}@media(prefers-contrast:high){.footer{border-top:2px solid var(--color-primary)}.footer-link{color:var(--color-primary)}.footer-link:hover,.footer-link:focus{background-color:var(--color-accent);color:var(--color-primary)}}.header{position:sticky;top:0;z-index:1000;background-color:var(--color-background);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(100,116,139,.1);transition:all var(--transition-duration) var(--transition-timing)}.header-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:20px 28px 20px 20px;min-height:80px}.logo{display:flex;align-items:center;text-decoration:none;transition:all var(--transition-duration) var(--transition-timing);gap:16px;position:relative}.logo:hover{transform:translateY(-1px)}.logo-icon-container{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,var(--color-primary) 50%,var(--color-accent) 100%);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #1a1f3640;transition:all var(--transition-duration) var(--transition-timing)}.logo:hover .logo-icon-container{transform:scale(1.05);box-shadow:0 6px 20px #1a1f3659}.logo-icon{color:var(--color-surface);filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.logo-text{display:flex;flex-direction:column;line-height:1}.logo-halfprice{font-size:28px;font-weight:700;color:var(--color-primary);letter-spacing:-.5px;font-family:var(--font-primary)}.logo-grocery{font-weight:300;color:var(--color-primary);letter-spacing:-.5px;font-family:var(--font-primary)}.logo-tagline{font-size:12px;color:var(--color-secondary);font-weight:500;letter-spacing:1.5px;text-transform:uppercase;opacity:.8;font-family:var(--font-secondary)}.heart-button{position:relative;background:none;border:none;cursor:pointer;color:var(--color-error);transition:color var(--transition-duration) ease,transform var(--transition-duration) ease}.heart-button:hover{transform:scale(1.1)}.heart-count{position:absolute;top:-5px;right:-5px;background-color:var(--color-accent);color:var(--color-text);font-size:12px;padding:2px 6px;border-radius:12px;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;transition:transform var(--transition-duration) ease}.heart-button:hover .favorites-count{transform:scale(1.1)}@media(max-width:768px){.header-content{padding:16px 26px 16px 24px;min-height:72px}.logo{gap:12px}.logo-icon-container{width:44px;height:44px;box-shadow:0 3px 10px #1a1f3633}.logo-tagline{font-size:11px}}@media(max-width:600px){.header{box-shadow:0 1px 2px #0f172a0d}.header-content{padding:12px 20px 12px 16px;min-height:64px}.logo{gap:10px}.logo-icon-container{width:40px;height:40px;border-radius:10px;box-shadow:0 2px 8px #1a1f3626}}@media(max-width:375px){.header-content{padding:10px 16px 10px 12px;min-height:60px}.logo-icon-container{width:36px;height:36px}}.favorites-modal-overlay{position:fixed;inset:0;background-color:#0009;display:grid;place-items:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:opacity .3s ease;overscroll-behavior:contain;touch-action:none}.favorites-modal{background-color:var(--color-background);border-radius:16px;width:95%;max-width:800px;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .3s cubic-bezier(.16,1,.3,1);overflow:hidden;position:relative;isolation:isolate;touch-action:auto}.favorites-modal.visible{animation:slideUp .3s cubic-bezier(.16,1,.3,1)}.favorites-modal-content{display:flex;flex-direction:column;height:100%;position:relative;touch-action:pan-y}.swipe-indicator{width:40px;height:4px;background-color:#ffffff4d;border-radius:2px;margin:8px auto 6px;flex-shrink:0;cursor:grab}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.favorites-header{display:flex;justify-content:space-between;align-items:center;padding:6px 16px;position:relative;flex-shrink:0}.favorites-content{overflow-y:auto;padding:8px;flex:1;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.no-favorites{text-align:center;color:var(--color-secondary);font-style:italic;padding:32px 16px;font-size:1rem}.favorites-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,2fr));gap:4px}.favorites-header-content{display:flex;justify-content:space-between;align-items:center;width:100%}.favorites-actions{display:flex;align-items:center;gap:.75rem}@media(max-width:600px){.favorites-modal{width:100%;height:100%;max-height:100vh;border-radius:0 0 20px 20px;margin-top:auto}.swipe-indicator{width:50px;height:5px;margin:12px auto 8px;background-color:#fff6}.favorites-header{padding:6px 16px}.favorites-content{padding:6px}}.favorites-modal:not(.visible){animation:slideDown .3s cubic-bezier(.4,0,.6,1)}@keyframes slideDown{0%{transform:translateY(0);opacity:1}to{transform:translateY(20px);opacity:0}}.close-button{position:absolute;top:6px;right:8px;background:none;border:none;cursor:pointer;color:var(--color-text);transition:all .2s ease;opacity:.7;display:flex;align-items:center;justify-content:center;padding:6px;border-radius:8px;min-width:32px;min-height:32px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.close-button:hover{color:var(--color-primary);transform:rotate(90deg) scale(1.05);opacity:1;background-color:#ffffff1a}.close-button:active{transform:rotate(90deg) scale(.95);transition-duration:.1s}.close-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}@media(hover:none)and (pointer:coarse){.close-button:hover{transform:none;background-color:transparent}}.favorites-tabs{display:flex;gap:24px;padding:20px 0 0}.favorites-tab{background:none;border:none;color:var(--color-secondary);font-size:18px;padding:16px 24px;position:relative;transition:all .2s ease;font-weight:400;cursor:pointer}.favorites-tab:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:2px;background:var(--color-accent);transform:scaleX(0);transition:transform .2s ease}.favorites-tab.active{color:var(--color-primary)}.favorites-tab.active:after{transform:scaleX(1)}.tab-count{position:absolute;top:4px;right:2px;display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--color-accent);color:var(--color-primary);font-size:12px;font-weight:500}@media(max-width:768px){.favorites-tabs{padding:20px;margin:0}#thisWeekFavorites{padding:25px 20px 20px 0}#allTimeFavorites{padding:20px 35px 20px 20px}.tab-count{right:25px}}.product-card{position:relative;background-color:var(--color-surface);border-radius:6px;overflow:hidden;display:flex;flex-direction:column}.product-image-container{position:relative;overflow:hidden;margin-top:10px;padding:10px;flex:0 0 auto}.product-image{width:100%;height:140px;object-fit:contain;transition:transform .3s ease-in-out;will-change:transform}.product-card:hover .product-image{transform:scale(1.05)}.savings-badge{position:absolute;top:10px;right:10px;background-color:var(--color-accent);color:var(--color-primary);padding:4px 8px;border-radius:24px;font-size:.9rem;box-shadow:0 2px 4px #0003;transition:transform .3s ease;transform:rotate(-5deg);overflow:hidden;z-index:2}.savings-badge:hover{transform:rotate(0) scale(1.05)}.brand-logo{position:absolute;bottom:10px;left:15px;width:50px;height:auto;background-color:#fffc;border-radius:4px;padding:2px}.product-info-container{background-color:var(--color-background);padding:.8rem;display:flex;flex-direction:column;flex-grow:1;justify-content:space-between}.product-card .product-name{font-size:1.125rem;line-height:1.3;font-weight:300;color:var(--color-primary);margin-bottom:5px}.price-container{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.product-card .current-price,.product-card .original-price{margin:5px 0}.product-card .current-price{font-size:1.125rem;font-weight:500;color:var(--color-primary)}.price-and-actions-container{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}.product-card .original-price{color:var(--color-secondary);-webkit-text-decoration:line-through solid rgb(108,108,108);-moz-text-decoration:line-through solid rgb(108,108,108);text-decoration:line-through solid rgb(108,108,108);text-decoration-thickness:1px;text-decoration-skip-ink:none}.price-per-unit{font-size:.8rem;color:var(--color-secondary);margin:0}.product-actions{display:flex;gap:5px}.favorite-button,.price-history-button{background:none;border:none;cursor:pointer;padding:0;color:var(--color-primary);transition:color .2s ease-in-out,transform .2s ease-in-out}.favorite-button:hover,.price-history-button:hover{transform:scale(1.3)}@media(max-width:767px){.product-image{height:160px}.savings-badge{font-size:.6rem}.product-card .product-name{font-size:1rem;line-height:1.2}}@media(min-width:900px){.product-image{height:180px}.product-card .product-name,.product-card .current-price{font-size:1.1rem}}.price-history-modal{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1100;animation:fadeIn .3s cubic-bezier(.16,1,.3,1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:opacity .3s ease;outline:none;overscroll-behavior:contain;touch-action:none}.price-history-modal.visible{opacity:1}.price-history-modal:not(.visible){opacity:0}.price-history-content{background-color:var(--color-surface);border-radius:24px;padding:0;width:92%;max-width:900px;max-height:90vh;overflow:hidden;position:relative;box-shadow:0 16px 32px #0003,0 0 0 1px #ffffff1a;animation:slideUp .4s cubic-bezier(.16,1,.3,1);border:1px solid rgba(255,255,255,.08);touch-action:pan-y;isolation:isolate;transform:translateZ(0);outline:none}.price-history-modal:focus-visible{outline:3px solid var(--color-primary);outline-offset:-3px}.modal-header{position:relative;padding:8px 16px 0;display:flex;justify-content:space-between;align-items:flex-start}.swipe-indicator{width:40px;height:4px;background-color:#ffffff4d;border-radius:2px;position:absolute;top:8px;left:50%;transform:translate(-50%);cursor:grab}.swipe-indicator:active{cursor:grabbing}@media(hover:hover)and (pointer:fine){.price-history-modal{cursor:pointer}.price-history-content{cursor:default}.swipe-indicator{display:none}.modal-header{padding:12px 20px 0}}.price-history-title{font-size:1.75rem;color:var(--color-primary);margin:12px 16px 20px;padding-right:40px;font-weight:800;letter-spacing:-.02em}.price-history-subtitle{font-size:1.2rem;color:var(--color-secondary);display:block;margin-top:.75em;font-weight:600;letter-spacing:-.01em}.price-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:20px 16px;padding:20px;background:var(--color-background);border-radius:16px;border:1px solid rgba(255,255,255,.06);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.price-history-content>*:last-child{margin:0 16px 16px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.keyboard-hint{position:absolute;bottom:16px;left:50%;transform:translate(-50%);color:var(--color-secondary);font-size:.75rem;opacity:.7;pointer-events:none}body.modal-open{overflow:hidden;position:fixed;width:100%}@media(max-width:768px){.keyboard-hint{display:none}}@media(max-width:480px){.price-history-content{padding:0;border-radius:0 0 20px 20px;width:100%;height:100%;max-height:100vh;margin-top:auto}.modal-header{padding:12px 16px 0}.swipe-indicator{width:50px;height:5px;top:12px;background-color:#fff6;display:block}.price-history-title{font-size:1.3rem;margin:12px 16px;padding-right:20px}.price-history-subtitle{font-size:1rem}.price-summary{padding:16px;gap:12px;margin:16px 12px}.price-history-content>*:last-child{margin:0 12px 12px}}@media(min-width:1024px){.price-history-content{max-width:1000px}.price-history-title{font-size:2rem;margin:16px 24px 24px}.modal-header{padding:16px 24px 0}.price-summary{margin:24px;padding:24px}.price-history-content>*:last-child{margin:0 24px 24px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(prefers-contrast:high){.price-history-modal:focus-visible{outline:3px solid #000}}@media(prefers-reduced-motion:reduce){.price-history-modal,.price-history-content{animation:none;transition:none}}.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;padding:0;margin:0}@media(min-width:540px){.product-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px}}@media(min-width:768px){.product-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}}@media(min-width:1024px){.product-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}}@media(min-width:1200px){.product-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}}.product-grid>*{margin:0;padding:0}.loading-spinner-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh}.loading-spinner{width:50px;height:50px;border:3px solid var(--color-surface);border-top:3px solid var(--color-primary);border-radius:50%;animation:spin 1s linear infinite;will-change:transform}.loading-text{margin-top:20px;font-size:1.2rem;color:var(--color-primary)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
