.tab-bar-wrap[data-v-0aa20f91]{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--container-max-width-c, 100%);z-index:1000;padding-bottom:env(safe-area-inset-bottom,0)}.tab-bar[data-v-0aa20f91]{margin:0 8px;border-radius:20px 20px 0 0;display:flex;justify-content:space-around;align-items:center;padding:12px 0;padding-bottom:calc(12px + env(safe-area-inset-bottom,0));position:relative}.tab-bar.terroir-glass-client[data-v-0aa20f91]{background:var(--glass-client-bg);backdrop-filter:blur(var(--glass-client-blur));-webkit-backdrop-filter:blur(var(--glass-client-blur));border:var(--glass-client-border);box-shadow:var(--glass-client-shadow)}.tab-item[data-v-0aa20f91]{display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 12px;color:var(--terroir-gray-400);text-decoration:none;position:relative;cursor:pointer;flex:1;max-width:72px}.tab-item[data-v-0aa20f91]:active{transform:scale(.95)}.tab-item.active[data-v-0aa20f91]{color:var(--terroir-primary)}.tab-icon[data-v-0aa20f91]{width:26px;height:26px}.tab-icon svg[data-v-0aa20f91]{width:100%;height:100%}.tab-label[data-v-0aa20f91]{font-size:10px;font-weight:500}.tab-item.active .tab-label[data-v-0aa20f91]{font-weight:600}.active-indicator[data-v-0aa20f91]{position:absolute;bottom:-2px;left:50%;transform:translate(-50%) scaleX(.6);width:24px;height:3px;background:var(--terroir-primary);border-radius:3px;opacity:0;transition:all .3s cubic-bezier(.34,1.56,.64,1)}.tab-item.active .active-indicator[data-v-0aa20f91]{opacity:1;transform:translate(-50%) scaleX(1)}.client-app[data-v-e71c6b1a]{min-height:100vh;max-width:var(--container-max-width-c);margin:0 auto;background:transparent}.page-enter-active[data-v-e71c6b1a]{animation:pageEnter-e71c6b1a .4s var(--ease-out-expo) forwards}.page-leave-active[data-v-e71c6b1a]{animation:pageExit-e71c6b1a .3s var(--ease-accelerate) forwards}@keyframes pageEnter-e71c6b1a{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pageExit-e71c6b1a{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}:root{--terroir-primary: #43cf7c;--terroir-primary-dark: #30af52;--terroir-primary-light: #6fbc60;--terroir-primary-text: #f2ffed;--terroir-primary-gradient: linear-gradient(135deg, rgba(67, 207, 124, .9) 0%, rgba(0, 186, 173, .9) 100%);--terroir-primary-glass: rgba(67, 207, 124, .85);--terroir-text-primary: #004a45;--terroir-text-secondary: rgba(0, 74, 69, .7);--terroir-text-tertiary: rgba(0, 74, 69, .5);--terroir-bg-white: #ffffff;--terroir-bg-glass: rgba(235, 255, 243, .5);--terroir-bg-glass-highlight: rgba(255, 255, 255, .75);--terroir-bg-card: rgba(255, 255, 255, .6);--terroir-bg-button: rgba(255, 255, 255, .65);--terroir-accent-like: #ff5733;--terroir-accent-shadow: rgba(0, 0, 0, .15);--terroir-accent-highlight: rgba(255, 255, 255, .4);--radius-none: 0;--radius-xs: .5rem;--radius-sm: .75rem;--radius-md: 1rem;--radius-default: 1.5rem;--radius-lg: 1.5rem;--radius-full: 9999px;--shadow-edge-highlight: 0px 2px 8px rgba(0, 0, 0, .08), inset 0px 1px 1px rgba(255, 255, 255, .5), inset 0px -1px 1px rgba(0, 0, 0, .05);--shadow-edge-thin: inset 0px 1px 1px rgba(255, 255, 255, .4), 0px 1px 3px rgba(0, 0, 0, .05);--shadow-card: 0px 4px 16px rgba(0, 0, 0, .08), inset 0px 1px 0px rgba(255, 255, 255, .5);--shadow-glass: 0px 4px 12px rgba(0, 74, 69, .08), inset 0px 1px 1px rgba(255, 255, 255, .6);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--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}@media (max-width: 640px){:root{--radius-default: 1.25rem;--space-md: .875rem;--space-lg: 1.25rem}}@media (min-width: 641px) and (max-width: 1024px){:root{--radius-default: 1.5rem}}@media (min-width: 1025px){:root{--radius-default: 1.5rem;--space-md: 1.25rem;--space-lg: 2rem}}.terroir-glass{background:var(--terroir-bg-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-default);box-shadow:var(--shadow-edge-highlight)}.terroir-btn-primary{background:var(--terroir-primary);color:var(--terroir-primary-text);border-radius:var(--radius-default);box-shadow:var(--shadow-edge-highlight);font-weight:600;border:none;cursor:pointer;transition:all .2s var(--ease-smooth)}.terroir-btn-primary:active{transform:scale(.98);box-shadow:0 1px 4px #0000001a,inset 0 0 4px #0000001a}.terroir-btn-glass{background:var(--terroir-bg-button);color:var(--terroir-text-primary);border-radius:var(--radius-default);box-shadow:var(--shadow-edge-highlight);font-weight:500;border:none;cursor:pointer;transition:all .2s var(--ease-smooth)}.terroir-btn-glass:active{transform:scale(.98)}.terroir-input{background:var(--terroir-bg-button);color:var(--terroir-text-primary);border-radius:var(--radius-default);box-shadow:var(--shadow-edge-highlight);border:none;outline:none}.terroir-input::placeholder{color:var(--terroir-text-tertiary)}.terroir-card{background:var(--terroir-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden}.terroir-tabs{background:#ebfff399;border-radius:var(--radius-md);box-shadow:var(--shadow-edge-thin);padding:4px;position:relative}.terroir-tab{background:transparent;color:var(--terroir-text-secondary);border-radius:var(--radius-sm);border:none;cursor:pointer;transition:all .3s var(--ease-smooth);position:relative;z-index:1}.terroir-tab--active{color:var(--terroir-text-primary);font-weight:600}.terroir-tab-indicator{position:absolute;bottom:4px;height:3px;background:var(--terroir-primary);border-radius:var(--radius-full);transition:all .3s var(--ease-bounce)}.terroir-switch{background:var(--terroir-bg-glass);border-radius:var(--radius-full);box-shadow:var(--shadow-edge-highlight)}.terroir-switch--active{background:var(--terroir-primary)}.terroir-switch-thumb{background:#fff;border-radius:50%;box-shadow:0 2px 4px #0003}.terroir-slider{background:var(--terroir-bg-glass);border-radius:var(--radius-full);box-shadow:var(--shadow-edge-highlight)}.terroir-slider-track{background:#004a451a;border-radius:var(--radius-full)}.terroir-slider-fill{background:var(--terroir-primary);border-radius:var(--radius-full)}.terroir-slider-thumb{background:#fff;border-radius:50%;box-shadow:0 2px 8px #0003}.terroir-icon-btn{background:var(--terroir-bg-button);border-radius:50%;box-shadow:var(--shadow-edge-highlight);border:none;cursor:pointer;transition:all .2s var(--ease-smooth)}.terroir-icon-btn--primary{background:var(--terroir-primary);color:var(--terroir-primary-text)}.terroir-icon-btn:active{transform:scale(.95)}.terroir-tabbar{background:var(--terroir-bg-glass);border-radius:var(--radius-default);box-shadow:var(--shadow-edge-highlight)}.terroir-tabbar-item{color:var(--terroir-text-tertiary);border-radius:var(--radius-sm);transition:all .3s var(--ease-smooth);position:relative}.terroir-tabbar-item--active{color:var(--terroir-primary)}.terroir-tabbar-indicator{position:absolute;top:4px;left:50%;transform:translate(-50%);width:4px;height:4px;background:var(--terroir-primary);border-radius:50%;transition:all .3s var(--ease-bounce)}.terroir-tabbar-item--active .terroir-tabbar-indicator{width:6px;height:6px;box-shadow:0 0 8px var(--terroir-primary)}.terroir-btn-heart{background:var(--terroir-bg-button);color:var(--terroir-accent-like);border-radius:var(--radius-xs);box-shadow:var(--shadow-edge-highlight);border:none;cursor:pointer}.terroir-btn-send{background:var(--terroir-primary);color:var(--terroir-primary-text);border-radius:var(--radius-xs);box-shadow:var(--shadow-edge-highlight);border:none;cursor:pointer}.terroir-container{width:100%;max-width:480px;margin:0 auto;padding:0 var(--space-md)}@media (min-width: 641px){.terroir-container{max-width:640px}}@media (min-width: 1025px){.terroir-container{max-width:768px}}.terroir-grid{display:grid;gap:var(--space-md)}.terroir-grid-2{grid-template-columns:repeat(2,1fr)}.terroir-grid-3{grid-template-columns:repeat(3,1fr)}.terroir-grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 640px){.terroir-grid-4{grid-template-columns:repeat(2,1fr)}}.terroir-scroll-hide{scrollbar-width:none;-ms-overflow-style:none}.terroir-scroll-hide::-webkit-scrollbar{display:none}:root{--terroir-primary: #4A7C59;--terroir-primary-light: #6B9B7A;--terroir-primary-dark: #3A6347;--terroir-primary-50: rgba(74, 124, 89, .5);--terroir-primary-20: rgba(74, 124, 89, .2);--terroir-primary-10: rgba(74, 124, 89, .1);--terroir-primary-5: rgba(74, 124, 89, .05);--terroir-secondary: #8B5A2B;--terroir-secondary-light: #A67B5B;--terroir-secondary-dark: #6B4521;--terroir-secondary-50: rgba(139, 90, 43, .5);--terroir-secondary-20: rgba(139, 90, 43, .2);--terroir-secondary-10: rgba(139, 90, 43, .1);--terroir-secondary-5: rgba(139, 90, 43, .05);--terroir-accent: #E6C850;--terroir-accent-light: #F0DB7A;--terroir-accent-dark: #C9A83D;--terroir-accent-50: rgba(230, 200, 80, .5);--terroir-accent-20: rgba(230, 200, 80, .2);--terroir-accent-10: rgba(230, 200, 80, .1);--terroir-data: #4A90E2;--terroir-data-light: #6BA5E7;--terroir-data-dark: #3A7BC8;--terroir-action: #4A7C59;--terroir-benefit: #E6C850;--terroir-white: rgba(255, 255, 255, .95);--terroir-white-80: rgba(255, 255, 255, .8);--terroir-white-60: rgba(255, 255, 255, .6);--terroir-white-40: rgba(255, 255, 255, .4);--terroir-black: rgba(0, 0, 0, .85);--terroir-black-60: rgba(0, 0, 0, .6);--terroir-black-40: rgba(0, 0, 0, .4);--terroir-black-20: rgba(0, 0, 0, .2);--terroir-gray-100: rgba(245, 245, 245, .9);--terroir-gray-200: rgba(224, 224, 224, .85);--terroir-gray-300: rgba(189, 189, 189, .8);--terroir-gray-400: rgba(117, 117, 117, .7);--terroir-user-bubble: rgba(139, 90, 43, .85);--terroir-user-bubble-border: rgba(139, 90, 43, .3);--terroir-llm-bubble: rgba(74, 124, 89, .85);--terroir-llm-bubble-border: rgba(74, 124, 89, .3);--bg-client-default: transparent;--bg-business-default: transparent;--glass-client-bg: rgba(255, 255, 255, .75);--glass-client-bg-hover: rgba(255, 255, 255, .85);--glass-client-bg-active: rgba(255, 255, 255, .65);--glass-client-blur: 20px;--glass-client-blur-heavy: 30px;--glass-client-border: 1px solid rgba(255, 255, 255, .5);--glass-client-border-highlight: 1px solid rgba(255, 255, 255, .8);--glass-client-shadow: 0 8px 32px rgba(74, 124, 89, .1);--glass-client-shadow-hover: 0 12px 40px rgba(74, 124, 89, .15);--glass-client-shadow-pressed: 0 4px 16px rgba(74, 124, 89, .08);--glass-business-bg: rgba(255, 255, 255, .85);--glass-business-bg-hover: rgba(255, 255, 255, .92);--glass-business-bg-active: rgba(255, 255, 255, .75);--glass-business-blur: 16px;--glass-business-blur-heavy: 24px;--glass-business-border: 1px solid rgba(255, 255, 255, .6);--glass-business-border-highlight: 1px solid rgba(255, 255, 255, .9);--glass-business-shadow: 0 4px 24px rgba(0, 0, 0, .08);--glass-business-shadow-hover: 0 8px 32px rgba(0, 0, 0, .12);--glass-business-shadow-pressed: 0 2px 12px rgba(0, 0, 0, .06);--glass-shimmer-opacity: .15;--glass-shimmer-speed: 6s;--highlight-opacity: .4;--highlight-height: 40%;--highlight-blur: 2px;--font-family: "Source Han Sans CN", "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont, sans-serif;--font-family-display: "Source Han Sans CN", "PingFang SC", sans-serif;--font-size-c-xs: 12px;--font-size-c-sm: 14px;--font-size-c-base: 16px;--font-size-c-lg: 18px;--font-size-c-xl: 20px;--font-size-c-2xl: 24px;--font-size-c-3xl: 28px;--font-size-b-xs: 14px;--font-size-b-sm: 16px;--font-size-b-base: 18px;--font-size-b-lg: 20px;--font-size-b-xl: 24px;--font-size-b-2xl: 28px;--font-size-b-3xl: 32px;--font-size-b-4xl: 36px;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75;--letter-spacing-tight: -.02em;--letter-spacing-normal: 0;--letter-spacing-wide: .02em;--touch-target-b: 48px;--touch-target-b-large: 56px;--touch-target-c: 44px;--touch-target-c-large: 52px;--radius-none: 0;--radius-xs: 4px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--radius-3xl: 28px;--radius-full: 9999px;--radius-ios-sm: 10px;--radius-ios-md: 14px;--radius-ios-lg: 18px;--radius-ios-xl: 22px;--radius-ios-continuous: 40px;--space-0: 0;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 20px;--space-2xl: 24px;--space-3xl: 32px;--space-4xl: 40px;--space-5xl: 48px;--container-max-width-c: 428px;--container-max-width-b: 600px;--container-padding: 16px;--container-padding-lg: 24px;--ease-out-expo: cubic-bezier(.16, 1, .3, 1);--ease-out-back: cubic-bezier(.34, 1.56, .64, 1);--ease-in-out-expo: cubic-bezier(.87, 0, .13, 1);--ease-spring: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--ease-decelerate: cubic-bezier(0, 0, .2, 1);--ease-accelerate: cubic-bezier(.4, 0, 1, 1)}@media (max-width: 428px){:root{--font-size-c-base: 14px;--space-lg: 14px}}@media (min-width: 768px){:root{--container-padding: 20px}}@media (min-width: 1024px){:root{--container-padding-lg: 32px}}.terroir-glass-client{background:var(--glass-client-bg);backdrop-filter:blur(var(--glass-client-blur));-webkit-backdrop-filter:blur(var(--glass-client-blur));border:var(--glass-client-border);border-radius:var(--radius-lg);box-shadow:var(--glass-client-shadow);position:relative;overflow:hidden}.terroir-glass-client:active{background:var(--glass-client-bg-active);box-shadow:var(--glass-client-shadow-pressed)}.terroir-glass-client:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 20% 30%,rgba(74,124,89,.03) 0%,transparent 50%),radial-gradient(ellipse at 80% 70%,rgba(139,90,43,.03) 0%,transparent 50%),radial-gradient(ellipse at 50% 50%,rgba(230,200,80,.02) 0%,transparent 60%);opacity:1;pointer-events:none}.terroir-glass-client:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#fff0,rgba(255,255,255,var(--glass-shimmer-opacity)),#fff0);animation:shimmer var(--glass-shimmer-speed) ease-in-out infinite;pointer-events:none}.terroir-glass-client .ios-highlight{position:absolute;top:0;left:0;right:0;height:var(--highlight-height);background:linear-gradient(180deg,rgba(255,255,255,var(--highlight-opacity)),#fff0);border-radius:var(--radius-lg) var(--radius-lg) 0 0;filter:blur(var(--highlight-blur));pointer-events:none;z-index:1}.terroir-glass-client.ios-continuous{border-radius:var(--radius-ios-continuous);--corner-smoothing: .6}.terroir-glass-business{background:var(--glass-business-bg);backdrop-filter:blur(var(--glass-business-blur));-webkit-backdrop-filter:blur(var(--glass-business-blur));border:var(--glass-business-border);border-radius:var(--radius-lg);box-shadow:var(--glass-business-shadow);position:relative;overflow:hidden;transition:all .3s var(--ease-smooth)}.terroir-glass-business:hover{background:var(--glass-business-bg-hover);box-shadow:var(--glass-business-shadow-hover)}.terroir-glass-business:active{background:var(--glass-business-bg-active);box-shadow:var(--glass-business-shadow-pressed)}.terroir-glass-business:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#fff0,#ffffff1a,#fff0);animation:shimmer 8s ease-in-out infinite;pointer-events:none}.terroir-glass-business .ios-highlight{position:absolute;top:0;left:0;right:0;height:30%;background:linear-gradient(180deg,#ffffff40,#fff0);border-radius:var(--radius-lg) var(--radius-lg) 0 0;pointer-events:none;z-index:1}.terroir-glass-sm{border-radius:var(--radius-md);padding:var(--space-sm)}.terroir-glass-sm .ios-highlight{border-radius:var(--radius-md) var(--radius-md) 0 0}.terroir-glass-md{border-radius:var(--radius-lg);padding:var(--space-md)}.terroir-glass-md .ios-highlight{border-radius:var(--radius-lg) var(--radius-lg) 0 0}.terroir-glass-lg{border-radius:var(--radius-xl);padding:var(--space-lg)}.terroir-glass-lg .ios-highlight{border-radius:var(--radius-xl) var(--radius-xl) 0 0}.terroir-glass-full,.terroir-glass-full .ios-highlight{border-radius:var(--radius-full)}.ios-glow{box-shadow:0 0 0 1px #ffffff1a,0 4px 20px #00000014}.ios-glow:hover{box-shadow:0 0 0 1px #ffffff26,0 6px 24px #0000001a}.ios-glow:active{box-shadow:0 0 0 1px #ffffff0d,0 2px 10px #0000000f}.component-edge{box-shadow:inset 0 1px #fff3,inset 0 -1px #0000000d;border-radius:var(--radius-ios-md);transition:all .3s var(--ease-smooth)}@keyframes shimmer{0%{transform:translate(-100%) translateY(-100%) rotate(45deg);opacity:0}50%{opacity:var(--glass-shimmer-opacity)}to{transform:translate(100%) translateY(100%) rotate(45deg);opacity:0}}:root{--terroir-texture-opacity: .15;--terroir-texture-blur: .5px;--terroir-texture-scale: 3;--terroir-texture-primary: rgba(74, 124, 89, .08);--terroir-texture-secondary: rgba(139, 90, 43, .06);--terroir-texture-accent: rgba(230, 200, 80, .05)}.btn-terroir-texture{position:relative;overflow:hidden;background:linear-gradient(135deg,#ffffffd9,#ffffffbf);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.6);border-radius:var(--radius-full);box-shadow:0 2px 8px #4a7c5926,inset 0 1px #fffc;color:var(--terroir-primary);font-weight:var(--font-weight-medium);transition:all .3s var(--ease-smooth);isolation:isolate}.btn-terroir-texture:before{content:"";position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;z-index:0;background-image:repeating-linear-gradient(0deg,transparent,transparent 2px,var(--terroir-texture-primary) 2px,var(--terroir-texture-primary) 2.5px),repeating-linear-gradient(45deg,transparent,transparent 3px,var(--terroir-texture-secondary) 3px,var(--terroir-texture-secondary) 3.5px),repeating-linear-gradient(-45deg,transparent,transparent 4px,var(--terroir-texture-accent) 4px,var(--terroir-texture-accent) 4.5px);filter:blur(var(--terroir-texture-blur));opacity:var(--terroir-texture-opacity);pointer-events:none;mix-blend-mode:multiply}.btn-terroir-texture:after{content:"";position:absolute;top:0;left:0;right:0;height:50%;z-index:1;background:linear-gradient(180deg,#ffffff80,#fff0);border-radius:var(--radius-full) var(--radius-full) 0 0;filter:blur(1px);pointer-events:none}.btn-terroir-texture>*{position:relative;z-index:2}.btn-terroir-texture:hover{background:linear-gradient(135deg,#ffffffeb,#ffffffd1);box-shadow:0 4px 16px #4a7c5933,inset 0 1px #ffffffe6;transform:translateY(-1px)}.btn-terroir-texture:hover:before{opacity:calc(var(--terroir-texture-opacity) * 1.3)}.btn-terroir-texture:active{background:linear-gradient(135deg,#ffffffbf,#ffffffa6);box-shadow:0 1px 4px #4a7c591a,inset 0 1px #fff9;transform:translateY(0) scale(.98)}.btn-terroir-texture:active:before{opacity:calc(var(--terroir-texture-opacity) * .8)}.btn-terroir-texture--primary{background:linear-gradient(135deg,var(--terroir-primary) 0%,var(--terroir-primary-dark) 100%);color:#fff;border-color:#ffffff4d;box-shadow:0 4px 12px #4a7c594d,inset 0 1px #fff3}.btn-terroir-texture--primary:before{--terroir-texture-primary: rgba(255, 255, 255, .1);--terroir-texture-secondary: rgba(255, 255, 255, .08);--terroir-texture-accent: rgba(255, 255, 255, .05)}.btn-terroir-texture--primary:after{background:linear-gradient(180deg,#ffffff40,#fff0)}.btn-terroir-texture--primary:hover{background:linear-gradient(135deg,var(--terroir-primary-light) 0%,var(--terroir-primary) 100%);box-shadow:0 6px 20px #4a7c5966,inset 0 1px #ffffff4d}.btn-terroir-texture--secondary{--terroir-texture-primary: rgba(139, 90, 43, .12);--tertoir-texture-secondary: rgba(74, 124, 89, .08);--terroir-texture-accent: rgba(230, 200, 80, .06);color:var(--terroir-secondary)}.btn-terroir-texture--accent{--terroir-texture-primary: rgba(230, 200, 80, .12);--terroir-texture-secondary: rgba(74, 124, 89, .08);--terroir-texture-accent: rgba(139, 90, 43, .06);color:var(--terroir-accent-dark)}.btn-terroir-texture--sm{padding:8px 16px;font-size:var(--font-size-c-sm);min-height:36px}.btn-terroir-texture--md{padding:12px 24px;font-size:var(--font-size-c-base);min-height:44px}.btn-terroir-texture--lg{padding:16px 32px;font-size:var(--font-size-c-lg);min-height:52px}.btn-terroir-texture:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-terroir-texture:disabled:before{opacity:calc(var(--terroir-texture-opacity) * .5)}.btn-terroir-texture--loading{pointer-events:none}.btn-terroir-texture--loading:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);animation:texture-shimmer 1.5s infinite}@keyframes texture-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@keyframes texture-breathe{0%,to{opacity:var(--terroir-texture-opacity)}50%{opacity:calc(var(--terroir-texture-opacity) * 1.2)}}.btn-terroir-texture--animated:before{animation:texture-breathe 4s ease-in-out infinite}@keyframes pageEnter{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pageExit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}.animate-page-enter{animation:pageEnter .4s var(--ease-out-expo) forwards}.animate-page-exit{animation:pageExit .3s var(--ease-accelerate) forwards}@keyframes cardAppear{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.animate-card-appear{animation:cardAppear .5s var(--ease-out-back) forwards}.animate-card-appear:nth-child(1){animation-delay:0ms}.animate-card-appear:nth-child(2){animation-delay:80ms}.animate-card-appear:nth-child(3){animation-delay:.16s}.animate-card-appear:nth-child(4){animation-delay:.24s}.animate-card-appear:nth-child(5){animation-delay:.32s}.animate-card-appear:nth-child(6){animation-delay:.4s}@keyframes bubbleSend{0%{opacity:0;transform:scale(.8) translateY(20px)}60%{transform:scale(1.02) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.animate-bubble-send{animation:bubbleSend .4s var(--ease-out-back) forwards}@keyframes buttonPress{0%{transform:scale(1)}40%{transform:scale(.95)}80%{transform:scale(1.02)}to{transform:scale(1)}}.animate-button-press{animation:buttonPress .3s var(--ease-spring)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate-fade-in{animation:fadeIn .3s var(--ease-smooth) forwards}.animate-fade-out{animation:fadeOut .3s var(--ease-smooth) forwards}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.animate-slide-up{animation:slideInUp .4s var(--ease-out-expo) forwards}.animate-slide-down{animation:slideInDown .4s var(--ease-out-expo) forwards}.animate-slide-left{animation:slideInLeft .4s var(--ease-out-expo) forwards}.animate-slide-right{animation:slideInRight .4s var(--ease-out-expo) forwards}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.animate-scale-in{animation:scaleIn .3s var(--ease-out-back) forwards}.animate-scale-out{animation:scaleOut .3s var(--ease-accelerate) forwards}@keyframes leafGrow{0%{stroke-dashoffset:100;opacity:0}to{stroke-dashoffset:0;opacity:1}}@keyframes grainSway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.animate-leaf-grow{stroke-dasharray:100;animation:leafGrow 1.5s var(--ease-out-expo) infinite}.animate-grain-sway{transform-origin:bottom center;animation:grainSway 2s var(--ease-in-out-expo) infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s var(--ease-smooth) infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-bounce{animation:bounce 1s var(--ease-spring) infinite}.banner-container{position:relative;overflow:hidden;border-radius:var(--radius-xl)}.banner-bg{position:absolute;top:-20px;right:-20px;bottom:-20px;left:-20px;background-size:cover;background-position:center;transition:transform .1s linear;will-change:transform}.banner-text{position:relative;z-index:2;transition:transform .1s linear;will-change:transform}.banner-subject{position:absolute;right:-30px;bottom:-40px;z-index:3;width:180px;height:180px;object-fit:contain;filter:drop-shadow(0 12px 32px rgba(0,0,0,.2));transition:transform .1s linear;will-change:transform}.banner-container.slide-0 .banner-bg,.banner-container.slide-0 .banner-text,.banner-container.slide-0 .banner-subject{transform:translate(0)}.banner-container.slide-1 .banner-bg{transform:translate(-5%)}.banner-container.slide-1 .banner-text{transform:translate(-15%)}.banner-container.slide-1 .banner-subject{transform:translate(-25%)}.banner-container.slide-2 .banner-bg{transform:translate(-10%)}.banner-container.slide-2 .banner-text{transform:translate(-30%)}.banner-container.slide-2 .banner-subject{transform:translate(-50%)}.color-transition{transition:background-color .3s var(--ease-smooth),color .3s var(--ease-smooth),border-color .3s var(--ease-smooth),box-shadow .3s var(--ease-smooth)}.gradient-transition{background:linear-gradient(135deg,var(--terroir-primary) 0%,var(--terroir-primary-dark) 100%);background-size:200% 200%;transition:background-position .5s var(--ease-smooth)}.gradient-transition:hover{background-position:100% 100%}.hover-lift{transition:transform .3s var(--ease-out-back),box-shadow .3s var(--ease-smooth)}.hover-lift:hover{transform:translateY(-4px);box-shadow:0 12px 24px #00000026}.hover-scale{transition:transform .3s var(--ease-out-back)}.hover-scale:hover{transform:scale(1.05)}.hover-glow{transition:box-shadow .3s var(--ease-smooth)}.hover-glow:hover{box-shadow:0 0 20px #4a7c594d}.transition-fast{transition:all .15s var(--ease-smooth)}.transition-normal{transition:all .3s var(--ease-smooth)}.transition-slow{transition:all .5s var(--ease-smooth)}.transition-bounce{transition:all .4s var(--ease-spring)}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-400{animation-duration:.4s}.duration-500{animation-duration:.5s}.duration-600{animation-duration:.6s}.will-change-transform{will-change:transform}.will-change-opacity{will-change:opacity}.gpu-accelerated{transform:translateZ(0);backface-visibility:hidden}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-family);font-size:var(--font-size-c-base);line-height:var(--line-height-normal);color:var(--terroir-black);background-color:transparent;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-display);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}a{color:var(--terroir-primary);text-decoration:none;transition:color .3s var(--ease-smooth)}a:hover{color:var(--terroir-primary-light)}button{font-family:inherit;cursor:pointer;border:none;background:none;outline:none}button:focus-visible{outline:2px solid var(--terroir-primary);outline-offset:2px}img{max-width:100%;height:auto;display:block}input,textarea,select{font-family:inherit;font-size:inherit;outline:none}input:focus,textarea:focus,select:focus{outline:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.clearfix:after{content:"";display:table;clear:both}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-truncate-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.text-truncate-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-light{font-weight:var(--font-weight-light)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}@supports (padding-top: env(safe-area-inset-top)){.safe-area-top{padding-top:env(safe-area-inset-top)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-area-left{padding-left:env(safe-area-inset-left)}.safe-area-right{padding-right:env(safe-area-inset-right)}}
