/* Tavaazo component styles. Consumed by the React primitives in components/. */
.tv-btn,.tv-iconbtn,.tv-input,.tv-select,.tv-card,.tv-stepper,.tv-product,.tv-dialog,.tv-tag,.tv-badge{box-sizing:border-box}
.tv-btn{white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-body);font-weight:var(--weight-bold);letter-spacing:var(--tracking-wide);text-transform:uppercase;border:var(--border-width) solid transparent;border-radius:var(--radius-pill);cursor:pointer;text-decoration:none;transition:background var(--duration-base) var(--ease-standard),color var(--duration-base) var(--ease-standard),transform var(--duration-fast) var(--ease-standard),box-shadow var(--duration-base) var(--ease-standard)}
.tv-btn:active{transform:scale(var(--press-scale))}
.tv-btn:focus-visible{outline:none;box-shadow:var(--ring-brand)}
.tv-btn[disabled],.tv-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}
.tv-btn--sm{height:34px;padding:0 var(--space-4);font-size:var(--text-xs)}
.tv-btn--md{height:44px;padding:0 var(--space-6);font-size:var(--text-sm)}
.tv-btn--lg{height:54px;padding:0 var(--space-8);font-size:var(--text-md)}
.tv-btn--primary{background:var(--green-700);color:var(--white)}
.tv-btn--primary:hover{background:var(--green-800)}
.tv-btn--accent{background:var(--orange-500);color:var(--white)}
.tv-btn--accent:hover{background:var(--orange-700)}
.tv-btn--hot{background:var(--red-600);color:var(--white)}
.tv-btn--hot:hover{background:var(--red-700)}
.tv-btn--secondary{background:transparent;color:var(--green-700);border-color:var(--green-700)}
.tv-btn--secondary:hover{background:var(--green-050)}
.tv-btn--ghost{background:transparent;color:var(--green-700);border-color:transparent}
.tv-btn--ghost:hover{background:var(--green-050)}
.tv-btn--block{width:100%}

.tv-iconbtn{display:inline-flex;align-items:center;justify-content:center;background:transparent;border:var(--border-width) solid transparent;border-radius:var(--radius-pill);color:var(--green-800);cursor:pointer;transition:background var(--duration-base) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}
.tv-iconbtn:hover{background:var(--green-050)}
.tv-iconbtn:active{transform:scale(var(--press-scale))}
.tv-iconbtn:focus-visible{outline:none;box-shadow:var(--ring-brand)}
.tv-iconbtn--sm{width:34px;height:34px}
.tv-iconbtn--md{width:44px;height:44px}
.tv-iconbtn--lg{width:52px;height:52px}
.tv-iconbtn--solid{background:var(--green-700);color:var(--white)}
.tv-iconbtn--solid:hover{background:var(--green-800)}
.tv-iconbtn--outline{border-color:var(--border-hairline);background:var(--white)}

.tv-badge{display:inline-flex;align-items:center;gap:var(--space-1);font-family:var(--font-body);font-size:var(--text-xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);padding:4px 10px;border-radius:var(--radius-pill);white-space:nowrap}
.tv-badge--brand{background:var(--green-700);color:var(--white)}
.tv-badge--accent{background:var(--orange-500);color:var(--white)}
.tv-badge--hot{background:var(--red-600);color:var(--white)}
.tv-badge--gold{background:var(--gold-600);color:var(--white)}
.tv-badge--soft{background:var(--green-100);color:var(--green-800)}
.tv-badge--outline{background:transparent;color:var(--green-700);box-shadow:inset 0 0 0 1px var(--green-700)}

.tv-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:var(--text-sm);color:var(--grey-800);background:var(--cream-100);border:var(--border-width) solid var(--sand-200);border-radius:var(--radius-pill);padding:5px 12px}
.tv-tag--selected{background:var(--green-700);border-color:var(--green-700);color:var(--white)}
.tv-tag--interactive{cursor:pointer;transition:background var(--duration-base) var(--ease-standard)}
.tv-tag--interactive:hover{background:var(--sand-200)}
.tv-tag__x{background:none;border:none;cursor:pointer;color:inherit;opacity:.6;font-size:14px;line-height:1;padding:0}
.tv-tag__x:hover{opacity:1}

.tv-card{background:var(--surface-card);border:var(--border-width) solid var(--border-hairline);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);overflow:hidden}
.tv-card--raised{box-shadow:var(--shadow-md);border-color:transparent}
.tv-card--flat{box-shadow:none}
.tv-card--kraft{background:var(--surface-kraft);border-color:rgba(26,26,26,.12)}
.tv-card--brand{background:var(--green-700);border-color:transparent;color:var(--white)}
.tv-card--interactive{cursor:pointer;transition:transform var(--duration-base) var(--ease-standard),box-shadow var(--duration-base) var(--ease-standard)}
.tv-card--interactive:hover{transform:var(--lift-hover);box-shadow:var(--shadow-md)}

