.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:46px;padding:0 var(--space-5);border-radius:var(--radius-md);font-weight:700;font-size:var(--text-base);white-space:nowrap;transition:box-shadow var(--duration-base) var(--ease-standard),background var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-press)}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(145deg,#558059,#44693f);color:#fbfcf6;box-shadow:6px 6px 14px var(--neu-dark),-4px -4px 10px var(--neu-light)}.btn-primary:hover{background:linear-gradient(145deg,#5c8860,#3f6339)}.btn-primary:active{box-shadow:inset 3px 3px 7px #2e4a2a,inset -2px -2px 6px #5f8e63}.btn-secondary{background:var(--color-bg);color:var(--color-primary-dark);box-shadow:var(--shadow-raised-sm)}.btn-secondary:hover{box-shadow:var(--shadow-raised-md)}.btn-secondary:active{box-shadow:var(--shadow-pressed)}.btn-outline{background:var(--color-bg);color:var(--color-text);box-shadow:var(--shadow-raised-sm)}.btn-outline:hover{box-shadow:var(--shadow-raised-md)}.btn-outline:active{box-shadow:var(--shadow-pressed)}.btn-danger{background:linear-gradient(145deg,#bd6753,#9c4634);color:#fcf5f2;box-shadow:6px 6px 14px var(--neu-dark),-4px -4px 10px var(--neu-light)}.btn-danger:hover{background:linear-gradient(145deg,#c4705c,#96402f)}.btn-danger:active{box-shadow:inset 3px 3px 7px #6e2e22,inset -2px -2px 6px #c97a68}.btn-ghost{background:0 0;color:var(--color-text-muted);height:auto;padding:var(--space-2);border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease-standard)}.btn-ghost:hover{color:var(--color-primary-dark)}.btn-ghost:active{transform:scale(.97)}.btn-sm{height:38px;padding:0 var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-block{width:100%}.btn-icon{width:42px;height:42px;padding:0;border-radius:var(--radius-md);color:var(--color-text-muted);background:var(--color-bg);box-shadow:none;transition:box-shadow var(--duration-base) var(--ease-standard),color var(--duration-fast) var(--ease-standard)}.btn-icon:hover{box-shadow:var(--shadow-raised-sm);color:var(--color-primary-dark)}.btn-icon:active{box-shadow:var(--shadow-pressed)}.btn[disabled]{opacity:.55;pointer-events:none}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field__label{font-size:var(--text-sm);font-weight:700;color:var(--color-text)}.field__hint{font-size:var(--text-xs);color:var(--color-text-muted)}.field__error{font-size:var(--text-xs);color:var(--color-danger);font-weight:600}.input,.select,.textarea{width:100%;height:48px;padding:0 var(--space-4);background:var(--color-bg);border:none;border-radius:var(--radius-md);color:var(--color-text);box-shadow:var(--shadow-inset-sm);transition:box-shadow var(--duration-base) var(--ease-standard)}.textarea{height:auto;min-height:92px;padding:var(--space-3) var(--space-4);resize:vertical}.input:focus,.select:focus,.textarea:focus{outline:0;box-shadow:var(--shadow-inset-sm),0 0 0 3px var(--color-focus-ring)}.input.has-error,.select.has-error,.textarea.has-error{box-shadow:var(--shadow-inset-sm),0 0 0 3px rgba(174,83,64,.3)}.input::placeholder,.textarea::placeholder{color:var(--color-text-muted)}.select{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='%235F6454' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:var(--space-8)}.input-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.search-bar{position:relative;display:flex;align-items:center}.search-bar__icon{position:absolute;left:var(--space-4);color:var(--color-text-muted);pointer-events:none}.search-bar__input{width:100%;height:58px;padding:0 var(--space-10) 0 var(--space-10);background:var(--color-bg);border:none;border-radius:var(--radius-lg);font-size:var(--text-md);font-weight:700;color:var(--color-text);box-shadow:var(--shadow-inset-md);transition:box-shadow var(--duration-base) var(--ease-standard)}.search-bar__input:focus{outline:0;box-shadow:var(--shadow-inset-md),0 0 0 3px var(--color-focus-ring)}.search-bar__clear{position:absolute;right:var(--space-3);width:34px;height:34px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);transition:box-shadow var(--duration-fast) var(--ease-standard)}.search-bar__clear:hover{box-shadow:var(--shadow-raised-sm)}.search-bar__clear:active{box-shadow:var(--shadow-pressed)}.search-suggestions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.search-suggestion-chip{padding:var(--space-2) var(--space-4);background:var(--color-primary-light);color:var(--color-primary-dark);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:700;transition:box-shadow var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-press)}.search-suggestion-chip:hover{box-shadow:var(--shadow-raised-sm)}.search-suggestion-chip:active{transform:scale(.96);box-shadow:var(--shadow-pressed)}.category-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:var(--space-3)}.category-tile{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4) var(--space-3);background:var(--color-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised-sm);text-align:center;transition:box-shadow var(--duration-base) var(--ease-standard),transform var(--duration-fast) var(--ease-press)}.category-tile:hover{box-shadow:var(--shadow-raised-md);transform:translateY(-1px)}.category-tile:active{box-shadow:var(--shadow-pressed);transform:translateY(0)}.category-tile__icon{width:42px;height:42px;border-radius:var(--radius-md);background:var(--color-beige);color:var(--color-primary-dark);display:flex;align-items:center;justify-content:center}.category-tile__label{font-size:var(--text-xs);font-weight:700;color:var(--color-text);line-height:var(--leading-tight)}.product-card{display:block;background:var(--color-bg);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-raised-md);transition:box-shadow var(--duration-base) var(--ease-standard),transform var(--duration-fast) var(--ease-press)}.product-card:active{box-shadow:var(--shadow-pressed);transform:scale(.99)}.product-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.product-card__name{font-family:var(--font-display);font-size:var(--text-md);font-weight:700;color:var(--color-text)}.product-card__meta{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:2px}.product-card__meta strong{color:var(--color-text);font-weight:700}.product-card__sizes{margin-top:var(--space-4);padding-top:var(--space-4);box-shadow:inset 0 1px 0 var(--neu-dark),inset 0 2px 0 var(--neu-light);display:flex;flex-direction:column;gap:var(--space-2)}.product-card__size-row{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-base)}.product-card__size-label{color:var(--color-text-muted);font-weight:700}.product-card__size-price{font-family:var(--font-display);font-weight:700;color:var(--color-accent-dark);font-variant-numeric:tabular-nums}.product-card__footer{margin-top:var(--space-3);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.product-card__updated{font-size:var(--text-xs);color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:700}.badge-success{background:var(--color-success-bg);color:#2e5b33}.badge-warning{background:var(--color-warning-bg);color:#7c5a1d}.badge-danger{background:var(--color-danger-bg);color:#8a3f2f}.badge-neutral{background:var(--color-bg);color:var(--color-text-muted);box-shadow:var(--shadow-inset-sm)}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background:var(--color-success)}.status-dot.offline{background:var(--color-warning)}.pill{display:inline-block;padding:2px var(--space-2);background:var(--color-beige);color:var(--color-text);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:700}.panel{background:var(--color-bg);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow-raised-md)}.panel-flat{background:var(--color-bg);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-inset-sm)}button.panel-flat{width:100%;text-align:left;transition:box-shadow var(--duration-fast) var(--ease-standard)}button.panel-flat:hover{box-shadow:var(--shadow-inset-md)}button.panel-flat:active{box-shadow:var(--shadow-pressed)}.variant-row{background:var(--color-bg);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-inset-sm)}.variant-row__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.variant-row__title{font-weight:700;font-size:var(--text-sm);color:var(--color-text-muted)}.variant-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3)}.data-table-wrap{overflow-x:auto;border-radius:var(--radius-lg);background:var(--color-bg);box-shadow:var(--shadow-raised-md)}.data-table{width:100%;font-size:var(--text-sm)}.data-table th{text-align:left;font-size:var(--text-xs);text-transform:none;color:var(--color-text-muted);font-weight:700;padding:var(--space-3) var(--space-4);box-shadow:inset 0 -1px 0 var(--neu-dark);white-space:nowrap}.data-table td{padding:var(--space-3) var(--space-4);box-shadow:inset 0 -1px 0 rgba(199,203,178,.6);white-space:nowrap}.data-table tr:last-child td{box-shadow:none}.price-delta{font-weight:700;font-variant-numeric:tabular-nums}.price-delta.up{color:#2e5b33}.price-delta.down{color:#8a3f2f}.history-card{background:var(--color-bg);border-radius:var(--radius-md);padding:var(--space-4);box-shadow:var(--shadow-raised-sm)}.history-card__row{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-sm)}.history-card__row+.history-card__row{margin-top:var(--space-2)}.modal-overlay{position:fixed;inset:0;background:var(--color-overlay);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);display:flex;align-items:flex-end;justify-content:center;z-index:100;padding:var(--space-4)}@media (min-width:560px){.variant-grid{grid-template-columns:repeat(3,1fr)}.modal-overlay{align-items:center}}.modal{width:100%;max-width:420px;background:var(--color-bg);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-5);box-shadow:var(--shadow-raised-lg)}.modal__title{margin-bottom:var(--space-2)}.modal__body{color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.modal__compare{margin:var(--space-4) 0;padding:var(--space-4);background:var(--color-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-inset-sm)}.modal__compare-row{display:flex;align-items:center;justify-content:space-between;font-size:var(--text-sm)}.modal__compare-row+.modal__compare-row{margin-top:var(--space-2)}.modal__actions{display:flex;gap:var(--space-3);margin-top:var(--space-5)}.modal__actions .btn{flex:1}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-10) var(--space-5);color:var(--color-text-muted)}.empty-state__icon{width:56px;height:56px;padding:14px;box-sizing:border-box;border-radius:var(--radius-full);background:var(--color-bg);box-shadow:var(--shadow-inset-sm);color:var(--color-secondary);margin-bottom:var(--space-4)}.empty-state__title{color:var(--color-text);font-weight:700;margin-bottom:var(--space-1)}.offline-banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-warning-bg);color:#7c5a1d;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:700}.toast-stack{position:fixed;left:50%;bottom:calc(var(--bottom-nav-height) + var(--safe-bottom) + var(--space-4));transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:var(--space-2);width:calc(100% - var(--space-8));max-width:400px}.toast{background:var(--color-text);color:#fbfcf6;padding:var(--space-3) var(--space-5);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:700;box-shadow:var(--shadow-float),0 2px 4px rgba(0,0,0,.15);text-align:center}.toast.success{background:#2e5b33}.toast.error{background:#8a3f2f}.steps{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-6)}.steps__item{flex:1;height:8px;border-radius:var(--radius-full);background:var(--color-bg);box-shadow:var(--shadow-inset-sm);overflow:hidden;position:relative}.steps__item.is-active::after,.steps__item.is-done::after{content:"";position:absolute;inset:1px;border-radius:var(--radius-full);background:linear-gradient(90deg,var(--color-primary),var(--color-primary-dark))}.fav-toggle{color:var(--color-text-muted)}.fav-toggle.is-active{color:var(--color-accent);box-shadow:var(--shadow-pressed)}.install-banner{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--color-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised-sm)}.install-banner__text{flex:1}.install-banner__title{font-weight:700;font-size:var(--text-sm);color:var(--color-text)}.install-banner__subtitle{font-size:var(--text-xs);color:var(--color-text-muted)}