.favorites-page{min-height:calc(100vh - 166px);padding:clamp(36px,5vw,68px) 0 90px;background:radial-gradient(circle at 12% 0%,#fff 0,#f8faff 34%,#f3f6fd 100%)}
.favorites-heading{max-width:710px;margin:0 auto 32px;text-align:center}
.favorites-kicker{display:inline-flex;align-items:center;gap:9px;color:#2c5ed1;font-size:11px;font-weight:800;letter-spacing:.16em}
.favorites-kicker:before,.favorites-kicker:after{content:'';width:28px;height:1px;background:#b9c9ee}
.favorites-title{margin:11px 0 8px;color:#142d63;font:600 clamp(36px,4vw,52px)/1.05 'Playfair Display',serif;letter-spacing:-.02em}
.favorites-subtitle{max-width:560px;margin:0 auto;color:#697b9d;font-size:15px;line-height:1.7}
.favorites-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1120px;margin:0 auto 18px;padding:0 2px;color:#7282a0;font-size:13px}
.favorites-tools button{border:1px solid #d5def1;border-radius:12px;padding:10px 15px;background:#fff;color:#3159aa;font:700 12px inherit;cursor:pointer;box-shadow:0 5px 14px rgba(28,62,133,.06);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.favorites-tools button:hover{border-color:#88a5e6;transform:translateY(-1px);box-shadow:0 9px 18px rgba(28,62,133,.1)}
.favorites-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;max-width:1120px;margin:0 auto}
.favorites-grid .product-card{min-height:300px;border:1px solid #e2e8f5;border-radius:18px;background:rgba(255,255,255,.92);box-shadow:0 12px 28px rgba(34,65,130,.08);overflow:hidden;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.favorites-grid .product-card:hover{border-color:#b8c9ee;transform:translateY(-5px);box-shadow:0 20px 38px rgba(34,65,130,.14)}
.favorites-grid .pic{min-height:170px;padding:18px;background:linear-gradient(145deg,#f5f8ff,#e9effc);display:grid;place-items:center}
.favorites-grid .pic img{max-height:155px;max-width:100%;object-fit:contain;mix-blend-mode:multiply}
.favorites-grid .product-info{padding:16px 17px 10px}.favorites-grid .product-name{color:#1a3267;font-weight:750;line-height:1.35}.favorites-grid .product-desc{margin-top:5px;color:#8090ad;font-size:12px}.favorites-grid .price{margin-top:10px;color:#2459d2;font-size:17px;font-weight:800}
.favorites-grid .fav{top:12px;right:12px;width:34px;height:34px;border:1px solid #dbe4f7;border-radius:50%;background:#fff;color:#2d63df!important;box-shadow:0 5px 12px rgba(23,54,119,.1);transition:transform .2s ease,background .2s ease}.favorites-grid .fav:hover{background:#eef3ff;transform:scale(1.08)}
.favorites-grid .add{margin:0 17px 17px;border:0;border-radius:10px;padding:10px 13px;background:#2459d2;color:#fff;font-weight:750;cursor:pointer;transition:transform .2s ease,background .2s ease}.favorites-grid .add:hover{background:#1d49b1;transform:translateY(-1px)}.favorites-grid .add:disabled{background:#d9dfeb;cursor:not-allowed}
.favorites-empty{grid-column:1/-1;min-height:360px;display:grid;place-items:center;text-align:center;padding:42px 24px;border:1px solid #e0e7f5;border-radius:24px;background:linear-gradient(145deg,rgba(255,255,255,.97),rgba(246,249,255,.96));box-shadow:0 18px 45px rgba(34,65,130,.09);animation:favoriteEmptyIn .55s ease both}
.favorites-empty-content{display:grid;justify-items:center;max-width:500px}.favorites-empty-icon{width:76px;height:76px;display:grid;place-items:center;border-radius:24px;background:#eaf0ff;color:#2d63df;font-size:39px;line-height:1;box-shadow:inset 0 0 0 1px #d6e2ff}.favorites-empty h2{margin:18px 0 8px;color:#18346e;font:600 28px/1.15 'Playfair Display',serif}.favorites-empty p{margin:0;color:#7585a1;line-height:1.65}.favorites-empty-link{display:inline-flex;align-items:center;gap:10px;margin-top:23px;padding:12px 18px;border-radius:11px;background:#2459d2;color:#fff;font-weight:750;text-decoration:none;box-shadow:0 9px 18px rgba(36,89,210,.2);transition:transform .2s ease,background .2s ease}.favorites-empty-link:hover{background:#1d49b1;transform:translateY(-2px)}
.catalog-load-error{grid-column:1/-1;padding:28px;text-align:center;color:#7182a1}
@keyframes favoriteEmptyIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:900px){.favorites-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.favorites-page{padding:30px 0 58px}.favorites-heading{margin-bottom:25px}.favorites-title{font-size:38px}.favorites-tools{align-items:flex-start;flex-direction:column;margin-bottom:14px}.favorites-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.favorites-grid .product-card{min-height:260px;border-radius:14px}.favorites-grid .pic{min-height:130px;padding:12px}.favorites-grid .pic img{max-height:120px}.favorites-grid .product-info{padding:12px}.favorites-grid .product-name{font-size:13px}.favorites-grid .price{font-size:15px}.favorites-grid .add{margin:0 12px 12px;padding:9px 8px}.favorites-empty{min-height:330px;border-radius:18px}.favorites-empty h2{font-size:25px}}
@media(prefers-reduced-motion:reduce){.favorites-grid .product-card,.favorites-tools button,.favorites-grid .fav,.favorites-grid .add,.favorites-empty-link,.favorites-empty{transition:none;animation:none}}

/* The shared catalog rule makes .add a compact icon button; favorites needs a full action button. */
.favorites-grid .product-card .add{position:static;width:calc(100% - 34px);min-height:44px;margin:0 17px 17px;padding:11px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #2459d2;border-radius:12px;background:linear-gradient(135deg,#3569df,#214fc4);color:#fff;font-size:13px;font-weight:800;line-height:1;box-shadow:0 8px 18px rgba(36,89,210,.18);transition:transform .2s ease,box-shadow .2s ease,background .2s ease}
.favorites-grid .product-card .add:hover{background:linear-gradient(135deg,#2d60d3,#193fa7);transform:translateY(-2px);box-shadow:0 12px 22px rgba(36,89,210,.25)}
.favorites-grid .product-card .add:active{transform:translateY(0) scale(.98)}
.favorites-grid .product-card .add:disabled{background:#e6ebf5;border-color:#d8e0ee;color:#7d8ba5;box-shadow:none;transform:none}