.tv-field{display:flex;flex-direction:column;gap:6px;font-family:var(--font-body)}
.tv-field__label{font-size:var(--text-xs);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--grey-600)}
.tv-field__hint{font-size:var(--text-xs);color:var(--grey-600)}
.tv-field__error{font-size:var(--text-xs);color:var(--red-600);font-weight:var(--weight-semibold)}
.tv-input,.tv-select{font-family:var(--font-body);font-size:var(--text-md);color:var(--text-body);background:var(--white);border:var(--border-width) solid var(--grey-200);border-radius:var(--radius-sm);height:44px;padding:0 var(--space-4);width:100%;transition:border-color var(--duration-base) var(--ease-standard),box-shadow var(--duration-base) var(--ease-standard)}
.tv-input::placeholder{color:var(--grey-400)}
.tv-input:hover,.tv-select:hover{border-color:var(--grey-400)}
.tv-input:focus,.tv-select:focus{outline:none;border-color:var(--green-700);box-shadow:var(--ring-brand)}
.tv-input--invalid{border-color:var(--red-600)}
.tv-input--invalid:focus{box-shadow:var(--ring-hot)}
.tv-input[disabled],.tv-select[disabled]{background:var(--cream-100);color:var(--grey-400);cursor:not-allowed}
.tv-select{appearance:none;padding-right:var(--space-10);background-image:linear-gradient(45deg,transparent 50%,var(--grey-600) 50%),linear-gradient(135deg,var(--grey-600) 50%,transparent 50%);background-position:calc(100% - 20px) 20px,calc(100% - 14px) 20px;background-size:6px 6px,6px 6px;background-repeat:no-repeat}

.tv-check{display:inline-flex;align-items:flex-start;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-md);color:var(--text-body);cursor:pointer}
.tv-check input{position:absolute;opacity:0;width:0;height:0}
.tv-check__box{flex:none;width:20px;height:20px;border:2px solid var(--grey-400);border-radius:var(--radius-xs);background:var(--white);display:grid;place-items:center;transition:all var(--duration-fast) var(--ease-standard);margin-top:1px}
.tv-check__box--round{border-radius:var(--radius-pill)}
.tv-check input:checked+.tv-check__box{background:var(--green-700);border-color:var(--green-700)}
.tv-check input:focus-visible+.tv-check__box{box-shadow:var(--ring-brand)}
.tv-check__mark{width:11px;height:11px;color:var(--white);opacity:0}
.tv-check input:checked+.tv-check__box .tv-check__mark{opacity:1}
.tv-check__dot{width:8px;height:8px;border-radius:var(--radius-pill);background:var(--white);transform:scale(0);transition:transform var(--duration-fast) var(--ease-standard)}
.tv-check input:checked+.tv-check__box .tv-check__dot{transform:scale(1)}
.tv-check--disabled{opacity:.45;cursor:not-allowed}

.tv-switch{display:inline-flex;align-items:center;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-md);cursor:pointer}
.tv-switch input{position:absolute;opacity:0;width:0;height:0}
.tv-switch__track{width:46px;height:26px;border-radius:var(--radius-pill);background:var(--grey-200);position:relative;transition:background var(--duration-base) var(--ease-standard)}
.tv-switch__thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:var(--radius-pill);background:var(--white);box-shadow:var(--shadow-xs);transition:transform var(--duration-base) var(--ease-standard)}
.tv-switch input:checked+.tv-switch__track{background:var(--green-700)}
.tv-switch input:checked+.tv-switch__track .tv-switch__thumb{transform:translateX(20px)}
.tv-switch input:focus-visible+.tv-switch__track{box-shadow:var(--ring-brand)}

.tv-stepper{display:inline-flex;align-items:center;border:var(--border-width) solid var(--grey-200);border-radius:var(--radius-pill);background:var(--white);overflow:hidden}
.tv-stepper button{width:38px;height:38px;border:none;background:transparent;font-size:18px;color:var(--green-800);cursor:pointer;transition:background var(--duration-fast) var(--ease-standard)}
.tv-stepper button:hover{background:var(--green-050)}
.tv-stepper button:disabled{color:var(--grey-400);cursor:not-allowed;background:transparent}
.tv-stepper__value{min-width:36px;text-align:center;font-family:var(--font-body);font-weight:var(--weight-bold);font-size:var(--text-md)}

