/* Affilumo Premium 0.1.0 — artwork-first storefront cards. */
.afl-card,.afl-card *{box-sizing:border-box}.afl-card{--afl-accent:#e56a15;display:flex;align-items:stretch;gap:18px;max-width:100%;min-width:0;margin:18px 0;padding:16px;background:#fff;border:1px solid #d4e2ed;border-radius:6px;color:#263e50;font-family:inherit;line-height:1.65;overflow-wrap:anywhere;box-shadow:0 2px 0 #edf3f7}.afl-image-wrap{display:flex;align-items:center;justify-content:center;flex:0 0 168px;max-width:38%;min-width:0;padding:6px;background:#f1f6fa;border:1px solid #e0eaf1;border-radius:3px;overflow:hidden}.afl-art{display:block;width:100%;height:auto;max-height:240px;object-fit:contain;border-radius:2px;margin:0}.afl-no-image{display:flex;align-items:center;justify-content:center;min-height:160px;background:repeating-linear-gradient(135deg,#eff6fa,#eff6fa 10px,#eaf2f7 10px,#eaf2f7 11px);color:#66869c;font-size:12px;letter-spacing:.02em;text-align:center;padding:16px}.afl-body{display:flex;flex-direction:column;align-items:flex-start;gap:8px;flex:1;min-width:0}.afl-labels{display:flex;flex-wrap:wrap;align-items:center;gap:5px}.afl-pr,.afl-rating{display:inline-flex;align-items:center;font-size:10px;font-weight:750;line-height:1.4;padding:2px 6px;border-radius:2px;color:#226c9c;background:#eaf5fd;border:1px solid #c7e2f5}.afl-rating{color:#aa4159;background:#fff0f4;border-color:#edc7d2}.afl-title{font-size:17px;font-weight:800;color:#086daf;line-height:1.55;letter-spacing:.01em;overflow-wrap:anywhere}.afl-meta{color:#5f7b90;font-size:12px;line-height:1.7}.afl-detail{margin:0!important;color:#4d6576;font-size:13px;line-height:1.85}.afl-price{color:#c64c23;font-weight:800;font-size:20px;line-height:1.35;font-variant-numeric:tabular-nums;margin-top:2px}.afl-price small{display:block;font-size:10px;font-weight:400;color:#728797;line-height:1.7;margin-top:2px}.afl-button{display:inline-flex!important;align-items:center;justify-content:center;gap:10px;min-height:39px;max-width:100%;margin-top:auto;padding:10px 15px!important;border:1px solid transparent;border-radius:4px;color:#fff!important;background:var(--afl-accent)!important;font-family:inherit;font-size:12px;font-weight:750;text-align:center;text-decoration:none!important;line-height:1.5;white-space:normal;box-shadow:inset 0 -2px 0 #00000012!important;transition:filter .15s}.afl-button>span{font-size:14px;line-height:1}.afl-button:hover{filter:brightness(.93)}.afl-button:focus-visible{outline:3px solid #167db9;outline-offset:3px}
/* Horizontal: familiar artwork + information product row. */
.afl-horizontal .afl-image-wrap,.afl-editorial .afl-image-wrap,.afl-featured .afl-image-wrap{align-self:flex-start}.afl-horizontal .afl-button{align-self:flex-start;min-width:160px}
/* Classic: a compact store tile with information below the artwork. */
.afl-classic{flex-direction:column;width:280px;gap:0;padding:0;overflow:hidden}.afl-classic .afl-image-wrap{max-width:100%;width:100%;flex:none;min-height:200px;padding:10px;border:0;border-bottom:1px solid #e0eaf1;border-radius:0}.afl-classic .afl-art{height:205px;max-height:205px}.afl-classic .afl-body{padding:15px;gap:7px;width:100%}.afl-classic .afl-title{font-size:15px}.afl-classic .afl-button{width:100%}
/* Minimal: quiet listing row, with no competing container shadow. */
.afl-minimal{border-width:0 0 1px;border-radius:0;box-shadow:none;padding:12px 0;gap:13px}.afl-minimal .afl-image-wrap{flex-basis:98px;padding:3px}.afl-minimal .afl-title{font-size:15px}.afl-minimal .afl-detail{display:none}.afl-minimal .afl-price{font-size:17px}.afl-minimal .afl-button{min-height:32px;padding:6px 10px!important;font-size:11px}
/* Cover: showcase format with a large, uncropped cover. */
.afl-cover{flex-direction:column;width:270px;padding:0;gap:0;overflow:hidden;border-color:#c9deed}.afl-cover .afl-image-wrap{flex:none;width:100%;max-width:100%;padding:8px;border:0;border-radius:0;background:#edf5fa;min-height:210px}.afl-cover .afl-art{height:240px;max-height:240px}.afl-cover .afl-body{padding:14px;width:100%;border-top:3px solid #1683ca;gap:7px}.afl-cover .afl-title{font-size:15px}.afl-cover .afl-detail{display:none}.afl-cover .afl-button{width:100%}
/* Editorial: a recommendation note with a restrained accent rail. */
.afl-editorial{border:0;border-top:3px solid #1683ca;border-bottom:1px solid #d5e4ef;border-radius:0;padding:22px 16px;background:#f7fbfe;box-shadow:none;gap:20px}.afl-editorial .afl-image-wrap{flex-basis:145px}.afl-editorial .afl-title{font-size:20px;line-height:1.6}.afl-editorial .afl-detail{padding-left:11px;border-left:2px solid #c5e0f1}.afl-editorial .afl-button{min-width:170px}
/* Compact: designed for narrow sidebars and rankings. */
.afl-compact{padding:10px;gap:10px;margin:10px 0;border-radius:4px;box-shadow:none}.afl-compact .afl-image-wrap{flex-basis:78px;max-width:32%;padding:3px;align-self:flex-start}.afl-compact .afl-art{max-height:110px}.afl-compact .afl-no-image{min-height:90px;font-size:10px;padding:5px}.afl-compact .afl-body{gap:5px}.afl-compact .afl-title{font-size:13px;line-height:1.6}.afl-compact .afl-meta,.afl-compact .afl-detail,.afl-compact .afl-price{display:none}.afl-compact .afl-button{font-size:11px;min-height:31px;padding:5px 9px!important;gap:6px}.afl-compact .afl-pr,.afl-compact .afl-rating{font-size:9px}
/* Featured: promotion panel with a warm outline and large artwork. */
.afl-featured{padding:20px;border:2px solid #efb577;border-top:5px solid var(--afl-accent);border-radius:6px;background:#fffcf7;gap:21px;box-shadow:0 3px 0 #fff0df}.afl-featured .afl-image-wrap{flex-basis:190px;background:#fff;border-color:#f0dfc9}.afl-featured .afl-title{font-size:21px;color:#195c87}.afl-featured .afl-price{font-size:23px}.afl-featured .afl-button{min-width:185px;min-height:43px}
/* Button: a concise title and action strip. */
.afl-button-only.afl-card{display:flex;flex-wrap:wrap;align-items:center;padding:10px 12px;gap:9px;border-left:3px solid #1683ca;border-radius:3px;box-shadow:none;background:#f6fbff}.afl-button-title{flex:1;min-width:100px;font-size:13px;font-weight:750;line-height:1.6;color:#126ba3}.afl-button-only .afl-button{margin-top:0}
.afl-ranking,.afl-collection,.afl-auto{margin:25px 0}.afl-ranking h3,.afl-collection h3,.afl-auto-heading,.afl-widget-title{margin:0 0 16px;padding:0 0 9px;border-bottom:2px solid #1483c9;color:#24526f;font-size:19px;line-height:1.5;font-weight:800;overflow-wrap:anywhere}.afl-ranked{position:relative}.afl-rank-no{position:absolute;left:-5px;top:-5px;z-index:2;display:grid;place-items:center;width:25px;height:29px;background:#5599c4;border-radius:2px 2px 8px 2px;color:#fff;font-size:12px;font-weight:850;border:2px solid #fff}.afl-ranked:nth-of-type(1) .afl-rank-no{background:#ca8a23}.afl-ranked:nth-of-type(2) .afl-rank-no{background:#7f919e}.afl-ranked:nth-of-type(3) .afl-rank-no{background:#a77756}.afl-collection-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:16px}.afl-collection-grid>*{min-width:0}.afl-collection-grid .afl-card{width:100%;margin:0}.afl-collection-grid .afl-horizontal{flex-direction:column}.afl-collection-grid .afl-horizontal .afl-image-wrap{flex:none;width:100%;max-width:100%}.afl-auto{padding-top:20px;border-top:1px solid #d5e5f0}.afl-official-part{max-width:100%;overflow-x:auto}
/* Widget overrides are local to each widget. Saved custom colors stay intact. */
.afl-widget-display{container-type:inline-size;max-width:100%;min-width:0;margin:16px 0}.afl-widget-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,max(220px,calc((100% - (var(--afl-widget-columns,1) - 1)*var(--afl-widget-gap,12px))/var(--afl-widget-columns,1)))),1fr));gap:var(--afl-widget-gap,12px)}.afl-widget-grid>.afl-card{width:100%;min-width:0;margin:0;border-radius:var(--afl-widget-radius,6px);background:var(--afl-widget-background,#fff);color:var(--afl-widget-text,#263e50)}.afl-widget-grid>.afl-featured{background:var(--afl-widget-background,#fffcf7)}.afl-widget-grid>.afl-editorial{background:var(--afl-widget-background,#f7fbfe)}.afl-widget-display .afl-title,.afl-widget-display .afl-button-title{color:var(--afl-widget-text,#086daf)}.afl-widget-display .afl-meta,.afl-widget-display .afl-detail{color:var(--afl-widget-text,#5f7b90)}.afl-widget-display .afl-price{color:var(--afl-widget-text,#c64c23)}.afl-widget-display .afl-price small{color:var(--afl-widget-text,#728797)}.afl-widget-display .afl-meta,.afl-widget-display .afl-detail,.afl-widget-display .afl-price{display:block}.afl-widget-display .afl-button{color:var(--afl-widget-button-text,#fff)!important;max-width:100%;white-space:normal}.afl-widget-display .afl-body{max-width:100%}
@media(max-width:520px){.afl-card{padding:12px;gap:12px}.afl-image-wrap{flex-basis:112px;padding:4px}.afl-title{font-size:15px}.afl-detail{display:none}.afl-button{font-size:11px;padding:8px 10px!important;min-width:0!important}.afl-price{font-size:18px}.afl-classic,.afl-cover{padding:0;gap:0}.afl-editorial .afl-title,.afl-featured .afl-title{font-size:17px}.afl-featured{padding:13px;gap:12px}.afl-featured .afl-image-wrap{flex-basis:115px}.afl-compact{padding:9px;gap:8px}.afl-compact .afl-image-wrap{flex-basis:70px}.afl-compact .afl-title{font-size:12px}.afl-compact .afl-button{font-size:10px;min-height:30px}.afl-widget-display .afl-detail{display:block}}
@container(max-width:280px){.afl-widget-display .afl-image-wrap{flex-basis:72px}.afl-widget-display .afl-classic .afl-image-wrap,.afl-widget-display .afl-cover .afl-image-wrap{flex-basis:auto}.afl-widget-display .afl-button{min-width:0;font-size:11px}.afl-widget-display .afl-title{font-size:14px}}
@media(prefers-reduced-motion:reduce){.afl-button{transition:none}}
/* Editorial cover collection. Existing per-widget color overrides remain effective. */
.afl-card{border:1px solid #d9d0bb;border-radius:0;background:#fffefa;box-shadow:4px 4px 0 #e7dfcb;gap:20px;padding:18px;color:#46533a}.afl-image-wrap{flex-basis:36%;max-width:40%;padding:7px;background:#e6e8d7;border:0;border-radius:0;align-self:flex-start}.afl-art{border-radius:0;max-height:280px}.afl-no-image{color:#9caa87;background:repeating-linear-gradient(45deg,#e4e9d5,#e4e9d5 8px,#dde4cd 8px,#dde4cd 9px);font:10px/1.6 monospace}.afl-body{gap:9px}.afl-pr{color:#8b793e;background:#f3dfa0;border-color:#d9c78c;border-radius:0;font:9px/1.4 monospace;padding:3px 7px}.afl-rating{border-radius:0;background:#f4d9cd;border-color:#d5ad9c;color:#a9705d}.afl-title{font-size:19px;color:#46553a;line-height:1.7;letter-spacing:-.02em}.afl-meta{font-size:10px;color:#95a17c}.afl-detail{font-size:12px;color:#899870;line-height:1.95}.afl-price{font-family:Georgia,serif;font-size:25px;color:#c96d4d;letter-spacing:-.02em}.afl-price small{font-family:inherit;font-size:9px;color:#a1ab86}.afl-button{border-radius:0;font-size:11px;padding:9px 13px!important;gap:19px;box-shadow:3px 3px 0 #d9cdb0!important}.afl-button>span{padding-left:9px;border-left:1px solid #ffffff66}.afl-classic{padding:11px 11px 0;border-bottom:5px solid #cdc7aa;gap:0;overflow:visible}.afl-classic .afl-image-wrap{padding:0;border:0;min-height:0;width:100%;max-width:100%}.afl-classic .afl-art{height:230px;max-height:230px}.afl-classic .afl-body{padding:16px 4px 19px}.afl-classic .afl-title{font-size:16px}.afl-cover{padding:0;gap:0;border-color:#657b4b;box-shadow:5px 5px 0 #c5cfa9}.afl-cover .afl-image-wrap{padding:0;min-height:0;width:100%;max-width:100%;background:#e3e9d3}.afl-cover .afl-art{height:265px;max-height:265px}.afl-cover .afl-body{padding:17px 16px;border-top:1px solid #657b4b}.afl-cover .afl-title{font-size:16px}.afl-minimal{border:0;border-bottom:1px dashed #b5c39b;box-shadow:none;background:transparent;padding:14px 0}.afl-minimal .afl-image-wrap{flex-basis:95px;padding:4px;transform:rotate(-2deg)}.afl-minimal .afl-title{font-size:15px}.afl-editorial{border:0;border-top:1px solid #63784a;border-bottom:4px double #63784a;box-shadow:none;background:#f0efdc;padding:24px 18px}.afl-editorial .afl-image-wrap{flex-basis:33%;background:#fffefa;box-shadow:3px 4px 0 #d9d3b3;transform:rotate(-3deg)}.afl-editorial .afl-title{font:700 22px/1.7 Georgia,"Yu Mincho",serif;color:#667b4d}.afl-editorial .afl-detail{padding:0;border:0}.afl-featured{border:1px solid #ccb18b;border-left:6px solid var(--afl-accent);background:#f7e6cd;box-shadow:5px 5px 0 #ddc59f;padding:22px}.afl-featured .afl-image-wrap{flex-basis:40%;background:#fffefa;transform:rotate(2deg);border:0;box-shadow:3px 4px 0 #ccb48d}.afl-featured .afl-title{color:#786448;font-size:22px}.afl-featured .afl-price{font-size:29px}.afl-compact{padding:11px;gap:12px;box-shadow:2px 2px 0 #e0ddc4}.afl-compact .afl-image-wrap{flex-basis:78px;max-width:30%;padding:4px}.afl-compact .afl-title{font-size:13px}.afl-compact .afl-button{font-size:10px;gap:9px;box-shadow:none!important}.afl-button-only.afl-card{border:0;border-radius:0;background:#282e30;padding:13px 15px;box-shadow:4px 4px 0 #cfc7ac}.afl-button-title{color:#f9f4dc}.afl-button-only .afl-button{box-shadow:none!important}.afl-ranking h3,.afl-collection h3,.afl-auto-heading,.afl-widget-title{border-bottom:1px solid #bcca9c;color:#6b8250;font-size:18px;padding-bottom:12px}.afl-rank-no{border-radius:50%;background:#a6b58c;font-family:Georgia,serif}.afl-widget-grid>.afl-card{background:var(--afl-widget-background,#fffefa);color:var(--afl-widget-text,#46533a)}.afl-widget-grid>.afl-featured{background:var(--afl-widget-background,#f7e6cd)}.afl-widget-grid>.afl-editorial{background:var(--afl-widget-background,#f0efdc)}.afl-widget-grid>.afl-button-only{background:var(--afl-widget-background,#282e30)}.afl-widget-display .afl-title{color:var(--afl-widget-text,#46553a)}.afl-widget-display .afl-button-title{color:var(--afl-widget-text,#f9f4dc)}.afl-widget-display .afl-meta,.afl-widget-display .afl-detail{color:var(--afl-widget-text,#899870)}.afl-widget-display .afl-price{color:var(--afl-widget-text,#c96d4d)}.afl-widget-display .afl-price small{color:var(--afl-widget-text,#a1ab86)}
@media(max-width:520px){.afl-card{padding:13px;gap:13px}.afl-title{font-size:15px}.afl-image-wrap{padding:4px}.afl-button{font-size:10px;gap:10px;padding:7px 9px!important}.afl-price{font-size:22px}.afl-classic{padding:9px 9px 0;gap:0}.afl-cover{padding:0;gap:0}.afl-featured{padding:13px;gap:13px}.afl-featured .afl-title,.afl-editorial .afl-title{font-size:17px}.afl-compact{padding:10px;gap:9px}.afl-compact .afl-title{font-size:12px}.afl-minimal{padding:13px 0}.afl-widget-display .afl-button-title{font-size:12px}}

/* Image-only ad groups: scoped independently from product card styles. */
.afl-image-ads{width:100%;margin:16px auto;box-sizing:border-box}
.afl-image-ads .afl-ads-label{font:600 11px/1.5 sans-serif;letter-spacing:.12em;color:inherit;margin-bottom:7px}
.afl-image-ads .afl-ads-grid{display:grid;grid-template-columns:repeat(var(--afl-ads-columns,1),minmax(0,1fr));gap:var(--afl-ads-gap,16px);align-items:start}
.afl-image-ads a.afl-image-ad{display:block;min-width:0;box-sizing:border-box;margin:0;padding:0;border:0;border-radius:var(--afl-ads-radius,8px);overflow:hidden;text-decoration:none;box-shadow:none;background:transparent}
.afl-image-ads .afl-image-ad img{display:block;width:100%;max-width:100%;height:auto;margin:0;padding:0;border:0;box-shadow:none;aspect-ratio:auto;object-fit:contain}
.afl-image-ads.afl-ads-frame .afl-image-ad{padding:10px;border:1px solid var(--afl-ads-border);background:var(--afl-ads-bg)}
.afl-image-ads.afl-ads-shadow .afl-image-ad{padding:8px;border:1px solid var(--afl-ads-border);background:var(--afl-ads-bg);box-shadow:0 5px 14px #0002}
.afl-image-ads.afl-ads-polaroid .afl-image-ad{padding:10px 10px 28px;border:1px solid var(--afl-ads-border);background:var(--afl-ads-bg);box-shadow:3px 4px 0 #0002}
.afl-image-ads a.afl-image-ad:focus-visible{outline:3px solid #0073aa;outline-offset:3px}
@media(max-width:480px){.afl-image-ads .afl-ads-grid{grid-template-columns:1fr}}
/* Inline saved design styles also work when a cached stylesheet is older. */
@media(max-width:480px){.afl-image-ads .afl-ads-grid{grid-template-columns:1fr!important}}
