v1.0.0.1
StocketBase
- body[data-theme="light"] {
- --bg: #f8fafc;
- --bg-alt: #f1f5f9;
- --panel: #ffffff;
- --panel-raised: #ffffff;
- --border: #e2e8f0;
- --border-strong: #cbd5e1;
- --text: #0f172a;
- --muted: #64748b;
- --muted-dim: #94a3b8;
- --accent: #2e4fe0;
- --accent-hover: #2440c0;
- --accent-soft: rgba(46, 79, 224, 0.08);
- --panel-alt: #f1f5f9;
- --panel-hover: #e2e8f0;
- --radius: 12px;
- --radius-sm: 8px;
- --danger: #dc2626;
- --danger-dim: rgba(220, 38, 38, 0.1);
- --success: #059669;
- --success-dim: rgba(5, 150, 105, 0.1);
- --warning: #d97706;
- --warning-dim: rgba(217, 119, 6, 0.1);
- --info: #0284c7;
- --info-dim: rgba(2, 132, 199, 0.1);
- --shadow-card: 0 1px 2px rgba(20, 20, 30, 0.04), 0 8px 24px rgba(20, 20, 30, 0.06);
- --shadow-card-hover: 0 4px 12px rgba(20, 20, 30, 0.06), 0 16px 40px rgba(20, 20, 30, 0.10);
- }
-
- body[data-theme="dark"] {
- --bg: #050506;
- --bg-alt: #0c0c0f;
- --panel: #0c0c0f;
- --panel-raised: #131317;
- --border: #232329;
- --border-strong: #303038;
- --text: #f8fafc;
- --muted: #8b8b97;
- --muted-dim: #5c5c68;
- --accent: #3862f5;
- --accent-hover: #5b82ff;
- --accent-soft: rgba(56, 98, 245, 0.18);
- --panel-alt: #131317;
- --panel-hover: #1a1a1f;
- --radius: 12px;
- --radius-sm: 8px;
- --danger: #ef4444;
- --danger-dim: rgba(239, 68, 68, 0.14);
- --success: #10b981;
- --success-dim: rgba(16, 185, 129, 0.14);
- --warning: #f59e0b;
- --warning-dim: rgba(245, 158, 11, 0.14);
- --info: #0ea5e9;
- --info-dim: rgba(14, 165, 233, 0.14);
- --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.3), 0 8px 24px rgba(0, 0, 0, 0.35);
- --shadow-card-hover: 0 4px 12px rgba(0, 0, 0, 0.35), 0 20px 48px rgba(0, 0, 0, 0.5);
- }
-
- * {
- box-sizing: border-box;
- }
-
- .icon {
- width: 18px;
- height: 18px;
- flex-shrink: 0;
- }
-
- .icon-sm {
- width: 15px;
- height: 15px;
- }
-
- .icon-lg {
- width: 22px;
- height: 22px;
- }
-
- .nav-item-icon {
- width: 15px;
- height: 15px;
- margin-right: 6px;
- flex-shrink: 0;
- }
-
- .nav-item-icon svg {
- width: 100%;
- height: 100%;
- display: block;
- }
-
- .auth-page {
- align-items: center;
- justify-content: center;
- padding: 24px;
- }
-
- .auth-card {
- width: 100%;
- max-width: 380px;
- padding: 32px;
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: 14px;
- }
-
- .auth-card-disabled {
- text-align: center;
- }
-
- .auth-card h1 {
- margin: 0 0 4px;
- font-size: 18px;
- }
-
- .auth-subtitle {
- margin: 0 0 24px;
- color: var(--muted);
- font-size: 13px;
- line-height: 1.6;
- }
-
- .auth-tabs {
- display: flex;
- gap: 4px;
- margin-bottom: 20px;
- border-bottom: 1px solid var(--border);
- }
-
- .auth-tabs a {
- flex: 1;
- padding: 10px;
- color: var(--muted);
- font-size: 13px;
- text-align: center;
- text-decoration: none;
- border-bottom: 2px solid transparent;
- }
-
- .auth-tabs a.active {
- color: var(--text);
- border-bottom-color: var(--accent);
- }
-
- .auth-card label {
- display: block;
- margin: 14px 0 6px;
- color: var(--muted);
- font-size: 13px;
- }
-
- .auth-card input {
- width: 100%;
- padding: 10px 12px;
- color: var(--text);
- font-size: 14px;
- background: var(--bg-alt);
- border: 1px solid var(--border);
- border-radius: 8px;
- }
-
- .auth-card input:focus {
- outline: 2px solid var(--accent);
- outline-offset: 1px;
- border-color: var(--accent);
- }
-
- .auth-card button {
- width: 100%;
- margin-top: 24px;
- padding: 12px;
- color: var(--bg);
- font-size: 14px;
- font-weight: 600;
- background: var(--accent);
- border: 0;
- border-radius: 8px;
- cursor: pointer;
- }
-
- .auth-card button:hover {
- background: var(--accent-hover);
- }
-
- .auth-error {
- margin-bottom: 14px;
- padding: 10px 12px;
- color: #ff9aa2;
- font-size: 13px;
- background: color-mix(in srgb, #e40035 16%, var(--panel));
- border: 1px solid color-mix(in srgb, #e40035 42%, var(--border));
- border-radius: 8px;
- }
-
- .antibot-trap {
- position: absolute !important;
- left: -10000px !important;
- width: 1px !important;
- height: 1px !important;
- opacity: 0 !important;
- pointer-events: none !important;
- }
-
- .antibot-box {
- margin-top: 18px;
- }
-
- .antibot-image {
- width: 100%;
- overflow: hidden;
- margin-bottom: 6px;
- border: 1px solid var(--border);
- border-radius: 8px;
- line-height: 0;
- }
-
- .antibot-image img {
- display: block;
- width: 100%;
- height: auto;
- user-select: none;
- -webkit-user-drag: none;
- }
-
- button {
- -webkit-tap-highlight-color: transparent;
- outline: none;
- }
-
- button:focus-visible {
- outline: 2px solid var(--accent);
- outline-offset: 2px;
- }
-
- html {
- height: 100%;
- overflow-x: hidden;
- }
-
- body {
- margin: 0;
- min-height: 100vh;
- display: flex;
- flex-direction: column;
- font-family: var(--font-ui, -apple-system, BlinkMacSystemFont, sans-serif);
- background: var(--bg);
- color: var(--text);
- transition: background .15s, color .15s;
- -webkit-font-smoothing: antialiased;
- }
-
- h1,
- h2,
- h3,
- .site-brand,
- .article-title,
- .product-card-body h3,
- .category-title,
- .related-section h2,
- .hero-title,
- .subscription-offer-name {
- font-family: var(--font-heading, -apple-system, BlinkMacSystemFont, sans-serif);
- letter-spacing: -0.02em;
- }
-
- .site-nav,
- .site-nav a,
- .site-auth-links,
- .site-auth-links a,
- .product-card-category,
- .article-category-link,
- .badge-paid,
- .unlock-btn,
- .subscription-divider,
- .subscription-offer-price,
- .hero-eyebrow,
- .section-heading,
- .related-section h2,
- .article-meta,
- .site-footer,
- .site-footer-row,
- .site-footer-links a,
- .consent-banner,
- .consent-banner p,
- .consent-banner-actions button,
- .comments-placeholder,
- button,
- input,
- select,
- textarea {
- font-family: var(--font-ui, -apple-system, BlinkMacSystemFont, sans-serif);
- }
-
- a {
- color: inherit;
- }
-
- .site-shell {
- display: flex;
- flex-direction: column;
- flex: 0 0 auto;
- width: 100%;
- }
-
- .site-footer {
- flex: 1 0 auto;
- }
-
- .site-header {
- display: flex;
- align-items: center;
- justify-content: space-between;
- padding: 18px 40px;
- border-bottom: 1px solid var(--border);
- gap: 24px;
- flex-wrap: wrap;
- position: sticky;
- top: 0;
- z-index: 50;
- background: color-mix(in srgb, var(--bg) 88%, transparent);
- backdrop-filter: blur(10px);
- -webkit-backdrop-filter: blur(10px);
- }
-
- .site-header-row {
- display: flex;
- align-items: center;
- gap: 16px;
- min-width: 0;
- }
-
- .site-menu-toggle {
- display: none;
- align-items: center;
- justify-content: center;
- width: 38px;
- height: 38px;
- border-radius: 999px;
- border: 1px solid var(--border);
- background: var(--panel-raised);
- color: var(--text);
- cursor: pointer;
- flex-shrink: 0;
- z-index: 999;
- }
-
- .site-menu-toggle-icon-close {
- display: none;
- }
-
- .site-menu-toggle[aria-expanded="true"] .site-menu-toggle-icon-open {
- display: none;
- }
-
- .site-menu-toggle[aria-expanded="true"] .site-menu-toggle-icon-close {
- display: block;
- }
-
- .site-auth-links.site-auth-links-mobile {
- display: none;
- }
-
- .site-nav-backdrop {
- display: none;
- }
-
- .site-brand {
- font-weight: 800;
- font-size: 20px;
- text-decoration: none;
- display: flex;
- align-items: center;
- gap: 8px;
- }
-
- .site-brand-short {
- display: none;
- }
-
- .site-brand.use-short .site-brand-full {
- display: none;
- }
-
- .site-brand.use-short .site-brand-short {
- display: inline;
- }
-
- .site-brand-logo {
- height: 34px;
- width: auto;
- max-width: 150px;
- object-fit: contain;
- display: block;
- flex-shrink: 0;
- }
-
- .site-nav {
- display: flex;
- align-items: center;
- gap: 26px;
- flex-wrap: wrap;
- }
-
- .site-nav a {
- display: flex;
- align-items: center;
- text-decoration: none;
- font-size: 14px;
- font-weight: 600;
- line-height: 1.2;
- color: var(--muted);
- transition: color .12s;
- }
-
- .site-nav a:hover {
- color: var(--text);
- }
-
- .site-search-icon-link {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 34px;
- height: 34px;
- border-radius: 999px;
- color: var(--muted);
- transition: background .12s, color .12s;
- flex-shrink: 0;
- }
-
- .site-search-icon-link:hover {
- color: var(--text);
- background: var(--panel-raised);
- }
-
- .site-search-icon-link svg {
- width: 17px;
- height: 17px;
- }
-
- .site-search-form {
- display: flex;
- align-items: center;
- gap: 8px;
- background: var(--panel-raised);
- border: 1px solid var(--border);
- border-radius: 999px;
- padding: 6px 14px;
- flex-shrink: 0;
- line-height: 1;
- }
-
- .site-search-form-icon {
- display: flex;
- align-items: center;
- color: var(--muted);
- flex-shrink: 0;
- line-height: 0;
- }
-
- .site-search-form-icon svg {
- width: 15px;
- height: 15px;
- display: block;
- }
-
- .site-search-input {
- margin: 0;
- padding: 0;
- border: none;
- background: transparent;
- outline: none;
- font-size: 13.5px;
- line-height: 1.4;
- color: var(--text);
- min-width: 0;
- width: 140px;
- vertical-align: middle;
- }
-
- .site-search-input:focus,
- .site-search-input:focus-visible {
- outline: none;
- }
-
- .site-search-form-page {
- max-width: 480px;
- padding: 10px 16px;
- margin: 4px 0 24px;
- }
-
- .site-search-form-page .site-search-input {
- width: auto;
- flex: 1;
- }
-
- .site-search-submit {
- flex-shrink: 0;
- border: none;
- background: var(--accent);
- color: #fff;
- font-size: 13.5px;
- font-weight: 700;
- padding: 9px 20px;
- border-radius: 999px;
- cursor: pointer;
- transition: background .12s;
- font-family: inherit;
- }
-
- .site-search-submit:hover {
- background: var(--accent-hover);
- }
-
- .search-hint {
- color: var(--muted);
- font-size: 13.5px;
- margin: 0 0 20px;
- }
-
- .contact-form-block {
- max-width: 560px;
- margin: 32px 0;
- padding: 24px;
- border: 1px solid var(--border);
- border-radius: var(--radius);
- background: var(--panel);
- box-shadow: var(--shadow-card);
- font-family: var(--font-ui, -apple-system, BlinkMacSystemFont, sans-serif);
- font-size: 15px;
- line-height: 1.5;
- }
-
- .article-content .contact-form-block h2.contact-form-title {
- margin: 0 0 14px;
- font-size: 22px;
- }
-
- .contact-form {
- display: flex;
- flex-direction: column;
- gap: 6px;
- }
-
- .contact-form label {
- margin-top: 8px;
- font-size: 13px;
- font-weight: 600;
- color: var(--muted);
- }
-
- .contact-form input[type="text"],
- .contact-form input[type="email"],
- .contact-form select,
- .contact-form textarea {
- width: 100%;
- padding: 10px 12px;
- border: 1px solid var(--border);
- border-radius: var(--radius-sm);
- background: var(--bg);
- color: var(--text);
- font: inherit;
- font-size: 14.5px;
- }
-
- .contact-form input[hidden] {
- display: none;
- }
-
- .contact-form #contact-subject-custom {
- margin-top: 6px;
- }
-
- .contact-form textarea {
- resize: vertical;
- min-height: 130px;
- }
-
- .contact-form input:focus,
- .contact-form select:focus,
- .contact-form textarea:focus {
- outline: none;
- border-color: var(--accent);
- box-shadow: 0 0 0 3px var(--accent-soft);
- }
-
- .contact-antibot {
- max-width: 260px;
- }
-
- .contact-submit {
- align-self: flex-start;
- margin-top: 14px;
- border: none;
- cursor: pointer;
- }
-
- .contact-form-alert {
- margin: 0 0 14px;
- padding: 10px 14px;
- border-radius: var(--radius-sm);
- font-size: 14px;
- font-weight: 600;
- }
-
- .contact-form-alert-success {
- background: var(--success-dim);
- color: var(--success);
- }
-
- .contact-form-alert-error {
- background: var(--danger-dim);
- color: var(--danger);
- }
-
- .product-counters {
- display: flex;
- flex-wrap: wrap;
- gap: 8px;
- margin: 10px 0 4px;
- }
-
- .product-counter {
- display: inline-flex;
- align-items: center;
- gap: 6px;
- padding: 5px 12px;
- border: 1px solid var(--border);
- border-radius: 999px;
- background: var(--panel-alt);
- color: var(--muted);
- font-size: 13px;
- font-weight: 600;
- }
-
- .product-counter .icon {
- width: 15px;
- height: 15px;
- }
-
- .product-downloads {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
- gap: 10px;
- margin: 14px 0 18px;
- }
-
- .product-download-btn {
- display: inline-flex;
- align-items: center;
- gap: 8px;
- margin-top: 0;
- max-width: 100%;
- }
-
- .product-download-btn span {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- .product-download-btn .icon {
- flex-shrink: 0;
- }
-
- .product-download-btn span {
- min-width: 0;
- }
-
- .product-download-btn small {
- flex-shrink: 0;
- white-space: nowrap;
- opacity: .75;
- font-size: 12px;
- font-weight: 500;
- }
-
- .product-downloads-owned {
- display: flex;
- align-items: center;
- gap: 6px;
- margin: 0;
- color: var(--success);
- font-size: 13.5px;
- font-weight: 600;
- }
-
- .download-list {
- list-style: none;
- margin: 12px 0 24px;
- padding: 0;
- display: grid;
- gap: 8px;
- }
-
- .download-list li {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 12px;
- flex-wrap: wrap;
- padding: 12px 16px;
- border: 1px solid var(--border);
- border-radius: var(--radius-sm);
- background: var(--panel);
- }
-
- .download-list a {
- display: inline-flex;
- align-items: center;
- gap: 6px;
- color: var(--accent);
- font-weight: 600;
- text-decoration: none;
- word-break: break-all;
- }
-
- .download-list small {
- color: var(--muted);
- font-size: 12.5px;
- }
-
- .search-filters {
- display: flex;
- flex-wrap: wrap;
- align-items: flex-end;
- gap: 14px;
- margin: 0 0 20px;
- }
-
- .search-filter-field {
- display: flex;
- flex-direction: column;
- gap: 6px;
- font-size: 12px;
- color: var(--muted);
- }
-
- .search-filter-field select {
- min-width: 170px;
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--panel-raised);
- color: var(--text);
- padding: 9px 12px;
- font-size: 13.5px;
- }
-
- .site-auth-links {
- display: flex;
- gap: 10px;
- align-items: center;
- }
-
- @media (min-width: 861px) {
- body:not(.site-menu-side) .site-header-no-auth .site-nav {
- margin-left: auto;
- }
-
- body:not(.site-menu-side) .site-header-no-auth .site-nav .site-search-form-nav {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- width: min(360px, 32vw);
- margin: 0;
- }
-
- body:not(.site-menu-side) .site-header-no-auth .site-nav .site-search-form-nav .site-search-input {
- width: auto;
- flex: 1;
- min-width: 0;
- }
- }
-
- .site-auth-links a {
- text-decoration: none;
- font-size: 13.5px;
- font-weight: 600;
- color: var(--muted);
- padding: 8px 16px;
- border-radius: 999px;
- transition: background .12s, color .12s;
- }
-
- .site-auth-links a:hover {
- color: var(--text);
- background: var(--panel-raised);
- }
-
- .site-auth-links a.site-auth-cta {
- background: var(--accent);
- color: #fff;
- }
-
- .site-auth-links a.site-auth-cta:hover {
- background: var(--accent-hover);
- color: #fff;
- }
-
- .site-cart-link {
- position: relative;
- display: flex !important;
- align-items: center;
- justify-content: center;
- padding: 8px 12px !important;
- }
-
- .site-cart-count {
- position: absolute;
- top: 2px;
- right: 2px;
- min-width: 16px;
- height: 16px;
- padding: 0 4px;
- border-radius: 999px;
- background: var(--accent);
- color: #fff;
- font-size: 10.5px;
- font-weight: 700;
- line-height: 16px;
- text-align: center;
- }
-
- .site-cart-link-desktop {
- width: 42px !important;
- height: 42px !important;
- padding: 0 !important;
- border-radius: 50%;
- }
-
- .site-cart-link-desktop .icon,
- .site-cart-link-desktop .shop-icon-custom svg {
- width: 22px;
- height: 22px;
- }
-
- .site-cart-link-desktop:hover {
- background: var(--panel-raised);
- }
-
- .site-cart-link-desktop .site-cart-count {
- top: -2px;
- right: -2px;
- }
-
- .site-cart-link-header {
- display: none !important;
- }
-
- .shop-icon-custom {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- color: inherit;
- }
-
- .shop-icon-custom svg {
- width: 100%;
- height: 100%;
- fill: currentColor;
- }
-
- body.site-menu-bottom .site-shell {
- flex-direction: column-reverse;
- }
-
- body.site-menu-side .site-shell {
- flex-direction: row;
- }
-
- body.site-menu-side .site-header {
- flex-direction: column;
- align-items: flex-start;
- border-right: 1px solid var(--border);
- border-bottom: none;
- width: 240px;
- height: 100vh;
- position: sticky;
- top: 0;
- backdrop-filter: none;
- background: var(--panel);
- }
-
- body.site-menu-side .site-nav {
- flex-direction: column;
- align-items: stretch;
- }
-
- body.site-menu-side .site-nav .site-search-form {
- width: 100%;
- }
-
- body.site-menu-side .site-nav .site-search-input {
- width: 100%;
- }
-
- body.site-menu-side .site-main {
- flex: 1;
- }
-
- .site-main {
- flex: 1;
- padding: 40px;
- max-width: 1180px;
- margin: 0 auto;
- width: 100%;
- }
-
- .hero-section {
- padding: 8px 0 40px;
- }
-
- .hero-eyebrow {
- font-size: 12.5px;
- text-transform: uppercase;
- letter-spacing: .1em;
- color: var(--accent);
- font-weight: 700;
- margin-bottom: 12px;
- }
-
- .hero-title {
- font-size: 44px;
- font-weight: 800;
- line-height: 1.08;
- margin: 0 0 16px;
- max-width: 760px;
- }
-
- .hero-subtitle {
- font-size: 17px;
- color: var(--muted);
- max-width: 560px;
- line-height: 1.6;
- margin: 0;
- }
-
- .section-heading-row {
- display: flex;
- align-items: baseline;
- justify-content: space-between;
- margin-bottom: 20px;
- gap: 16px;
- flex-wrap: wrap;
- }
-
- .section-heading {
- font-size: 13px;
- text-transform: uppercase;
- letter-spacing: .07em;
- color: var(--muted);
- font-weight: 700;
- margin: 0;
- }
-
- .article-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
- gap: 24px;
- }
-
- .article-grid-small {
- grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
- }
-
- .featured-banner {
- display: grid;
- grid-template-columns: 2fr 1fr 1fr;
- grid-template-rows: repeat(2, minmax(150px, 1fr));
- gap: 14px;
- margin-bottom: 32px;
- }
-
- .featured-banner-item {
- position: relative;
- min-height: 150px;
- overflow: hidden;
- border-radius: 2px;
- background: var(--panel-raised);
- color: #fff;
- text-decoration: none;
- }
-
- .featured-banner-item-large {
- grid-row: span 2;
- }
-
- .featured-banner-item-small:nth-child(2) {
- grid-column: 2;
- }
-
- .featured-banner-item-small:nth-child(3) {
- grid-column: 3;
- }
-
- .featured-banner-item-small:nth-child(4) {
- grid-column: 2;
- }
-
- .featured-banner-item-small:nth-child(5) {
- grid-column: 3;
- }
-
- .featured-banner-item img {
- width: 100%;
- height: 100%;
- min-height: 150px;
- display: block;
- object-fit: cover;
- transition: transform .2s ease;
- }
-
- .featured-banner-item:hover img {
- transform: scale(1.04);
- }
-
- .featured-banner-item::after {
- content: '';
- position: absolute;
- inset: 35% 0 0;
- background: linear-gradient(transparent, rgba(0, 0, 0, .78));
- }
-
- .featured-banner-title {
- position: absolute;
- z-index: 1;
- right: 18px;
- bottom: 16px;
- left: 18px;
- font-family: var(--font-heading, -apple-system, BlinkMacSystemFont, sans-serif);
- font-size: 18px;
- font-weight: 700;
- line-height: 1.15;
- text-shadow: 0 1px 2px rgba(0, 0, 0, .7);
- }
-
- .featured-banner-item-large .featured-banner-title {
- font-size: 28px;
- }
-
- .pagination-numbered {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- justify-content: center;
- gap: 6px;
- margin: 40px 0 0;
- }
-
- .pagination-link {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- min-width: 38px;
- height: 38px;
- padding: 0 12px;
- border-radius: 999px;
- border: 1px solid var(--border);
- color: var(--text);
- text-decoration: none;
- font-size: 13.5px;
- font-weight: 600;
- transition: background .12s, border-color .12s;
- }
-
- .pagination-link:hover {
- background: var(--panel-raised);
- border-color: var(--border-strong);
- }
-
- .pagination-link.pagination-current {
- background: var(--accent);
- border-color: var(--accent);
- color: #fff;
- }
-
- .pagination-link.pagination-prev,
- .pagination-link.pagination-next {
- padding: 0 16px;
- }
-
- .pagination-ellipsis {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- min-width: 38px;
- height: 38px;
- color: var(--muted-dim);
- font-size: 13.5px;
- }
-
- .pagination-load-more {
- display: flex;
- justify-content: center;
- margin: 40px 0 0;
- }
-
- .pagination-load-more-btn {
- padding: 12px 28px;
- border-radius: 999px;
- font-size: 14px;
- }
-
- .pagination-infinite-marker {
- height: 1px;
- margin: 40px 0 0;
- }
-
- .pagination-end {
- text-align: center;
- color: var(--muted);
- font-size: 13px;
- margin: 40px 0 0;
- }
-
- .product-card {
- text-decoration: none;
- color: var(--text);
- display: block;
- border: 1px solid var(--border);
- border-radius: 18px;
- overflow: hidden;
- background: var(--panel);
- box-shadow: var(--shadow-card);
- transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
- }
-
- .product-card a {
- text-decoration: none;
- }
-
- .product-card:hover {
- transform: translateY(-3px);
- box-shadow: var(--shadow-card-hover);
- border-color: var(--border-strong);
- }
-
- .product-card-image {
- width: 100%;
- height: 180px;
- object-fit: cover;
- display: block;
- background: var(--panel-raised);
- }
-
- .product-card-body {
- padding: 18px 20px 20px;
- }
-
- .product-card-category {
- display: inline-block;
- font-size: 11px;
- text-transform: uppercase;
- letter-spacing: .05em;
- color: var(--accent);
- font-weight: 700;
- background: var(--accent-soft);
- padding: 3px 10px;
- border-radius: 999px;
- }
-
- .product-card-body h3 {
- font-size: 17.5px;
- margin: 10px 0 6px;
- line-height: 1.3;
- }
-
- .product-card-body p {
- font-size: 13.5px;
- color: var(--muted);
- margin: 0;
- line-height: 1.5;
- }
-
- .badge-paid {
- display: inline-block;
- margin-top: 10px;
- padding: 4px 12px;
- background: color-mix(in srgb, #eab23d 18%, transparent);
- color: #c8871f;
- border-radius: 999px;
- font-size: 11px;
- font-weight: 700;
- }
-
- body[data-theme="dark"] .badge-paid {
- color: #eab23d;
- }
-
- .product-rating-summary {
- display: flex;
- align-items: center;
- gap: 8px;
- margin: 10px 0 18px;
- }
-
- .star {
- color: var(--border-strong);
- font-size: 16px;
- line-height: 1;
- }
-
- .star-filled {
- color: #f5a623;
- }
-
- .product-rating-count {
- font-size: 13px;
- color: var(--muted);
- }
-
- .product-gallery {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
- gap: 10px;
- margin-bottom: 24px;
- }
-
- .product-gallery-image {
- width: 100%;
- aspect-ratio: 1 / 1;
- object-fit: cover;
- display: block;
- border-radius: 14px;
- border: 1px solid var(--border);
- background: var(--panel-raised);
- }
-
- .product-gallery-image-active {
- grid-column: 1 / -1;
- aspect-ratio: 16 / 10;
- }
-
- .product-buy-box {
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: 18px;
- padding: 22px 24px;
- margin: 4px 0 28px;
- box-shadow: var(--shadow-card);
- max-width: 420px;
- }
-
- .product-price-row {
- display: flex;
- align-items: baseline;
- gap: 10px;
- flex-wrap: wrap;
- }
-
- .product-price {
- font-size: 28px;
- font-weight: 800;
- }
-
- .product-price-compare {
- font-size: 16px;
- color: var(--muted-dim);
- text-decoration: line-through;
- }
-
- .product-price-interval {
- font-size: 14px;
- color: var(--muted);
- }
-
- .product-stock-status {
- margin-top: 10px;
- }
-
- .badge-in-stock,
- .badge-low-stock,
- .badge-out-of-stock {
- display: inline-block;
- padding: 4px 12px;
- border-radius: 999px;
- font-size: 11.5px;
- font-weight: 700;
- }
-
- .badge-in-stock {
- background: color-mix(in srgb, #10b981 18%, transparent);
- color: #0d9668;
- }
-
- .badge-low-stock {
- background: color-mix(in srgb, #f5a623 18%, transparent);
- color: #c8871f;
- }
-
- .badge-out-of-stock {
- background: var(--danger-soft, color-mix(in srgb, #ef4444 18%, transparent));
- color: #ef4444;
- }
-
- .product-buy-form {
- margin-top: 16px;
- display: flex;
- flex-wrap: wrap;
- align-items: flex-end;
- gap: 12px;
- }
-
- .product-variant-label,
- .product-quantity-label {
- display: block;
- font-size: 12px;
- font-weight: 600;
- color: var(--muted);
- margin-bottom: 6px;
- }
-
- .product-variant-select,
- .product-quantity-input {
- border: 1px solid var(--border);
- border-radius: 10px;
- background: var(--bg);
- color: var(--text);
- padding: 9px 12px;
- font-size: 14px;
- }
-
- .product-quantity-input {
- width: 76px;
- }
-
- .product-buy-form .unlock-btn {
- margin-top: 0;
- }
-
- .reviews-section {
- margin: 48px 0 0;
- padding-top: 32px;
- border-top: 1px solid var(--border);
- }
-
- .reviews-list {
- list-style: none;
- padding: 0;
- margin: 20px 0 0;
- display: grid;
- gap: 18px;
- }
-
- .review-item {
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: 14px;
- padding: 16px 18px;
- }
-
- .review-header {
- display: flex;
- align-items: center;
- gap: 10px;
- flex-wrap: wrap;
- margin-bottom: 6px;
- }
-
- .review-stars {
- font-size: 13px;
- }
-
- .review-date {
- font-size: 12.5px;
- color: var(--muted-dim);
- margin-left: auto;
- }
-
- .review-body {
- color: var(--text);
- font-size: 14.5px;
- line-height: 1.6;
- margin: 6px 0 0;
- }
-
- .review-error {
- margin: 14px 0;
- }
-
- .review-success {
- margin: 14px 0;
- }
-
- .review-form {
- margin-top: 24px;
- max-width: 480px;
- }
-
- .review-rating-input {
- display: flex;
- flex-direction: row-reverse;
- justify-content: flex-end;
- gap: 4px;
- margin: 8px 0 16px;
- font-size: 24px;
- }
-
- .review-rating-input label {
- position: relative;
- cursor: pointer;
- color: var(--border-strong);
- line-height: 1;
- }
-
- .review-rating-input input {
- position: absolute;
- inset: 0;
- opacity: 0;
- cursor: pointer;
- }
-
- .review-rating-input label .icon {
- width: 22px;
- height: 22px;
- fill: none;
- stroke: currentColor;
- pointer-events: none;
- }
-
- .review-rating-input label:has(input:checked),
- .review-rating-input label:has(input:checked) ~ label,
- .review-rating-input label:hover,
- .review-rating-input label:hover ~ label {
- color: #f5a623;
- }
-
- .review-rating-input label:has(input:checked) .icon,
- .review-rating-input label:has(input:checked) ~ label .icon,
- .review-rating-input label:hover .icon,
- .review-rating-input label:hover ~ label .icon {
- fill: currentColor;
- }
-
- .review-form textarea {
- width: 100%;
- border: 1px solid var(--border);
- border-radius: 10px;
- background: var(--bg);
- color: var(--text);
- padding: 10px 12px;
- font-size: 14px;
- resize: vertical;
- }
-
- .star {
- width: 16px;
- height: 16px;
- color: var(--border-strong);
- fill: none;
- }
-
- .star-filled {
- color: #f5a623;
- fill: currentColor;
- }
-
- .dash-table {
- width: 100%;
- border-collapse: separate;
- border-spacing: 0;
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: var(--radius);
- overflow: hidden;
- box-shadow: var(--shadow-card);
- margin: 16px 0;
- }
-
- .dash-table th,
- .dash-table td {
- padding: 12px 16px;
- text-align: left;
- font-size: 13.5px;
- border-bottom: 1px solid var(--border);
- }
-
- .dash-table tr:last-child td {
- border-bottom: none;
- }
-
- .dash-table th {
- color: var(--muted);
- font-weight: 600;
- background: var(--panel-alt);
- font-size: 11.5px;
- text-transform: uppercase;
- letter-spacing: 0.04em;
- }
-
- .dash-table tbody tr:hover {
- background: var(--panel-alt);
- }
-
- .dash-table a {
- color: var(--text);
- text-decoration: none;
- font-weight: 500;
- }
-
- .dash-table a:hover {
- color: var(--accent);
- }
-
- .status-pill {
- padding: 3px 10px;
- border-radius: 999px;
- font-size: 11px;
- font-weight: 600;
- text-transform: capitalize;
- display: inline-block;
- }
-
- .status-pending {
- background: var(--warning-dim);
- color: var(--warning);
- }
-
- .status-paid,
- .status-processing {
- background: var(--info-dim);
- color: var(--info);
- }
-
- .status-fulfilled,
- .status-shipped,
- .status-completed {
- background: var(--success-dim);
- color: var(--success);
- }
-
- .status-canceled,
- .status-refunded,
- .status-failed {
- background: var(--danger-dim);
- color: var(--danger);
- }
-
- .dash-btn-small {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: 6px;
- border: 1px solid var(--border);
- background: var(--panel-alt);
- color: var(--text);
- padding: 6px 11px;
- border-radius: var(--radius-sm);
- font-size: 12px;
- font-weight: 600;
- cursor: pointer;
- text-decoration: none;
- font-family: inherit;
- transition: background .12s, border-color .12s;
- }
-
- .dash-btn-small:hover {
- background: var(--panel-hover);
- border-color: var(--border-strong);
- }
-
- .dash-btn-danger {
- background: transparent;
- border-color: var(--danger);
- color: var(--danger);
- }
-
- .dash-btn-danger:hover {
- background: var(--danger-dim);
- }
-
- .cart-item-link {
- display: flex;
- align-items: center;
- gap: 12px;
- color: var(--text);
- text-decoration: none;
- font-weight: 600;
- }
-
- .cart-item-link:hover {
- color: var(--accent);
- }
-
- .cart-item-image {
- width: 48px;
- height: 48px;
- object-fit: cover;
- border-radius: 8px;
- background: var(--panel-raised);
- flex-shrink: 0;
- }
-
- .cart-quantity-form {
- display: flex;
- align-items: center;
- gap: 8px;
- }
-
- .cart-quantity-form input[type="number"] {
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--bg);
- color: var(--text);
- padding: 7px 10px;
- font-size: 13.5px;
- }
-
- .cart-discount-box {
- margin: 20px 0;
- padding: 16px 20px;
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: var(--radius);
- }
-
- .cart-discount-form {
- display: flex;
- align-items: flex-end;
- gap: 10px;
- flex-wrap: wrap;
- }
-
- .cart-discount-form label {
- display: block;
- font-size: 12px;
- color: var(--muted);
- margin-bottom: 6px;
- }
-
- .cart-discount-form input[type="text"] {
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--bg);
- color: var(--text);
- padding: 9px 12px;
- font-size: 14px;
- }
-
- .cart-summary,
- .checkout-summary,
- .order-summary {
- max-width: 420px;
- margin: 20px 0 28px;
- padding: 20px 24px;
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: var(--radius);
- box-shadow: var(--shadow-card);
- }
-
- .cart-summary-row {
- display: flex;
- justify-content: space-between;
- gap: 16px;
- padding: 6px 0;
- font-size: 14px;
- color: var(--muted);
- }
-
- .cart-summary-row.cart-summary-total {
- border-top: 1px solid var(--border);
- margin-top: 6px;
- padding-top: 12px;
- font-size: 16px;
- font-weight: 700;
- color: var(--text);
- }
-
- .cart-tax-note {
- font-size: 12.5px;
- color: var(--muted-dim);
- margin: 10px 0 0;
- }
-
- .checkout-form,
- .review-form {
- max-width: 480px;
- }
-
- .checkout-form label {
- display: block;
- font-size: 13px;
- color: var(--muted);
- margin: 14px 0 6px;
- }
-
- .checkout-form input[type="text"],
- .checkout-form input[type="email"],
- .checkout-form textarea {
- width: 100%;
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--bg);
- color: var(--text);
- padding: 10px 12px;
- font-size: 14px;
- }
-
- @media (max-width: 640px) {
- .dash-table {
- display: block;
- overflow-x: auto;
- -webkit-overflow-scrolling: touch;
- max-width: 100%;
- }
-
- .cart-summary,
- .checkout-summary,
- .order-summary,
- .checkout-form,
- .review-form {
- max-width: 100%;
- }
-
- .cart-discount-form {
- align-items: stretch;
- }
-
- .cart-discount-form input[type="text"] {
- width: 100%;
- }
-
- .article-title {
- font-size: 30px;
- }
-
- .category-title {
- font-size: 26px;
- }
-
- .hero-title {
- font-size: 32px;
- }
-
- .article-content table {
- display: block;
- overflow-x: auto;
- -webkit-overflow-scrolling: touch;
- }
- }
-
- .category-title {
- font-size: 32px;
- font-weight: 800;
- margin-bottom: 6px;
- }
-
- .category-description {
- color: var(--muted);
- margin-bottom: 32px;
- font-size: 15px;
- max-width: 600px;
- }
-
- .article-view {
- margin: 0 auto;
- }
-
- .article-category-link {
- font-size: 11.5px;
- text-transform: uppercase;
- letter-spacing: .06em;
- color: var(--accent);
- font-weight: 700;
- text-decoration: none;
- background: var(--accent-soft);
- padding: 4px 12px;
- border-radius: 999px;
- display: inline-block;
- }
-
- .article-title {
- font-size: 40px;
- font-weight: 800;
- margin: 16px 0 14px;
- line-height: 1.12;
- }
-
- .article-meta {
- color: var(--muted);
- font-size: 13.5px;
- margin-bottom: 16px;
- font-weight: 500;
- }
-
- .article-share {
- position: relative;
- display: inline-block;
- margin-bottom: 28px;
- }
-
- .share-toggle-btn {
- display: inline-flex;
- align-items: center;
- gap: 8px;
- padding: 9px 16px;
- border: 1px solid var(--border);
- border-radius: 999px;
- background: var(--panel);
- color: var(--text);
- font-size: 13.5px;
- font-weight: 600;
- cursor: pointer;
- }
-
- .share-toggle-btn:hover {
- border-color: var(--border-strong);
- }
-
- .share-panel {
- display: none;
- position: absolute;
- top: calc(100% + 8px);
- left: 0;
- min-width: 200px;
- padding: 8px;
- border: 1px solid var(--border);
- border-radius: 14px;
- background: var(--panel-raised);
- box-shadow: var(--shadow-card-hover);
- z-index: 30;
- }
-
- .share-panel.is-open {
- display: block;
- }
-
- .share-panel-item {
- display: flex;
- align-items: center;
- gap: 10px;
- width: 100%;
- padding: 9px 10px;
- border: none;
- border-radius: 9px;
- background: transparent;
- color: var(--text);
- font-size: 13.5px;
- font-weight: 500;
- text-decoration: none;
- text-align: left;
- cursor: pointer;
- }
-
- .share-panel-item:hover {
- background: var(--accent-soft);
- }
-
- .share-panel-item-icon {
- width: 18px;
- height: 18px;
- flex-shrink: 0;
- display: flex;
- }
-
- .share-panel-item-icon svg {
- width: 100%;
- height: 100%;
- fill: currentColor;
- }
-
- .share-panel-item-icon-email svg,
- .share-panel-item-copy .share-panel-item-icon svg {
- fill: none;
- stroke: currentColor;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
-
- @media (max-width: 480px) {
- .share-panel {
- left: auto;
- right: 0;
- }
- }
-
- .app-banner {
- display: none;
- align-items: center;
- gap: 12px;
- position: fixed;
- left: 12px;
- right: 12px;
- bottom: 12px;
- padding: 12px 14px;
- padding-bottom: calc(12px + env(safe-area-inset-bottom));
- border: 1px solid var(--border);
- border-radius: 16px;
- background: var(--panel-raised);
- box-shadow: var(--shadow-card-hover);
- z-index: 210;
- }
-
- .app-banner.is-visible {
- display: flex;
- }
-
- .app-banner-icon {
- width: 38px;
- height: 38px;
- border-radius: 10px;
- object-fit: cover;
- flex-shrink: 0;
- }
-
- .app-banner-text {
- flex: 1;
- font-size: 13.5px;
- font-weight: 600;
- color: var(--text);
- }
-
- .app-banner-link {
- padding: 8px 16px;
- border-radius: 999px;
- background: var(--accent);
- color: #fff;
- font-size: 13px;
- font-weight: 700;
- text-decoration: none;
- white-space: nowrap;
- }
-
- .app-banner-link:hover {
- background: var(--accent-hover);
- }
-
- .app-banner-close {
- border: none;
- background: transparent;
- color: var(--muted);
- font-size: 20px;
- line-height: 1;
- cursor: pointer;
- padding: 4px;
- flex-shrink: 0;
- }
-
- .app-banner-close:hover {
- color: var(--text);
- }
-
- .article-cover {
- width: 100%;
- border-radius: 18px;
- margin-bottom: 32px;
- box-shadow: var(--shadow-card);
- }
-
- .article-content {
- font-family: var(--font-body, Georgia, serif);
- font-size: 18px;
- line-height: 1.8;
- }
-
- .home-content-block {
- max-width: 760px;
- margin: 0 0 36px;
- }
-
- .home-content-block > :first-child {
- margin-top: 0;
- }
-
- .home-content-block > :last-child {
- margin-bottom: 0;
- }
-
- #pagination-container + .home-content-block,
- #pagination-container + .hero-section,
- #pagination-container + .section-heading-row {
- margin-top: 40px;
- }
-
- .article-content h2 {
- font-size: 27px;
- margin-top: 40px;
- font-weight: 800;
- }
-
- .article-content h3 {
- font-size: 21px;
- margin-top: 28px;
- font-weight: 700;
- }
-
- .article-content blockquote {
- border-left: 3px solid var(--accent);
- margin: 24px 0;
- padding: 6px 22px;
- color: var(--muted);
- font-style: italic;
- }
-
- .article-content img {
- max-width: 100%;
- border-radius: 12px;
- }
-
- .article-content pre {
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: 12px;
- padding: 18px;
- overflow-x: auto;
- }
-
- .article-content table {
- width: 100%;
- border-collapse: collapse;
- margin: 20px 0;
- }
-
- .article-content table td {
- border: 1px solid var(--border);
- padding: 10px;
- }
-
- .callout {
- padding: 16px 18px;
- border-radius: 12px;
- margin: 20px 0;
- }
-
- .callout-info {
- background: rgba(79, 178, 232, 0.12);
- color: #2a95c9;
- }
-
- .callout-warning {
- background: rgba(234, 178, 61, 0.14);
- color: #b5811d;
- }
-
- .callout-success {
- background: rgba(52, 196, 140, 0.12);
- color: #22936a;
- }
-
- .callout-danger {
- background: rgba(240, 84, 106, 0.12);
- color: #d63a52;
- }
-
- body[data-theme="dark"] .callout-info {
- color: #4fb2e8;
- }
-
- body[data-theme="dark"] .callout-warning {
- color: #eab23d;
- }
-
- body[data-theme="dark"] .callout-success {
- color: #34c48c;
- }
-
- body[data-theme="dark"] .callout-danger {
- color: #f0546a;
- }
-
- .embed-wrapper {
- position: relative;
- padding-bottom: 56.25%;
- height: 0;
- margin: 24px 0;
- }
-
- .embed-wrapper iframe {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: none;
- border-radius: 12px;
- }
-
- .article-excerpt-locked {
- font-size: 18px;
- color: var(--muted);
- }
-
- .paid-overlay {
- border: 1px solid var(--border);
- background: var(--panel);
- border-radius: 20px;
- padding: 40px;
- text-align: center;
- margin-top: 16px;
- box-shadow: var(--shadow-card);
- }
-
- .paid-overlay-box p {
- color: var(--muted);
- }
-
- .unlock-btn {
- display: inline-block;
- margin-top: 14px;
- padding: 12px 28px;
- background: var(--accent);
- color: #fff;
- text-decoration: none;
- border-radius: 999px;
- font-size: 14.5px;
- font-weight: 700;
- transition: background .12s;
- }
-
- .unlock-btn:hover {
- background: var(--accent-hover);
- }
-
- .unlock-btn-outline {
- background: transparent;
- border: 1.5px solid var(--accent);
- color: var(--accent);
- }
-
- .unlock-btn-outline:hover {
- background: var(--accent-soft);
- color: var(--accent);
- }
-
- .subscription-divider {
- color: var(--muted-dim);
- font-size: 12px;
- text-transform: uppercase;
- letter-spacing: .08em;
- margin: 24px 0 16px;
- font-weight: 700;
- }
-
- .subscription-offer {
- border-top: 1px solid var(--border);
- padding-top: 20px;
- }
-
- .subscription-offer-name {
- font-size: 18px;
- font-weight: 800;
- }
-
- .subscription-offer-price {
- font-size: 15px;
- color: var(--muted);
- margin-top: 4px;
- font-weight: 600;
- }
-
- .subscription-offer-description {
- color: var(--muted);
- font-size: 14px;
- margin: 10px 0 0;
- }
-
- .related-section {
- margin: 56px auto 0;
- }
-
- .related-section h2 {
- font-size: 13px;
- text-transform: uppercase;
- letter-spacing: .07em;
- color: var(--muted);
- margin: 32px 0 18px;
- font-weight: 700;
- }
-
- .comments-section {
- max-width: 740px;
- margin: 56px auto 0;
- }
-
- .comments-placeholder {
- color: var(--muted);
- font-size: 14px;
- }
-
- .ad-slot {
- max-width: 100%;
- margin: 24px 0;
- overflow-x: auto;
- text-align: center;
- }
-
- .ad-slot.ad-image img {
- max-width: 100%;
- border-radius: 14px;
- }
-
- .ad-slot.ad-script iframe,
- .ad-slot.ad-script embed,
- .ad-slot.ad-script object,
- .ad-slot.ad-script > div,
- .ad-slot.ad-script ins {
- max-width: 100%;
- }
-
- .site-footer {
- border-top: 1px solid var(--border);
- padding: 44px 40px 24px;
- }
-
- .site-footer-columns {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
- gap: 32px;
- max-width: 1180px;
- margin: 0 auto 32px;
- }
-
- .site-footer-column-title {
- font-size: 12px;
- text-transform: uppercase;
- letter-spacing: .06em;
- color: var(--muted);
- font-weight: 700;
- margin: 0 0 14px;
- }
-
- .site-footer-column-links {
- display: flex;
- flex-direction: column;
- gap: 10px;
- }
-
- .site-footer-column-links a {
- text-decoration: none;
- color: var(--text);
- font-size: 13.5px;
- font-weight: 500;
- }
-
- .site-footer-column-links a:hover {
- color: var(--accent);
- }
-
- .site-footer-bottom {
- max-width: 1180px;
- margin: 0 auto;
- border-top: 1px solid var(--border);
- padding-top: 20px;
- }
-
- .site-footer-row {
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex-wrap: wrap;
- gap: 12px;
- font-size: 13px;
- color: var(--muted);
- }
-
- .site-footer-links {
- display: flex;
- align-items: center;
- gap: 20px;
- }
-
- .site-footer-links .site-search-form {
- padding: 4px 10px;
- }
-
- .site-footer-links .site-search-input {
- width: 110px;
- }
-
- .site-footer-links a {
- text-decoration: none;
- color: var(--muted);
- font-weight: 500;
- }
-
- .site-footer-links a:hover {
- color: var(--text);
- }
-
- .site-footer-social {
- display: flex;
- align-items: center;
- gap: 10px;
- }
-
- .site-footer-social a {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 34px;
- height: 34px;
- border-radius: 999px;
- background: var(--panel-raised);
- border: 1px solid var(--border);
- color: var(--muted);
- transition: background .12s, color .12s, border-color .12s;
- }
-
- .site-footer-social a:hover {
- color: var(--text);
- border-color: var(--border-strong);
- background: var(--accent-soft);
- }
-
- .site-footer-social a svg {
- width: 16px;
- height: 16px;
- fill: currentColor;
- }
-
- #consent-reopen-btn,
- #theme-toggle-btn {
- background: var(--panel-raised);
- border: 1px solid var(--border);
- border-radius: 999px;
- width: 34px;
- height: 34px;
- display: flex;
- align-items: center;
- justify-content: center;
- cursor: pointer;
- color: var(--muted);
- transition: background .12s, color .12s;
- }
-
- #consent-reopen-btn:hover,
- #theme-toggle-btn:hover {
- color: var(--text);
- }
-
- body[data-theme="light"] .icon-moon {
- display: none;
- }
-
- body[data-theme="dark"] .icon-sun {
- display: none;
- }
-
- .consent-banner {
- position: fixed;
- bottom: 20px;
- left: 20px;
- right: 20px;
- max-width: 440px;
- background: var(--panel);
- border: 1px solid var(--border);
- border-radius: 18px;
- padding: 20px 22px;
- z-index: 1000;
- box-shadow: var(--shadow-card-hover);
- }
-
- .consent-banner p {
- margin: 0 0 14px;
- font-size: 13.5px;
- color: var(--muted);
- line-height: 1.5;
- }
-
- .consent-banner-actions {
- display: flex;
- gap: 8px;
- }
-
- .consent-banner-actions button {
- padding: 9px 18px;
- border-radius: 999px;
- border: 1px solid var(--border);
- background: var(--bg);
- color: var(--text);
- cursor: pointer;
- font-size: 13px;
- font-weight: 600;
- font-family: inherit;
- }
-
- #consent-accept {
- background: var(--accent);
- border-color: var(--accent);
- color: #fff;
- }
-
- @media (max-width: 860px) {
- .featured-banner {
- grid-template-columns: 1fr 1fr;
- grid-template-rows: 260px repeat(2, 150px);
- }
-
- .featured-banner-item-large {
- grid-column: span 2;
- grid-row: auto;
- }
-
- .featured-banner-item-small:nth-child(2),
- .featured-banner-item-small:nth-child(3),
- .featured-banner-item-small:nth-child(4),
- .featured-banner-item-small:nth-child(5) {
- grid-column: auto;
- }
-
- .featured-banner-item-large .featured-banner-title {
- font-size: 22px;
- }
-
- .site-menu-toggle {
- display: flex;
- }
-
- .site-footer-columns {
- grid-template-columns: repeat(2, 1fr);
- gap: 24px 20px;
- }
-
- .site-auth-links.site-auth-links-desktop {
- display: none;
- }
-
- .site-auth-links.site-auth-links-mobile {
- display: flex;
- flex-direction: column;
- align-items: stretch;
- gap: 10px;
- margin: 10px 10px 0;
- padding-top: 16px;
- border-top: 1px solid var(--border);
- }
-
- .site-auth-links-mobile a {
- border: 1.5px solid var(--border);
- border-radius: 999px;
- padding: 11px 26px;
- text-align: center;
- font-size: 14px;
- }
-
- .site-auth-links-mobile a:hover {
- border-color: var(--border-strong);
- }
-
- .site-auth-links-mobile a.site-auth-cta {
- border-color: var(--accent);
- }
-
- .site-auth-links-mobile a.site-auth-cta:hover {
- border-color: var(--accent-hover);
- }
-
- .site-cart-link-header {
- display: flex !important;
- width: 38px !important;
- height: 38px !important;
- padding: 0 !important;
- border-radius: 999px;
- border: 1px solid var(--border);
- background: var(--panel-raised);
- color: var(--text);
- flex-shrink: 0;
- margin-left: auto;
- }
-
- .site-cart-link-header:hover {
- border-color: var(--border-strong);
- }
-
- .site-cart-link-header .icon,
- .site-cart-link-header .shop-icon-custom svg {
- width: 20px;
- height: 20px;
- }
-
- .site-cart-link-header .site-cart-count {
- top: -2px;
- right: -2px;
- }
-
- .site-nav {
- display: none;
- flex-direction: column;
- flex-wrap: nowrap;
- align-items: stretch;
- gap: 4px;
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- height: 100vh;
- height: 100dvh;
- width: min(300px, 84vw);
- max-width: 100vw;
-
- padding: 76px 22px 24px;
- background: var(--panel);
- border-left: 1px solid var(--border);
- box-shadow: var(--shadow-card-hover);
- z-index: 200;
- overflow-x: hidden;
- overflow-y: auto;
- -webkit-overflow-scrolling: touch;
- overscroll-behavior: contain;
- touch-action: pan-y;
- box-sizing: border-box;
- }
-
- .site-nav.is-open {
- display: flex;
- }
-
- .site-nav > * {
- flex-shrink: 0;
- }
-
- .site-nav a {
- padding: 10px 4px;
- border-bottom: 1px solid var(--border);
- }
-
- .site-nav .site-search-form {
- width: 100%;
- margin: 6px 0;
- }
-
- .site-nav .site-search-input {
- width: 100%;
- }
-
- .site-nav-backdrop.is-open {
- display: block;
- position: fixed;
- inset: 0;
- background: rgba(0, 0, 0, 0.45);
- z-index: 40;
- }
-
- .site-header:has(.site-nav.is-open),
- .site-header.site-nav-drawer-open,
- body:not(.site-menu-side) .site-header:has(.site-nav.is-open),
- body:not(.site-menu-side) .site-header.site-nav-drawer-open {
- backdrop-filter: none !important;
- -webkit-backdrop-filter: none !important;
- transform: none !important;
- filter: none !important;
- }
-
- body.site-menu-top .site-header,
- body.site-menu-bottom .site-header {
- padding: 14px 20px;
- flex-wrap: nowrap;
- }
-
- .site-header-row {
- width: 100%;
- justify-content: space-between;
- }
-
- .site-brand {
- min-width: 0;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
-
- body.site-menu-side .site-shell {
- flex-direction: column;
- }
-
- body.site-menu-side .site-header {
- flex-direction: row;
- align-items: center;
- width: 100%;
- height: auto;
- position: sticky;
- top: 0;
- border-right: none;
- border-bottom: 1px solid var(--border);
- padding: 14px 20px;
- background: color-mix(in srgb, var(--bg) 88%, transparent);
- backdrop-filter: blur(10px);
- -webkit-backdrop-filter: blur(10px);
- z-index: 100;
- }
-
- body.site-menu-side .site-nav {
- flex-direction: column;
- flex-wrap: nowrap;
- }
-
- body.site-menu-side .site-main {
- flex: 1;
- width: 100%;
- }
-
- .site-main {
- padding: 24px 18px;
- }
-
- .site-footer {
- padding: 32px 20px 20px;
- }
-
- .site-footer-row {
- flex-direction: column;
- align-items: center;
- text-align: center;
- }
-
- .site-footer-links {
- justify-content: center;
- flex-wrap: wrap;
- gap: 12px;
- }
-
- .consent-banner {
- left: 12px;
- right: 12px;
- bottom: 12px;
- max-width: none;
- }
- }
-
- body[data-theme="light"] {
- --tok-comment: #7a8194;
- --tok-string: #0a7d4f;
- --tok-keyword: #6c3fd1;
- --tok-number: #b45309;
- --tok-function: #1f6feb;
- --tok-tag: #c2255c;
- --tok-attr: #b45309;
- --tok-variable: #0e7490;
- --tok-literal: #c2255c;
- }
-
- body[data-theme="dark"] {
- --tok-comment: #7f8798;
- --tok-string: #7ee2a8;
- --tok-keyword: #c4a7ff;
- --tok-number: #f5b971;
- --tok-function: #79b8ff;
- --tok-tag: #ff8fa8;
- --tok-attr: #f5b971;
- --tok-variable: #67d4e8;
- --tok-literal: #ff8fa8;
- }
-
- .code-block {
- position: relative;
- margin: 20px 0;
- }
-
- .code-block pre {
- margin: 0;
- }
-
- .code-copy {
- position: absolute;
- top: 10px;
- right: 10px;
- z-index: 1;
- padding: 4px 10px;
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--panel);
- color: var(--muted);
- font: inherit;
- font-size: 12px;
- font-weight: 600;
- cursor: pointer;
- opacity: 0;
- transition: opacity .15s, color .15s, border-color .15s;
- }
-
- .code-block:hover .code-copy,
- .code-copy:focus-visible,
- .code-copy.is-copied {
- opacity: 1;
- }
-
- .code-copy:hover {
- color: var(--text);
- border-color: var(--border-strong);
- }
-
- .code-copy.is-copied {
- color: var(--accent);
- border-color: var(--accent);
- }
-
- @media (hover: none) {
- .code-copy {
- opacity: 1;
- }
- }
-
- .tok-comment {
- color: var(--tok-comment);
- font-style: italic;
- }
-
- .tok-string {
- color: var(--tok-string);
- }
-
- .tok-keyword {
- color: var(--tok-keyword);
- }
-
- .tok-number {
- color: var(--tok-number);
- }
-
- .tok-function {
- color: var(--tok-function);
- }
-
- .tok-tag {
- color: var(--tok-tag);
- }
-
- .tok-attr {
- color: var(--tok-attr);
- }
-
- .tok-variable {
- color: var(--tok-variable);
- }
-
- .tok-literal {
- color: var(--tok-literal);
- }
-
- .back-to-top {
- position: fixed;
- right: 20px;
- bottom: 20px;
- z-index: 900;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- height: 44px;
- min-width: 44px;
- padding: 0 13px;
- border-radius: 999px;
- border: 1px solid var(--border);
- background-color: var(--panel-raised);
- color: var(--text);
- font-family: inherit;
- font-size: 13px;
- font-weight: 600;
- cursor: pointer;
- box-shadow: var(--shadow-card-hover);
- opacity: 0;
- visibility: hidden;
- transform: translateY(12px);
- transition: opacity .2s ease, transform .2s ease, visibility .2s ease, background-color .15s ease, color .15s ease;
- }
-
- .back-to-top.is-visible {
- opacity: 1;
- visibility: visible;
- transform: none;
- }
-
- .back-to-top:hover {
- background-color: var(--accent);
- border-color: var(--accent);
- color: #fff;
- }
-
- .back-to-top.has-progress {
- background-image: linear-gradient(90deg, var(--accent-soft) var(--btt-read, 0%), transparent var(--btt-read, 0%));
- }
-
- .back-to-top svg {
- width: 18px;
- height: 18px;
- flex-shrink: 0;
- }
-
- .back-to-top-progress {
- font-variant-numeric: tabular-nums;
- white-space: nowrap;
- }
-
- .back-to-top-progress[hidden] {
- display: none;
- }
-
- .article-toc {
- margin: 0 0 28px;
- padding: 16px 20px;
- border: 1px solid var(--border);
- border-radius: 14px;
- background: var(--panel-raised);
- }
-
- .article-toc summary {
- cursor: pointer;
- font-size: 15px;
- font-weight: 700;
- color: var(--text);
- }
-
- .article-toc-list {
- list-style: none;
- display: grid;
- gap: 6px;
- margin: 12px 0 0;
- padding: 0;
- }
-
- .article-toc-item a {
- color: var(--muted);
- font-size: 15px;
- line-height: 1.4;
- text-decoration: none;
- }
-
- .article-toc-item a:hover {
- color: var(--accent);
- }
-
- .article-toc-level-3 {
- padding-left: 18px;
- }
-
- .article-content h2[id],
- .article-content h3[id] {
- scroll-margin-top: 90px;
- }
-
- @media (prefers-reduced-motion: no-preference) {
- html {
- scroll-behavior: smooth;
- }
- }
-
- @media (max-width: 600px) {
- .back-to-top {
- right: 14px;
- bottom: 14px;
- }
- }
-
- .article-breadcrumbs {
- margin-bottom: 14px;
- font-size: 13px;
- }
-
- .article-breadcrumbs ol {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 6px;
- list-style: none;
- margin: 0;
- padding: 0;
- color: var(--muted);
- }
-
- .article-breadcrumbs li {
- display: inline-flex;
- align-items: center;
- gap: 6px;
- min-width: 0;
- }
-
- .article-breadcrumbs li + li::before {
- content: "\203A";
- color: var(--muted);
- opacity: 0.7;
- }
-
- .article-breadcrumbs a {
- color: var(--muted);
- text-decoration: none;
- }
-
- .article-breadcrumbs a:hover {
- color: var(--accent);
- }
-
- .article-breadcrumbs li[aria-current="page"] span {
- display: block;
- max-width: 260px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- color: var(--text);
- }
-
- .author-box {
- display: flex;
- align-items: center;
- gap: 16px;
- margin-top: 40px;
- padding: 18px 20px;
- border: 1px solid var(--border);
- border-radius: 16px;
- background: var(--panel-raised);
- }
-
- .author-box-avatar {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-shrink: 0;
- width: 52px;
- height: 52px;
- border-radius: 50%;
- background: var(--accent-soft);
- color: var(--accent);
- font-size: 20px;
- font-weight: 800;
- }
-
- .author-box-label {
- font-size: 12px;
- color: var(--muted);
- text-transform: uppercase;
- letter-spacing: 0.04em;
- }
-
- .author-box-name {
- font-size: 17px;
- font-weight: 700;
- color: var(--text);
- }
-
- .author-box-meta {
- font-size: 13px;
- color: var(--muted);
- }
-
- .author-box-avatar.has-image {
- overflow: hidden;
- background: transparent;
- }
-
- .author-box-avatar.has-image img {
- display: block;
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
-
- .author-box-name a {
- color: inherit;
- text-decoration: none;
- }
-
- .author-box-name a:hover {
- color: var(--accent);
- }
-
- .author-box-headline {
- font-size: 13px;
- color: var(--muted);
- }
-
- .artist-header {
- display: flex;
- align-items: center;
- gap: 22px;
- margin-bottom: 24px;
- }
-
- .artist-avatar {
- display: flex;
- align-items: center;
- justify-content: center;
- flex-shrink: 0;
- width: 96px;
- height: 96px;
- border-radius: 50%;
- background: var(--accent-soft);
- color: var(--accent);
- font-size: 38px;
- font-weight: 800;
- }
-
- .artist-avatar.has-image {
- overflow: hidden;
- background: transparent;
- }
-
- .artist-avatar.has-image img {
- display: block;
- width: 100%;
- height: 100%;
- object-fit: cover;
- }
-
- .artist-name {
- margin: 0;
- font-size: 32px;
- line-height: 1.2;
- }
-
- .artist-headline {
- margin: 4px 0 0;
- font-size: 17px;
- color: var(--muted);
- }
-
- .artist-meta {
- margin: 8px 0 0;
- font-size: 14px;
- color: var(--muted);
- }
-
- .artist-meta a {
- color: var(--accent);
- text-decoration: none;
- }
-
- .artist-bio {
- max-width: 720px;
- margin-bottom: 32px;
- font-size: 17px;
- line-height: 1.75;
- overflow-wrap: anywhere;
- }
-
- @media (max-width: 600px) {
- .artist-header {
- flex-direction: column;
- align-items: flex-start;
- }
- }
-
- .article-tags {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 8px;
- margin-top: 32px;
- }
-
- .article-tags-label {
- font-size: 14px;
- color: var(--muted);
- }
-
- .article-tag {
- padding: 4px 12px;
- border: 1px solid var(--border);
- border-radius: 999px;
- background: var(--panel-raised);
- color: var(--text);
- font-size: 13px;
- text-decoration: none;
- transition: border-color 0.15s ease, color 0.15s ease;
- }
-
- .article-tag:hover {
- border-color: var(--accent);
- color: var(--accent);
- }
-
- .read-aloud {
- display: flex;
- align-items: center;
- gap: 14px;
- margin: 0 0 24px;
- padding: 14px 16px;
- border: 1px solid var(--border);
- border-radius: 16px;
- background: var(--panel);
- box-shadow: var(--shadow-card);
- }
-
- .read-aloud-toggle {
- flex: 0 0 auto;
- display: inline-flex;
- align-items: center;
- justify-content: center;
- width: 46px;
- height: 46px;
- padding: 0;
- border-radius: 50%;
- border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent);
- background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 22%, transparent), color-mix(in srgb, var(--accent) 10%, transparent));
- color: var(--accent);
- cursor: pointer;
- transition: background-color .2s, border-color .2s, transform .15s;
- }
-
- .read-aloud-toggle:hover {
- border-color: color-mix(in srgb, var(--accent) 60%, transparent);
- background: linear-gradient(180deg, color-mix(in srgb, var(--accent) 32%, transparent), color-mix(in srgb, var(--accent) 16%, transparent));
- }
-
- .read-aloud-toggle:active {
- transform: scale(.94);
- }
-
- .read-aloud-toggle:focus-visible,
- .read-aloud-speed:focus-visible,
- .read-aloud-seek:focus-visible {
- outline: 2px solid var(--accent);
- outline-offset: 2px;
- }
-
- .read-aloud-toggle svg {
- width: 18px;
- height: 18px;
- }
-
- .read-aloud-icon-pause {
- display: none;
- }
-
- .read-aloud.is-playing .read-aloud-icon-play {
- display: none;
- }
-
- .read-aloud.is-playing .read-aloud-icon-pause {
- display: block;
- }
-
- .read-aloud-main {
- flex: 1 1 auto;
- min-width: 0;
- }
-
- .read-aloud-title {
- margin-bottom: 8px;
- font-size: 13px;
- font-weight: 600;
- color: var(--text);
- }
-
- .read-aloud-track {
- display: flex;
- align-items: center;
- gap: 12px;
- }
-
- .read-aloud-seek {
- -webkit-appearance: none;
- appearance: none;
- flex: 1 1 auto;
- min-width: 0;
- height: 6px;
- margin: 0;
- padding: 0;
- border-radius: 999px;
- background: linear-gradient(to right, var(--accent) var(--read-aloud-progress, 0%), var(--border-strong) var(--read-aloud-progress, 0%));
- cursor: pointer;
- }
-
- .read-aloud-seek:disabled {
- opacity: .6;
- cursor: default;
- }
-
- .read-aloud-seek::-webkit-slider-thumb {
- -webkit-appearance: none;
- appearance: none;
- width: 14px;
- height: 14px;
- border-radius: 50%;
- border: 2px solid var(--panel);
- background: var(--accent);
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
- }
-
- .read-aloud-seek::-moz-range-thumb {
- width: 12px;
- height: 12px;
- border-radius: 50%;
- border: 2px solid var(--panel);
- background: var(--accent);
- }
-
- .read-aloud-time {
- flex: 0 0 auto;
- min-width: 78px;
- text-align: right;
- font-size: 12px;
- color: var(--muted);
- font-variant-numeric: tabular-nums;
- white-space: nowrap;
- }
-
- .read-aloud-speed {
- flex: 0 0 auto;
- min-width: 46px;
- padding: 6px 10px;
- border-radius: 999px;
- border: 1px solid var(--border-strong);
- background: transparent;
- color: var(--muted);
- font: inherit;
- font-size: 12px;
- font-weight: 600;
- cursor: pointer;
- transition: color .2s, border-color .2s;
- }
-
- .read-aloud-speed:hover {
- color: var(--text);
- border-color: var(--muted-dim);
- }
-
- .read-aloud.is-error {
- opacity: .6;
- }
-
- @media (max-width: 560px) {
- .read-aloud {
- gap: 10px;
- padding: 12px;
- }
-
- .read-aloud-toggle {
- width: 42px;
- height: 42px;
- }
-
- .read-aloud-time {
- min-width: 66px;
- font-size: 11.5px;
- }
- }
-
- .paid-overlay-box .badge-paid {
- margin: 0 0 22px;
- }
-
- .paid-overlay-box .badge-paid + .subscription-offer {
- border-top: 0;
- padding-top: 0;
- }
-
- .paid-overlay-box > :last-child {
- margin-bottom: 0;
- }
-
- .site-language-switcher {
- position: relative;
- display: inline-block;
- }
-
- .site-language-switcher summary {
- display: inline-flex;
- align-items: center;
- justify-content: space-between;
- gap: 10px;
- min-width: 128px;
- padding: 8px 12px;
- border: 1px solid var(--border-strong);
- border-radius: 12px;
- background: var(--panel);
- color: var(--text);
- font-size: 13px;
- font-weight: 600;
- line-height: 1.3;
- cursor: pointer;
- list-style: none;
- user-select: none;
- transition: border-color .2s, background-color .2s;
- }
-
- .site-language-switcher summary::-webkit-details-marker {
- display: none;
- }
-
- .site-language-switcher summary:hover,
- .site-language-switcher[open] summary {
- border-color: var(--accent);
- }
-
- .site-language-caret {
- color: var(--muted);
- transition: transform .2s;
- }
-
- .site-language-switcher[open] .site-language-caret {
- transform: rotate(180deg);
- }
-
- .site-language-menu {
- position: absolute;
- right: 0;
- bottom: calc(100% + 6px);
- z-index: 50;
- min-width: 100%;
- margin: 0;
- padding: 4px;
- list-style: none;
- border: 1px solid var(--border-strong);
- border-radius: 12px;
- background: var(--panel-raised, var(--panel));
- box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18);
- }
-
- .site-language-menu a {
- display: block;
- padding: 8px 12px;
- border-radius: 8px;
- color: var(--text);
- font-size: 13px;
- font-weight: 500;
- text-decoration: none;
- white-space: nowrap;
- }
-
- .site-language-menu a:hover,
- .site-language-menu a:focus-visible {
- background: color-mix(in srgb, var(--accent) 12%, transparent);
- outline: none;
- }
-
- .site-language-menu a.is-current {
- color: var(--accent);
- font-weight: 700;
- }
-