.tv-tabs{display:flex;gap:var(--space-6);border-bottom:var(--border-width) solid var(--border-hairline)}
.tv-tab{appearance:none;background:none;border:none;padding:0 0 10px;font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--weight-bold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--grey-600);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-1px;transition:color var(--duration-base) var(--ease-standard),border-color var(--duration-base) var(--ease-standard)}
.tv-tab:hover{color:var(--green-800)}
.tv-tab--active{color:var(--green-800);border-bottom-color:var(--orange-500)}

.tv-dialog__scrim{position:fixed;inset:0;background:rgba(10,61,34,.55);backdrop-filter:blur(3px);display:grid;place-items:center;padding:var(--space-6);z-index:60}
.tv-dialog{background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:min(520px,100%);overflow:hidden}
.tv-dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-6) var(--space-6) 0}
.tv-dialog__title{font-family:var(--font-display);font-weight:var(--weight-black);text-transform:uppercase;font-size:var(--text-h3);color:var(--green-800);margin:0}
.tv-dialog__body{padding:var(--space-4) var(--space-6);font-family:var(--font-body);color:var(--text-body);line-height:var(--leading-body)}
.tv-dialog__foot{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6) var(--space-6)}

.tv-toast{display:flex;align-items:center;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-sm);color:var(--white);background:var(--green-800);border-radius:var(--radius-pill);padding:12px 20px;box-shadow:var(--shadow-md)}
.tv-toast--success{background:var(--green-600)}
.tv-toast--warning{background:var(--yellow-500);color:var(--ink)}
.tv-toast--danger{background:var(--red-600)}
.tv-toast__x{margin-left:var(--space-2);background:none;border:none;color:inherit;opacity:.7;cursor:pointer;font-size:15px}
.tv-toast__x:hover{opacity:1}

.tv-tooltip{position:relative;display:inline-flex}
.tv-tooltip__bubble{position:absolute;z-index:40;background:var(--ink);color:var(--white);font-family:var(--font-body);font-size:var(--text-xs);padding:6px 10px;border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-sm)}

.tv-product{display:flex;flex-direction:column;background:var(--white);border:var(--border-width) solid var(--border-hairline);border-radius:var(--radius-md);overflow:hidden;transition:transform var(--duration-base) var(--ease-standard),box-shadow var(--duration-base) var(--ease-standard);cursor:pointer;position:relative}
.tv-product:hover{transform:var(--lift-hover);box-shadow:var(--shadow-md)}
.tv-product__media{position:relative;background:var(--cream-100);aspect-ratio:1/1;display:grid;place-items:center;padding:var(--space-5)}
.tv-product__media img{max-width:100%;max-height:100%;object-fit:contain;filter:drop-shadow(var(--shadow-product))}
.tv-product__flags{position:absolute;top:10px;left:10px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.tv-product__body{display:flex;flex-direction:column;gap:6px;padding:var(--space-4)}
.tv-product__cat{font-family:var(--font-body);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--grey-600)}
.tv-product__pack{font-family:var(--font-body);font-size:13px;color:var(--grey-600)}
.tv-product__link{font-family:var(--font-body);font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--green-700);text-decoration:none;border-bottom:2px solid var(--orange-500);padding-bottom:2px;transition:color var(--duration-base) var(--ease-standard)}
.tv-product__link:hover{color:var(--green-800)}
.tv-product__name{font-family:var(--font-display);font-weight:var(--weight-black);text-transform:uppercase;font-size:var(--text-h4);line-height:1.05;color:var(--green-800);margin:0}
.tv-product__desc{font-family:var(--font-body);font-size:var(--text-sm);color:var(--text-muted);margin:0}
.tv-product__foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:0 var(--space-4) var(--space-4);margin-top:auto}
.tv-product__price{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:var(--text-h4);color:var(--text-price)}

.tv-heat{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--grey-600)}
.tv-heat__pips{display:inline-flex;gap:3px}
.tv-heat__pip{width:18px;height:5px;border-radius:var(--radius-pill);background:var(--grey-200)}

.tv-certs{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}
.tv-certs img{height:46px;width:auto;display:block}
.tv-certs--sm img{height:32px}

.tv-flash{display:inline-flex;align-items:center;gap:8px;background:var(--red-600);color:var(--white);font-family:var(--font-display);font-weight:var(--weight-black);text-transform:uppercase;line-height:1;padding:8px 16px;border-radius:var(--radius-sm);transform:skewX(-6deg)}
.tv-flash > *{transform:skewX(6deg)}
.tv-flash--gold{background:var(--gold-600)}
.tv-flash--brand{background:var(--green-700)}
