:root{--brand: #d70f64;--brand-dark: #bf0d59;--brand-darker: #a30b4c;--brand-soft: #ffe9f2;--brand-tint: #ffd0e4;--brand-gradient: linear-gradient(135deg, #ff2d87 0%, #d70f64 100%);--amber: #ffb020;--amber-soft: #fff5e0;--grape: #7b61ff;--ink: #1b1d28;--ink-2: #5a6072;--ink-3: #9aa1b2;--on-brand: #ffffff;--bg: #f6f7fb;--surface: #ffffff;--surface-2: #f2f3f7;--surface-sunken: #eef0f6;--line: #ececf2;--line-strong: #dcdde6;--green: #17b26a;--green-soft: #e7f8f0;--red: #f04438;--red-soft: #fdeceb;--blue: #2e90fa;--blue-soft: #e8f2fe;--warn: #f79009;--warn-soft: #fef3e6;--r-xs: 8px;--r-sm: 12px;--r: 16px;--r-lg: 22px;--r-xl: 28px;--r-pill: 999px;--sh-xs: 0 1px 2px rgba(24, 27, 40, .06);--sh-sm: 0 2px 8px rgba(24, 27, 40, .06);--sh: 0 6px 20px rgba(24, 27, 40, .08);--sh-lg: 0 14px 40px rgba(24, 27, 40, .12);--sh-brand: 0 8px 22px rgba(255, 90, 60, .35);--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 28px;--s-7: 40px;--s-8: 56px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--fs-xs: .75rem;--fs-sm: .8125rem;--fs-base: .9375rem;--fs-md: 1rem;--fs-lg: 1.125rem;--fs-xl: 1.375rem;--fs-2xl: 1.625rem;--fs-3xl: 2rem;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--spring: cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .15s;--dur: .24s;--dur-slow: .4s;--container: 1120px;--header-h: 60px;--bottomnav-h: 64px;--z-nav: 100;--z-bottomnav: 90;--z-modal: 1000;--z-toast: 1100;--safe-b: env(safe-area-inset-bottom, 0px);--color-primary: var(--brand);--color-primary-dark: var(--brand-dark);--color-primary-darker: var(--brand-darker);--color-secondary: var(--brand-tint);--color-accent: var(--brand);--bg-app: var(--bg);--bg-surface: var(--surface);--bg-muted: var(--surface-2);--bg-gradient: none;--bg-gradient-brand: var(--brand-gradient);--bg-gradient-hero: var(--brand-gradient);--glass-bg: rgba(255, 255, 255, .85);--glass-border: var(--line);--text-strong: var(--ink);--text: var(--ink);--text-muted: var(--ink-2);--text-faint: var(--ink-3);--text-on-brand: var(--on-brand);--color-success: var(--green);--color-success-bg: var(--green-soft);--color-warning: var(--warn);--color-warning-bg: var(--warn-soft);--color-danger: var(--red);--color-danger-bg: var(--red-soft);--color-info: var(--blue);--color-info-bg: var(--blue-soft);--border: var(--line);--border-strong: var(--line-strong);--radius-sm: var(--r-xs);--radius: var(--r-sm);--radius-lg: var(--r);--radius-xl: var(--r-lg);--radius-pill: var(--r-pill);--shadow-xs: var(--sh-xs);--shadow-sm: var(--sh-sm);--shadow: var(--sh);--shadow-lg: var(--sh-lg);--shadow-brand: var(--sh-brand);--space-1: var(--s-1);--space-2: var(--s-2);--space-3: var(--s-3);--space-4: var(--s-4);--space-5: var(--s-5);--space-6: var(--s-6);--space-7: var(--s-7);--space-8: var(--s-8);--font-sans: var(--font);--navbar-h: var(--header-h)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes slideInUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes ripple{to{transform:scale(3.2);opacity:0}}@keyframes floatY{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pulseRing{0%{box-shadow:0 0 #5dade280}70%{box-shadow:0 0 0 14px #5dade200}to{box-shadow:0 0 #5dade200}}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.anim-fade-in{animation:fadeIn var(--dur) var(--ease) both}.anim-fade-up{animation:fadeInUp var(--dur-slow) var(--ease-out) both}.anim-fade-down{animation:fadeInDown var(--dur-slow) var(--ease-out) both}.anim-scale-in{animation:scaleIn var(--dur) var(--ease-out) both}.anim-pop{animation:pop var(--dur) var(--ease-out) both}.anim-slide-up{animation:slideInUp var(--dur) var(--ease-out) both}.stagger>*{animation:fadeInUp var(--dur-slow) var(--ease-out) both}.stagger>*:nth-child(1){animation-delay:.04s}.stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.12s}.stagger>*:nth-child(4){animation-delay:.16s}.stagger>*:nth-child(5){animation-delay:.2s}.stagger>*:nth-child(6){animation-delay:.24s}.stagger>*:nth-child(7){animation-delay:.28s}.stagger>*:nth-child(8){animation-delay:.32s}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{font-family:var(--font);font-size:var(--fs-base);line-height:1.5;color:var(--ink);background:var(--bg);min-height:100vh;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility}#root{min-height:100vh;display:flex;flex-direction:column}img{max-width:100%;display:block}a{color:var(--brand-dark);text-decoration:none;transition:color var(--dur-fast) var(--ease)}button,input,select,textarea{font:inherit;color:inherit}button{-webkit-tap-highlight-color:transparent}h1,h2,h3,h4{color:var(--ink);line-height:1.2;font-weight:800;letter-spacing:-.01em}h1{font-size:var(--fs-3xl)}h2{font-size:var(--fs-2xl)}h3{font-size:var(--fs-xl)}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--s-4)}.page{flex:1;padding-block:var(--s-5) var(--s-7);animation:fadeIn var(--dur) var(--ease) both}.section-title{font-size:var(--fs-xl);margin-bottom:var(--s-1)}.section-sub{color:var(--ink-2);margin-bottom:var(--s-4);font-size:var(--fs-sm)}.grid{display:grid;gap:var(--s-3)}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.split,.split-even{display:grid;gap:var(--s-4);grid-template-columns:1fr;align-items:start}@media (min-width: 860px){.split{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}.split-even{grid-template-columns:1fr 1fr}}.row{display:flex;align-items:center}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.gap-4{gap:var(--s-4)}.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:var(--s-3)}.text-muted{color:var(--ink-2)}.text-sm{font-size:var(--fs-sm)}.text-xs{font-size:var(--fs-xs)}.text-center{text-align:center}.text-danger{color:var(--red)}.text-success{color:var(--green)}.mt-2{margin-top:var(--s-2)}.mt-3{margin-top:var(--s-3)}.mt-4{margin-top:var(--s-4)}.mb-4{margin-bottom:var(--s-4)}.full-w{width:100%}.glass{background:var(--glass-bg);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border:1px solid var(--glass-border)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--r-pill)}::-webkit-scrollbar-track{background:transparent}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}@media (min-width: 640px){.grid-auto{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}}@media (max-width: 640px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:0 1.15rem;border:1.5px solid transparent;border-radius:var(--r-sm);font-weight:700;font-size:var(--fs-base);letter-spacing:-.01em;cursor:pointer;overflow:hidden;white-space:nowrap;transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease),opacity var(--dur) var(--ease),border-color var(--dur) var(--ease);-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand);color:var(--on-brand);box-shadow:var(--sh-brand)}.btn-primary:hover:not(:disabled){background:var(--brand-dark)}.btn-secondary{background:var(--brand-soft);color:var(--brand-darker)}.btn-secondary:hover:not(:disabled){background:var(--brand-tint)}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover:not(:disabled){background:var(--surface-2)}.btn-danger{background:var(--red);color:#fff}.btn-danger:hover:not(:disabled){background:#d63a2f}.btn-success{background:var(--green);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(.96)}.btn-outline{background:var(--surface);border-color:var(--line-strong);color:var(--ink)}.btn-outline:hover:not(:disabled){border-color:var(--brand);color:var(--brand-dark)}.btn-sm{min-height:36px;padding:0 .8rem;font-size:var(--fs-sm);border-radius:var(--r-xs)}.btn-lg{min-height:52px;padding:0 1.5rem;font-size:var(--fs-md);border-radius:var(--r)}.btn-block{width:100%}.btn-icon{padding:0;width:44px}.btn-icon.btn-sm{width:36px}.ripple{position:absolute;border-radius:50%;transform:scale(0);background:#ffffff73;animation:ripple .6s var(--ease-out);pointer-events:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-sm);transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out)}.card-pad{padding:var(--s-5)}.card-hover{cursor:pointer}.card-hover:active{transform:scale(.985)}@media (hover: hover){.card-hover:hover{transform:translateY(-3px);box-shadow:var(--sh-lg)}}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--s-4)}.field-label{font-size:var(--fs-sm);font-weight:700;color:var(--ink)}.field-label .req{color:var(--red)}.field-hint{font-size:var(--fs-xs);color:var(--ink-3)}.field-error{font-size:var(--fs-xs);color:var(--red);animation:fadeInDown .2s var(--ease)}.input,.textarea,.select{width:100%;min-height:48px;padding:.7rem .95rem;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);font-size:var(--fs-md);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.input::placeholder,.textarea::placeholder{color:var(--ink-3)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}.textarea{resize:vertical;min-height:96px}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235a6072' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .85rem center;padding-right:2.4rem}.input.has-error,.textarea.has-error,.select.has-error{border-color:var(--red)}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:700;line-height:1.3}.badge-success{background:var(--green-soft);color:#0f8a50}.badge-warning{background:var(--warn-soft);color:#b8690a}.badge-danger{background:var(--red-soft);color:#c9372c}.badge-info{background:var(--blue-soft);color:#1c72c4}.badge-muted{background:var(--surface-2);color:var(--ink-2)}.badge-brand{background:var(--brand-soft);color:var(--brand-darker)}.badge-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.spinner{display:inline-block;width:22px;height:22px;border:2.5px solid var(--brand-tint);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}.spinner-lg{width:38px;height:38px;border-width:3px}.spinner-center{display:flex;flex-direction:column;align-items:center;gap:10px;padding:var(--s-8) 0;color:var(--ink-2)}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,#f8f9fc 50%,var(--surface-2) 75%);background-size:800px 100%;animation:shimmer 1.3s infinite linear;border-radius:var(--r-sm)}.skeleton-text{height:12px;margin:8px 0;border-radius:var(--r-pill)}.skeleton-img{width:100%;aspect-ratio:1 / 1;border-radius:var(--r)}.empty{text-align:center;padding:var(--s-8) var(--s-4);color:var(--ink-2);animation:fadeInUp var(--dur-slow) var(--ease-out) both}.empty-icon{width:84px;height:84px;margin:0 auto var(--s-3);display:grid;place-items:center;font-size:2.6rem;background:var(--surface-2);border-radius:50%}.empty h3{color:var(--ink);margin-bottom:6px;font-size:var(--fs-lg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14162280;display:flex;align-items:center;justify-content:center;padding:var(--s-4);z-index:var(--z-modal);animation:fadeIn var(--dur) var(--ease) both}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-lg);width:100%;max-width:460px;max-height:88vh;overflow-y:auto;animation:scaleIn var(--dur) var(--ease-out) both}.modal-lg{max-width:720px}.modal-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--line);background:var(--surface);z-index:1}.modal-header h3{font-size:var(--fs-lg)}.modal-body{padding:var(--s-5)}.modal-footer{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:var(--s-3);padding:var(--s-4) var(--s-5);border-top:1px solid var(--line);background:var(--surface)}.modal-close{background:var(--surface-2);border:none;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:1rem;color:var(--ink-2);transition:background var(--dur) var(--ease)}.modal-close:hover{background:var(--line-strong)}@media (max-width: 560px){.modal-overlay{align-items:flex-end;padding:0}.modal,.modal-lg{max-width:100%;max-height:92vh;border-radius:var(--r-lg) var(--r-lg) 0 0;padding-bottom:var(--safe-b);animation:slideInUp var(--dur) var(--ease-out) both}.modal-header:before{content:"";position:absolute;top:8px;left:50%;transform:translate(-50%);width:40px;height:4px;border-radius:var(--r-pill);background:var(--line-strong)}.modal-header{padding-top:var(--s-5)}}.toast-stack{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:var(--z-toast);width:min(420px,calc(100vw - 24px))}.toast{display:flex;align-items:center;gap:10px;padding:.85rem 1rem;border-radius:var(--r-sm);background:var(--ink);color:#fff;box-shadow:var(--sh-lg);animation:fadeInDown var(--dur) var(--ease-out) both}.toast-success{background:#0f8a50}.toast-error{background:#d63a2f}.toast-warning{background:#b8690a}.toast-info{background:var(--ink)}.toast-icon{font-size:1.05rem}.toast-msg{flex:1;font-size:var(--fs-sm);font-weight:600}.toast-x{background:none;border:none;cursor:pointer;color:#ffffffb3;font-size:1rem}.fab{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--bottomnav-h) + var(--safe-b) + 12px);z-index:var(--z-bottomnav);display:inline-flex;align-items:center;gap:10px;width:min(440px,calc(100vw - 32px));justify-content:space-between;padding:.85rem 1.1rem;border:none;border-radius:var(--r);background:var(--brand);color:#fff;font-weight:800;cursor:pointer;box-shadow:var(--sh-brand);animation:fadeInUp var(--dur) var(--spring) both}.fab:active{transform:translate(-50%) scale(.98)}.fab-left{display:inline-flex;align-items:center;gap:10px}.fab-badge{background:#ffffff40;border-radius:var(--r-pill);min-width:24px;height:24px;padding:0 7px;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-xs);font-weight:800}@media (min-width: 720px){.fab{bottom:20px;left:auto;right:20px;transform:none;width:auto}.fab:active{transform:scale(.98)}}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--brand-gradient);color:#fff;font-weight:800;overflow:hidden;flex-shrink:0}.avatar img{width:100%;height:100%;object-fit:cover}.uploader{display:flex;flex-direction:column;gap:10px}.uploader-drop{border:2px dashed var(--line-strong);border-radius:var(--r);padding:var(--s-5);text-align:center;cursor:pointer;color:var(--ink-2);background:var(--surface-2);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.uploader-drop:hover{border-color:var(--brand);background:var(--brand-soft)}.uploader-drop small{display:block;color:var(--ink-3);margin-top:4px}.uploader-preview{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}.uploader-preview img{width:100%;max-height:220px;object-fit:cover}.uploader-preview .remove{position:absolute;top:8px;right:8px;background:#14162299;color:#fff;border:none;border-radius:50%;width:32px;height:32px;cursor:pointer}.navbar{position:sticky;top:0;z-index:var(--z-nav);background:var(--surface);border-bottom:1px solid var(--line)}.navbar .container{display:flex;align-items:center;gap:var(--s-3);min-height:var(--header-h);padding-block:10px}.brand{display:flex;align-items:center;gap:8px;font-weight:900;font-size:var(--fs-lg);color:var(--ink);letter-spacing:-.02em;flex-shrink:0}.brand-logo{width:36px;height:36px;border-radius:11px;background:var(--brand-gradient);display:grid;place-items:center;color:#fff;font-size:1.15rem;box-shadow:var(--sh-brand)}.brand b{color:var(--brand)}.nav-spacer{flex:1}.nav-links{display:flex;align-items:center;gap:var(--s-2)}.nav-link{padding:.5rem .85rem;border-radius:var(--r-pill);color:var(--ink-2);font-weight:700;font-size:var(--fs-sm);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.nav-link:hover,.nav-link.active{background:var(--brand-soft);color:var(--brand-dark)}.nav-cart{position:relative;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:var(--surface-2);cursor:pointer;border:none;color:var(--ink)}.nav-cart svg{width:22px;height:22px}.nav-cart-count{position:absolute;top:-5px;right:-5px;background:var(--brand);color:#fff;border-radius:var(--r-pill);min-width:18px;height:18px;font-size:10px;font-weight:800;display:grid;place-items:center;padding:0 4px;border:2px solid var(--surface);animation:pop .3s var(--spring) both}.search-wrap{position:relative;flex:1}.search-input{width:100%;min-height:44px;padding:0 1rem 0 2.6rem;border:1.5px solid var(--line);border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--fs-base);transition:box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.search-input:focus{outline:none;background:var(--surface);border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}.search-icon{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--ink-3);display:flex}.search-icon svg{width:18px;height:18px}.search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh-lg);overflow:hidden;z-index:50;animation:fadeInDown var(--dur) var(--ease-out) both;max-height:64vh;overflow-y:auto}.search-group-label{padding:10px 14px 6px;font-size:var(--fs-xs);font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}.search-item{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;transition:background var(--dur-fast)}.search-item:active,.search-item:hover{background:var(--surface-2)}.search-thumb{width:44px;height:44px;border-radius:10px;object-fit:cover;background:var(--surface-2);flex-shrink:0}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-bottomnav);display:flex;background:var(--surface);border-top:1px solid var(--line);padding-bottom:var(--safe-b);box-shadow:0 -2px 16px #181b280d}.bottomnav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:var(--bottomnav-h);border:none;background:none;cursor:pointer;color:var(--ink-3);font-size:10.5px;font-weight:700;position:relative;transition:color var(--dur) var(--ease)}.bottomnav-item svg{width:24px;height:24px;transition:transform var(--dur) var(--spring)}.bottomnav-item.active{color:var(--brand)}.bottomnav-item.active svg{transform:translateY(-1px) scale(1.05)}.bottomnav-badge{position:absolute;top:6px;left:52%;background:var(--brand);color:#fff;border-radius:var(--r-pill);min-width:17px;height:17px;padding:0 4px;font-size:10px;font-weight:800;display:grid;place-items:center;border:2px solid var(--surface)}@media (min-width: 720px){.bottomnav{display:none}}.footer{margin-top:var(--s-7);background:var(--surface);border-top:1px solid var(--line);padding:var(--s-6) 0;color:var(--ink-2);font-size:var(--fs-sm)}.footer .container{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-4)}@media (max-width: 720px){.footer{display:none}}.hero{position:relative;background:var(--brand-soft);color:var(--ink);border-radius:var(--r-lg);padding:var(--s-6) var(--s-5);overflow:hidden;display:flex;align-items:center;gap:var(--s-4)}.hero-text{flex:1;min-width:0;position:relative;z-index:1}.hero h1{color:var(--ink);font-size:clamp(1.4rem,5.5vw,2rem);line-height:1.1}.hero p{color:var(--ink-2);margin:8px 0 0;font-size:var(--fs-base);max-width:420px}.hero-emoji{font-size:clamp(3rem,14vw,5rem);line-height:1;animation:floatY 3s ease-in-out infinite;flex-shrink:0}.hero:after{content:"";position:absolute;right:-40px;bottom:-40px;width:150px;height:150px;border-radius:50%;background:#d70f640f}.cuisines{display:flex;gap:var(--s-4);overflow-x:auto;padding:var(--s-1) 2px var(--s-3)}.cuisine{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:8px;width:74px;border:none;background:none;cursor:pointer;font-size:var(--fs-xs);font-weight:700;color:var(--ink-2);transition:color var(--dur) var(--ease)}.cuisine-img{width:68px;height:68px;border-radius:50%;display:grid;place-items:center;font-size:2rem;background:var(--surface-2);border:2.5px solid transparent;transition:border-color var(--dur) var(--ease),transform var(--dur) var(--spring)}.cuisine:active .cuisine-img{transform:scale(.94)}.cuisine.active{color:var(--brand-dark)}.cuisine.active .cuisine-img{border-color:var(--brand);background:var(--brand-soft)}.cuisine-label{white-space:nowrap;max-width:74px;overflow:hidden;text-overflow:ellipsis}.shop-card{overflow:hidden;padding:0!important;display:block}.shop-banner{position:relative;aspect-ratio:16 / 9;background:var(--brand-gradient);overflow:hidden}.shop-banner img{width:100%;height:100%;object-fit:cover}.shop-banner-fallback{width:100%;height:100%;display:grid;place-items:center;font-size:2.4rem}.shop-status-badge{position:absolute;top:10px;left:10px;box-shadow:var(--sh-sm)}.shop-card-body{padding:var(--s-4);display:flex;gap:12px;align-items:flex-start}.shop-logo{margin-top:-32px;border:3px solid var(--surface);box-shadow:var(--sh-sm)}.shop-card-info{min-width:0;flex:1}.shop-card-info h3{font-size:var(--fs-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shop-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.shop-loc{font-size:var(--fs-sm);color:var(--ink-2);display:flex;align-items:center;gap:4px;margin-top:2px}.product-card{overflow:hidden;padding:0!important;display:flex;flex-direction:column}.product-img{position:relative;aspect-ratio:1 / 1;background:var(--surface-2);overflow:hidden}.product-img img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease-out)}.product-card-fallback{display:grid;place-items:center;height:100%;font-size:2.4rem}@media (hover: hover){.product-card:hover .product-img img{transform:scale(1.05)}}.product-card-body{padding:var(--s-3);display:flex;flex-direction:column;gap:4px;flex:1}.product-card-body h3{font-size:var(--fs-base);line-height:1.25}.product-price{font-weight:800;color:var(--ink);font-size:var(--fs-md)}.product-badges{position:absolute;top:8px;left:8px;display:flex;gap:6px;flex-wrap:wrap}.product-add{position:absolute;bottom:8px;right:8px;width:34px;height:34px;border-radius:11px;background:var(--surface);color:var(--brand);border:none;display:grid;place-items:center;cursor:pointer;box-shadow:var(--sh);font-size:1.2rem;font-weight:800;transition:transform var(--dur) var(--spring),background var(--dur)}.product-add:hover:not(:disabled){background:var(--brand);color:#fff}.product-add:active{transform:scale(.9)}.product-add:disabled{opacity:.5;cursor:not-allowed}.soldout-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#1416228c;display:grid;place-items:center;color:#fff;font-weight:800;letter-spacing:.05em;font-size:var(--fs-sm)}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.chip{flex-shrink:0;min-height:38px;padding:0 1rem;display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-pill);background:var(--surface);border:1.5px solid var(--line);color:var(--ink-2);font-size:var(--fs-sm);font-weight:700;cursor:pointer;white-space:nowrap;transition:all var(--dur) var(--ease)}.chip:active{transform:scale(.96)}.chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}.qty{display:inline-flex;align-items:center;border:1.5px solid var(--line-strong);border-radius:var(--r-pill);overflow:hidden}.qty button{width:38px;height:38px;border:none;background:var(--surface);cursor:pointer;font-size:1.2rem;color:var(--brand-dark);font-weight:700}.qty button:active{background:var(--surface-2)}.qty span{min-width:32px;text-align:center;font-weight:800}.action-bar{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:var(--s-3) var(--s-4) calc(var(--s-3) + var(--safe-b));display:flex;align-items:center;gap:var(--s-3)}@media (max-width: 720px){.nav-links{display:none}.has-bottomnav{padding-bottom:calc(var(--bottomnav-h) + var(--safe-b))}}.auth-page{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-6) var(--space-4);min-height:100vh}.auth-card{width:100%;max-width:460px;animation:fadeInUp var(--dur-slow) var(--ease-out) both}.auth-card.wide{max-width:720px}.auth-brand{text-align:center;margin-bottom:var(--space-5)}.auth-brand .brand-logo{width:56px;height:56px;font-size:1.6rem;margin:0 auto 10px}.auth-title{text-align:center;margin-bottom:4px}.auth-sub{text-align:center;color:var(--text-muted);margin-bottom:var(--space-5)}.auth-foot{text-align:center;margin-top:var(--space-4);color:var(--text-muted);font-size:var(--fs-sm)}.strength{display:flex;gap:4px;margin-top:6px}.strength span{flex:1;height:5px;border-radius:3px;background:var(--border);transition:background var(--dur)}.strength.s1 span:nth-child(-n+1){background:var(--color-danger)}.strength.s2 span:nth-child(-n+2){background:var(--color-warning)}.strength.s3 span:nth-child(-n+3){background:#f1c40f}.strength.s4 span:nth-child(-n+4){background:var(--color-success)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--space-4)}@media (max-width: 560px){.form-grid{grid-template-columns:1fr}}
