.shop-page{max-width:1200px;margin:0 auto;padding:40px 20px 80px}.shop-header{margin-bottom:32px}.shop-title{font-family:var(--font-display);font-size:32px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.shop-subtitle{font-size:14px;color:var(--text-secondary)}.shop-filters{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px;align-items:center}.shop-filter-select,.shop-filter-input{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 12px;color:var(--text-primary);font-size:14px;font-family:var(--font-body);outline:none;transition:border-color .2s}.shop-filter-select:focus,.shop-filter-input:focus{border-color:var(--accent)}.shop-filter-select:focus-visible,.shop-filter-input:focus-visible{outline:2px solid rgba(139,92,246,.8);outline-offset:2px}.shop-filter-input{flex:1;min-width:200px}.shop-filter-input::placeholder{color:var(--text-muted)}.shop-search-wrapper{position:relative;flex:1;min-width:200px}.shop-search-wrapper svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-muted);pointer-events:none}.shop-search-wrapper .shop-filter-input{padding-left:36px;width:100%;box-sizing:border-box}.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media(max-width:1024px){.shop-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.shop-grid{grid-template-columns:1fr}}.spread-shop-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0;overflow:hidden;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.spread-shop-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0003;border-color:rgba(var(--accent-rgb),.4)}.card-preview{height:160px;background:#ffffff05;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--border)}.card-preview svg{max-width:100%;max-height:100%}.card-info{padding:16px}.card-name{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}.card-badge{font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(var(--accent-rgb),.15);color:rgba(var(--accent-rgb),1);text-transform:capitalize}.card-stats{font-size:12px;color:var(--text-secondary);display:flex;gap:12px}.card-rating{color:rgba(var(--accent-rgb),.8)}.star-filled{color:rgba(var(--accent-rgb),.9)}.star-empty{color:var(--text-muted)}.shop-no-preview{color:var(--text-muted);font-size:14px}.card-badge--official{background:#ffd70033;color:gold}.shop-card-count{font-size:12px;color:var(--text-muted)}.shop-no-reviews{color:var(--text-muted);font-size:13px}.shop-empty{text-align:center;padding:80px 20px;color:var(--text-secondary);font-size:16px;display:none}.shop-empty.active{display:block}.shop-loading{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}@media(max-width:1024px){.shop-loading{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.shop-loading{grid-template-columns:1fr}}@keyframes shimmer{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;height:280px;animation:shimmer 1.5s infinite}.shop-loading.hidden{display:none}.shop-pagination{text-align:center;margin-top:32px}.shop-pagination.hidden{display:none}.shop-load-more{padding:12px 32px;border-radius:8px;font-size:16px;font-weight:600;background:rgba(var(--accent-rgb),1);color:#fff;border:none;cursor:pointer;transition:background .2s}.shop-load-more:hover{background:rgba(var(--accent-rgb),.85)}.shop-load-more:disabled{opacity:.5;cursor:not-allowed}.shop-detail-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:none;align-items:center;justify-content:center;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.shop-detail-modal.active{display:flex}.shop-detail-modal .modal-content{background:var(--surface);border:1px solid var(--border);border-radius:16px;max-width:640px;width:90%;max-height:85vh;overflow-y:auto;padding:32px;position:relative}.shop-detail-modal .modal-close{position:absolute;top:16px;right:16px;background:none;border:none;color:var(--text-secondary);font-size:24px;cursor:pointer;line-height:1}.shop-detail-modal .modal-close:hover{color:var(--text-primary)}.shop-detail-modal .modal-preview{width:100%;height:200px;background:#ffffff05;border-radius:8px;margin-bottom:24px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border)}.shop-detail-modal .modal-name{font-size:24px;font-weight:700;color:var(--text-primary);margin-bottom:12px;font-family:var(--font-display)}.shop-detail-modal .modal-description{font-size:14px;color:var(--text-secondary);line-height:1.6;margin-bottom:20px}.shop-detail-modal .modal-badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.shop-detail-modal .modal-positions{margin-bottom:20px}.shop-detail-modal .modal-positions h4{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.shop-detail-modal .modal-positions ol{padding-left:20px;color:var(--text-secondary);font-size:13px;line-height:1.8}.shop-detail-modal .modal-stats{display:flex;gap:16px;font-size:14px;color:var(--text-secondary);margin-bottom:20px}.shop-detail-modal .modal-add-btn{width:100%;padding:12px;border-radius:8px;font-size:16px;font-weight:600;background:rgba(var(--accent-rgb),1);color:#fff;border:none;cursor:pointer;transition:background .2s}.shop-detail-modal .modal-add-btn:hover{background:rgba(var(--accent-rgb),.85)}.shop-detail-modal .modal-add-btn:disabled{opacity:.5;cursor:not-allowed}.shop-detail-modal .modal-reviews{margin-top:24px;border-top:1px solid var(--border);padding-top:20px}.shop-detail-modal .modal-reviews h4{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.review-item{padding:12px 0;border-bottom:1px solid var(--border)}.review-item:last-child{border-bottom:none}.review-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.review-rating{color:rgba(var(--accent-rgb),.8);font-size:14px}.review-date{font-size:12px;color:var(--text-muted)}.review-text{font-size:13px;color:var(--text-secondary);line-height:1.5}.modal-rate-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--border)}.modal-rate-section h4{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.rate-stars{display:flex;gap:4px;margin-bottom:12px}.rate-star{font-size:24px;cursor:pointer;color:var(--text-muted);transition:color .15s;-webkit-user-select:none;user-select:none}.rate-star.active,.rate-star:hover{color:rgba(var(--accent-rgb),.9)}.rate-textarea{width:100%;min-height:80px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;color:var(--text-primary);font-size:14px;font-family:var(--font-body);resize:vertical;box-sizing:border-box;outline:none}.rate-textarea:focus{border-color:var(--accent)}.rate-textarea:focus-visible{outline:2px solid rgba(139,92,246,.8);outline-offset:2px}.rate-textarea::placeholder{color:var(--text-muted)}.rate-submit{padding:8px 20px;border-radius:8px;font-size:14px;font-weight:600;background:rgba(var(--accent-rgb),1);color:#fff;border:none;cursor:pointer;margin-top:12px;transition:background .2s}.rate-submit:hover{background:rgba(var(--accent-rgb),.85)}.rate-submit:disabled{opacity:.5;cursor:not-allowed}.rate-error{font-size:12px;color:var(--danger);margin-top:8px}.shop-toast{position:fixed;bottom:24px;right:24px;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;color:#fff;background:rgba(var(--accent-rgb),1);transform:translateY(80px);opacity:0;transition:transform .3s ease,opacity .3s;z-index:9999}.shop-toast.show{transform:translateY(0);opacity:1}.shop-toast.error{background:var(--danger)}.shop-toast.success{background:var(--success)}@media(max-width:600px){.shop-page{padding:24px 16px 60px}.shop-title{font-size:26px}.shop-filters{gap:8px}.shop-filter-select,.shop-filter-input{padding:6px 10px;font-size:13px}.shop-detail-modal .modal-content{padding:24px}.shop-detail-modal .modal-name{font-size:20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
