/* ============================================================
   Picwok — shared stylesheet, all pages.
   ============================================================
   Each page's <body> carries two classes: the shared
   "picwok-page" base, and a page-specific "picwok-page--X"
   modifier (e.g. "picwok-page--cart"). Rules that only apply to
   one page are scoped under that modifier so pages that happen
   to reuse a class name (.tag, .tags) don't bleed into each
   other.

   Colors are all CSS custom properties (below), not literal
   values, so light/dark mode is just two lists of the same
   names rather than two copies of every rule. The palette leans
   warm rather than neutral gray - it's meant to feel like a
   gallery wall, lit or dim, not a generic app UI.
   ============================================================ */

:root {
    --color-bg: #faf9f7;
    --color-surface: #f0efe9;
    --color-surface-hover: #e5e2d8;

    --color-text: #222;
    --color-text-muted: #666;

    --color-border: #ddd;

    --color-error: #a00;

    --color-info-bg: #f0f6fb;
    --color-info-border: #cde;
    --color-info-text: #345;

    --color-image-border: #000;
    --color-image-shadow: rgba(0, 0, 0, 0.35);
}

[data-theme="dark"] {
    --color-bg: #1c1a17;
    --color-surface: #28251f;
    --color-surface-hover: #332f27;

    --color-text: #e8e4dc;
    --color-text-muted: #a39c8d;

    --color-border: #3d3830;

    --color-error: #e0796a;

    --color-info-bg: #1f2a30;
    --color-info-border: #35474f;
    --color-info-text: #a9c8d6;

    --color-image-border: #554f43;
    --color-image-shadow: rgba(0, 0, 0, 0.55);
}

/* --- Shared base, used by every page --- */

.picwok-page {
    font-family: sans-serif;
    margin: 40px auto;
    padding: 0 20px;
    background: var(--color-bg);
    color: var(--color-text);
}

.picwok-page h1 {
    margin-bottom: 30px;
}

.picwok-page .label {
    font-weight: bold;
}

/* Per-page container width and the two h1 exceptions
   (home and series-info use a tighter heading margin). */

.picwok-page--home,
.picwok-page--tag-info,
.picwok-page--about,
.picwok-page--preference,
.picwok-page--series-info,
.picwok-page--explore,
.picwok-page--picture-info,
.picwok-page--cart,
.picwok-page--checkout,
.picwok-page--aspect-ratio-info {
    max-width: 1000px;
}

.picwok-page--impressum {
    max-width: 700px;
}

.picwok-page--home h1,
.picwok-page--series-info h1 {
    margin-bottom: 10px;
}

.picwok-page .cta {
    display: inline-block;
    padding: 10px 18px;
    border: 1px solid var(--color-text);
    border-radius: 3px;
    color: inherit;
    text-decoration: none;
}

.picwok-page .cta:hover {
    background: var(--color-text);
    color: var(--color-bg);
}

.ratio-swatch {
    display: block;
    flex-shrink: 0;
}

.ratio-swatch-card {
    fill: var(--color-bg);
    stroke: var(--color-border);
}

.ratio-swatch-fill {
    fill: var(--color-text-muted);
}

/* --- Artwork image styling (shared across every page that
   shows an actual picture - not the ratio-swatch diagrams,
   which are abstract, not photos) --- */

.picwok-page--series-info figure img,
.picwok-page--tag-info .thumb,
.picwok-page--aspect-ratio-info .thumb {
    border: 1px solid var(--color-image-border);
    box-shadow: 3px 3px 6px var(--color-image-shadow);
}

/* --- Top menu (all pages, via partials/picwok-menu.ejs) --- */
/*
   Mobile-first: the hamburger toggle and the "primary" group
   (theme + cart) are always visible; the "secondary" group
   (Home/Explore/About/language/currency) starts collapsed and
   expands into its own full-width row below when the hamburger
   is tapped. The desktop media query further down restores the
   original single-row layout and hides the hamburger entirely.
*/

.top-menu {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px 20px;
    margin-bottom: 30px;
}

.top-menu a {
    color: inherit;
    text-decoration: none;
}

.top-menu a:hover {
    text-decoration: underline;
}

.menu-toggle {
    display: inline-flex;
    align-items: center;
    background: none;
    border: none;
    padding: 0;
    font-size: 1.4em;
    line-height: 1;
    color: inherit;
    cursor: pointer;
}

.top-menu-secondary {
    display: none;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    order: 3;
    width: 100%;
}

.top-menu-secondary.expanded {
    display: flex;
}

.top-menu-primary {
    display: flex;
    align-items: baseline;
    gap: 20px;
}

@media (min-width: 701px) {
    .top-menu {
        flex-wrap: nowrap;
        justify-content: flex-end;
    }

    .menu-toggle {
        display: none;
    }

    .top-menu-secondary {
        display: flex;
        flex-direction: row;
        align-items: baseline;
        order: 0;
        width: auto;
    }
}

.preference-indicator {
    display: inline-block;
    padding: 2px 8px;
    border: 1px solid var(--color-border);
    border-radius: 3px;
    font-size: 0.85em;
    letter-spacing: 0.03em;
}

.preference-indicator:hover {
    background: var(--color-surface);
    text-decoration: none;
}

.theme-toggle {
    padding: 2px 6px;
    color: inherit;
    background: none;
    border: none;
    border-radius: 3px;
    font-size: 1em;
    cursor: pointer;
}

.theme-toggle:hover {
    background: var(--color-surface-hover);
}

/* --- Footer (all pages, via partials/picwok-footer.ejs) --- */

.picwok-footer {
    margin-top: 60px;
    padding-top: 20px;
    border-top: 1px solid var(--color-border);
    font-size: 0.9em;
    color: var(--color-text-muted);
    display: flex;
    gap: 20px;
}

.picwok-footer a {
    color: inherit;
    text-decoration: none;
}

.picwok-footer a:hover {
    text-decoration: underline;
}

/* --- Home --- */

.picwok-page--home .tagline {
    color: var(--color-text-muted);
    margin-bottom: 40px;
}

.picwok-page--home .intro {
    line-height: 1.6;
    max-width: 600px;
    margin-bottom: 30px;
}

.picwok-page--home .motd-banner {
    margin-bottom: 30px;
    padding: 12px 15px;
    border: 1px solid var(--color-info-border);
    background: var(--color-info-bg);
    color: var(--color-info-text);
    max-width: 600px;
    line-height: 1.6;
}

/* --- Tag info --- */

.picwok-page--tag-info .tag-list,
.picwok-page--aspect-ratio-info .tag-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.picwok-page--tag-info .tag-list li,
.picwok-page--aspect-ratio-info .tag-list li {
    margin-bottom: 12px;
}

.picwok-page--tag-info .tag-list a,
.picwok-page--aspect-ratio-info .tag-list a {
    display: flex;
    align-items: center;
    gap: 12px;
    color: inherit;
    text-decoration: none;
}

.picwok-page--tag-info .tag-list a:hover,
.picwok-page--aspect-ratio-info .tag-list a:hover {
    text-decoration: underline;
}

.picwok-page--tag-info .thumb {
    width: 48px;
    height: 48px;
    object-fit: cover;
    border-radius: 3px;
    flex-shrink: 0;
}

/* Unlike tag-info's uniform square icons, this page's whole
   point is to show what the aspect ratio actually looks like -
   so the thumbnail keeps its real proportions (height-
   constrained, width following naturally) instead of being
   cropped to a square. */
.picwok-page--aspect-ratio-info .thumb {
    max-height: 48px;
    max-width: 96px;
    width: auto;
    height: auto;
    box-sizing: border-box;
    border-radius: 3px;
    flex-shrink: 0;
}

.picwok-page--tag-info .number,
.picwok-page--aspect-ratio-info .number {
    display: inline-block;
    width: 60px;
    color: var(--color-text-muted);
}

/* --- Series info --- */

.picwok-page--series-info a {
    color: inherit;
}

.picwok-page--series-info .series-id {
    color: var(--color-text-muted);
    margin-bottom: 30px;
}

.picwok-page--series-info .series-description {
    margin-bottom: 40px;
}

.picwok-page--series-info .series-text {
    line-height: 1.6;
    max-width: 700px;
    margin-bottom: 20px;
}

.picwok-page--series-info .pictures {
    display: grid;
    grid-template-columns:
        repeat(auto-fill, minmax(300px, 1fr));
    gap: 40px 30px;
}

.picwok-page--series-info figure {
    margin: 0;
}

.picwok-page--series-info figure img {
    display: block;
    width: 512px;
    max-width: 100%;
    height: auto;
}

.picwok-page--series-info figcaption {
    margin-top: 10px;
    line-height: 1.4;
}

.picwok-page--series-info .dimensions {
    color: var(--color-text-muted);
    font-size: 0.9em;
    margin-top: 4px;
}

.picwok-page--series-info .tags {
    margin-top: 8px;
    margin-bottom: 20px;
}

.picwok-page--series-info .tag {
    display: inline-block;
    background: var(--color-surface);
    padding: 3px 7px;
    margin: 2px;
    border-radius: 3px;
    font-size: 0.85em;
    text-decoration: none;
}

.picwok-page--series-info a.tag:hover {
    text-decoration: underline;
}

/* --- Picture info --- */

.picwok-page--picture-info h2 {
    margin-top: 40px;
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 5px;
}

.picwok-page--picture-info .picture {
    margin-bottom: 40px;
}

.picwok-page--picture-info .picture-image {
    margin: 0 0 20px 0;
}

.picwok-page--picture-info .hero-matting {
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    max-width: 100%;
    /* width/height are set inline per picture, fitted to the
       image's own aspect ratio - see picwok-version-info.ejs */
    padding: 44px;
    background: #fff;
    border: 1px solid var(--color-image-border);
    box-shadow: 3px 3px 6px var(--color-image-shadow);
}

.picwok-page--picture-info .hero-image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.picwok-page--picture-info .matting-picker {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
    color: var(--color-text-muted);
}

.picwok-page--picture-info .matting-picker input[type="color"] {
    width: 32px;
    height: 24px;
    padding: 0;
    border: 1px solid var(--color-border);
    border-radius: 3px;
    cursor: pointer;
}

.picwok-page--picture-info .picture-image figcaption {
    margin-top: 8px;
    color: var(--color-text-muted);
}

.picwok-page--picture-info .metadata {
    line-height: 1.6;
}

.picwok-page--picture-info .tags {
    margin-top: 10px;
}

.picwok-page--picture-info .tag {
    display: inline-block;
    background: var(--color-surface);
    padding: 3px 8px;
    margin: 2px;
    border-radius: 3px;
    color: inherit;
    text-decoration: none;
}

.picwok-page--picture-info .tag:hover {
    background: var(--color-surface-hover);
    text-decoration: underline;
}

.picwok-page--picture-info .description {
    margin-top: 10px;
}

.picwok-page--picture-info .series {
    margin-top: 40px;
}

.picwok-page--picture-info .series-item {
    margin-bottom: 25px;
}

.picwok-page--picture-info .series-title {
    font-weight: bold;
    font-size: 1.1em;
}

.picwok-page--picture-info .series-title a {
    color: inherit;
    text-decoration: none;
}

.picwok-page--picture-info .series-title a:hover {
    text-decoration: underline;
}

.picwok-page--picture-info .series-works {
    margin-top: 5px;
    color: var(--color-text-muted);
}

.picwok-page--picture-info .series-works a {
    color: inherit;
    text-decoration: none;
}

.picwok-page--picture-info .series-works a:hover {
    text-decoration: underline;
}

.picwok-page--picture-info .format-info a {
    color: inherit;
    text-decoration: none;
}

.picwok-page--picture-info .format-info a:hover {
    text-decoration: underline;
}

.picwok-page--picture-info .order-options {
    margin-top: 20px;
    padding: 15px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    max-width: 500px;
}

.picwok-page--picture-info .add-to-cart {
    margin-top: 10px;
    padding: 10px 16px;
    color: inherit;
    background: none;
    border: 1px solid var(--color-text);
    border-radius: 3px;
    cursor: pointer;
}

.picwok-page--picture-info .add-to-cart:hover {
    background: var(--color-text);
    color: var(--color-bg);
}

.picwok-page--picture-info .sizing-note {
    margin-top: 8px;
    font-size: 0.9em;
    font-style: italic;
    color: var(--color-text-muted);
}

.picwok-page--picture-info .back-link {
    display: inline-block;
    margin-bottom: 20px;
    color: inherit;
}

.picwok-page--picture-info .version-layout {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.picwok-page--picture-info .version-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.picwok-page--picture-info .version-row {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid var(--color-border);
    border-radius: 4px;
    padding: 6px;
}

.picwok-page--picture-info .version-row.active {
    border-color: var(--color-text);
    background: var(--color-surface);
}

.picwok-page--picture-info .version-tab {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    min-width: 0;
    background: none;
    border: none;
    padding: 0;
    text-align: left;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

.picwok-page--picture-info .version-row-thumb {
    width: 40px;
    height: 40px;
    object-fit: cover;
    border-radius: 3px;
    flex-shrink: 0;
}

.picwok-page--picture-info .version-row-title {
    font-weight: bold;
}

/* Compact override: this same .order-options/.add-to-cart
   markup is shared with the version-info page (see above),
   where it sits in a wide box of its own - but nested in a
   list row here, it just needs to be an inline button next to
   the tab, not a whole boxed section. */
.picwok-page--picture-info .version-row .order-options {
    margin: 0;
    padding: 0;
    background: none;
    border: none;
    max-width: none;
    flex-shrink: 0;
}

.picwok-page--picture-info .version-row .add-to-cart {
    margin: 0;
    padding: 6px 12px;
}

.picwok-page--picture-info .version-detail-panels {
    flex: 1;
    min-width: 0;
}

.picwok-page--picture-info .version-panel {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 25px;
}

/* Same trap as .cart-item elsewhere: an author rule setting
   display beats the browser's default [hidden] { display: none }
   at equal specificity, so without this, a "hidden" panel would
   still render as a grid. */
.picwok-page--picture-info .version-panel[hidden] {
    display: none;
}

.picwok-page--picture-info .version-panel-preview {
    display: block;
    width: 160px;
    max-width: 100%;
    height: auto;
    border: 1px solid var(--color-image-border);
    box-shadow: 3px 3px 6px var(--color-image-shadow);
}

.picwok-page--picture-info .version-panel h3 {
    margin-top: 0;
}

.picwok-page--picture-info .details-link {
    display: inline-block;
    margin-top: 8px;
    color: inherit;
}

/* --- Cart --- */

.picwok-page--cart .cart-overview {
    margin-bottom: 20px;
    font-size: 1.1em;
    font-weight: bold;
}

.picwok-page--cart .cart-layout {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.picwok-page--cart .cart-item-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.picwok-page--cart .cart-item-row {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 1px solid var(--color-border);
    border-radius: 4px;
    padding: 6px;
}

.picwok-page--cart .cart-item-row.active {
    border-color: var(--color-text);
    background: var(--color-surface);
}

.picwok-page--cart .cart-item-tab {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    min-width: 0;
    background: none;
    border: none;
    padding: 0;
    text-align: left;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

.picwok-page--cart .cart-item-row-thumb {
    width: 40px;
    height: 40px;
    object-fit: cover;
    border-radius: 3px;
    flex-shrink: 0;
}

.picwok-page--cart .cart-item-row-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    font-size: 1.4em;
    flex-shrink: 0;
}

.picwok-page--cart .cart-item-shipping-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3em;
}

.picwok-page--cart .cart-item-row-text {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.picwok-page--cart .cart-item-row-title {
    font-weight: bold;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.picwok-page--cart .cart-item-row-meta {
    font-size: 0.85em;
    color: var(--color-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.picwok-page--cart .cart-item-row-meta.error {
    color: var(--color-error);
}

.picwok-page--cart .cart-item-row .remove {
    flex-shrink: 0;
}

.picwok-page--cart .cart-detail-panels {
    flex: 1;
    min-width: 0;
}

.picwok-page--cart .cart-item {
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 25px;
    padding-bottom: 30px;
    margin-bottom: 30px;
    border-bottom: 1px solid var(--color-border);
}

/* The [hidden] attribute is how inactive detail panels are
   hidden - but .cart-item above sets its own `display`, and an
   author rule like that beats the browser's default
   [hidden] { display: none } at equal specificity, so without
   this, a "hidden" panel would still render as a grid. */
.picwok-page--cart .cart-item[hidden] {
    display: none;
}

.picwok-page--cart .cart-item img {
    display: block;
}

.picwok-page--cart .paper-mockup {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 160px;
    max-width: 100%;
    background: var(--color-bg);
    border: 1px solid var(--color-image-border);
    box-shadow: 3px 3px 6px var(--color-image-shadow);
}

.picwok-page--cart .paper-mockup.black-background {
    background: #000;
}

.picwok-page--cart .checkbox-choice {
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: normal;
    cursor: pointer;
}

.picwok-page--cart .checkbox-choice input[type="checkbox"] {
    margin: 0;
    width: auto;
    cursor: pointer;
}

.picwok-page--cart .cart-item > div:first-child a {
    display: block;
}

.picwok-page--cart .cart-item h2 {
    margin-top: 0;
}

.picwok-page--cart .details {
    line-height: 1.7;
}

.picwok-page--cart .options {
    margin-top: 20px;
}

.picwok-page--cart .option {
    margin-bottom: 15px;
}

.picwok-page--cart .option label {
    display: block;
    font-weight: bold;
    margin-bottom: 5px;
}

.picwok-page--cart .paper-size-options {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
}

.picwok-page--cart .option .paper-size-choice {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-weight: normal;
    margin-bottom: 0;
    cursor: pointer;
}

.picwok-page--cart .paper-size-choice input[type="radio"] {
    margin: 0;
    width: auto;
    cursor: pointer;
}

.picwok-page--cart .option input,
.picwok-page--cart .option select {
    font: inherit;
    padding: 5px;
    color: inherit;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: 3px;
}

.picwok-page--cart .option input {
    width: 100px;
}

.picwok-page--cart .dimension-with-margin {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.picwok-page--cart .margin-label {
    display: inline;
    font-weight: normal;
    font-size: 0.9em;
    color: var(--color-text-muted);
    margin-left: 6px;
}

.picwok-page--cart .dimension-inches {
    font-weight: normal;
    font-size: 0.9em;
    color: var(--color-text-muted);
}

.picwok-page--cart .width-margin,
.picwok-page--cart .height-margin {
    width: 70px;
}

.picwok-page--cart .price {
    margin-top: 20px;
    font-size: 1.2em;
}

.picwok-page--cart .empty {
    color: var(--color-text-muted);
}

.picwok-page--cart .size-hint {
    margin-bottom: 20px;
    padding: 12px 15px;
    border: 1px solid var(--color-info-border);
    background: var(--color-info-bg);
    color: var(--color-info-text);
    max-width: 600px;
}

.picwok-page--cart .gratis-nudge {
    margin-bottom: 20px;
    padding: 12px 15px;
    border: 1px solid var(--color-info-border);
    background: var(--color-info-bg);
    color: var(--color-info-text);
    max-width: 600px;
}

.picwok-page--cart .error {
    color: var(--color-error);
}

.picwok-page--cart .remove {
    padding: 6px 12px;
    cursor: pointer;
    color: var(--color-error);
    background: none;
    border: 1px solid var(--color-error);
    border-radius: 3px;
    white-space: nowrap;
}

.picwok-page--cart .remove:hover {
    background: var(--color-error);
    color: #fff;
}

.picwok-page--cart .cart-info {
    margin-top: 40px;
    padding-top: 20px;
    border-top: 1px solid var(--color-border);
    max-width: 700px;
}

.picwok-page--cart .cart-info h2 {
    margin-top: 0;
}

.picwok-page--cart .cart-info h3 {
    margin-top: 20px;
    margin-bottom: 8px;
    font-size: 1.05em;
}

.picwok-page--cart .cart-info p {
    line-height: 1.6;
    color: var(--color-text);
    margin: 0;
}

.picwok-page--cart .shop-closed-notice,
.picwok-page--checkout .shop-closed-notice {
    margin-top: 8px;
    font-size: 0.9em;
    font-style: italic;
    color: var(--color-text-muted);
}

/* --- Impressum --- */

.picwok-page--impressum a {
    color: inherit;
}

.picwok-page--impressum h2 {
    margin-top: 30px;
    font-size: 1.1em;
}

/* --- Explore --- */

.picwok-page--explore .explore-section {
    margin-top: 40px;
}

.picwok-page--explore h2 {
    border-bottom: 1px solid var(--color-border);
    padding-bottom: 5px;
    margin-bottom: 20px;
}

.picwok-page--explore h3 {
    margin-top: 25px;
    margin-bottom: 10px;
    color: var(--color-text-muted);
}

.picwok-page--explore .tag-links {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.picwok-page--explore .tag-links a {
    display: inline-block;
    background: var(--color-surface);
    padding: 5px 12px;
    border-radius: 3px;
    color: inherit;
    text-decoration: none;
}

.picwok-page--explore .tag-links a:hover {
    background: var(--color-surface-hover);
    text-decoration: underline;
}

.picwok-page--explore .series-links {
    list-style: none;
    padding: 0;
    margin: 0;
}

.picwok-page--explore .series-links li {
    margin-bottom: 10px;
}

.picwok-page--explore .series-links a {
    color: inherit;
    text-decoration: none;
}

.picwok-page--explore .series-links a:hover {
    text-decoration: underline;
}

.picwok-page--explore .picture-links {
    list-style: none;
    padding: 0;
    margin: 0;
    column-count: 3;
    column-gap: 30px;
}

.picwok-page--explore .picture-links li {
    margin-bottom: 8px;
    break-inside: avoid;
}

.picwok-page--explore .picture-links a {
    color: inherit;
    text-decoration: none;
}

.picwok-page--explore .picture-links a:hover {
    text-decoration: underline;
}

.picwok-page--explore .identifier {
    color: var(--color-text-muted);
    font-size: 0.85em;
    margin-left: 6px;
}

.picwok-page--explore .ratio-links {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
}

.picwok-page--explore .ratio-links a {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    color: inherit;
    text-decoration: none;
}

.picwok-page--explore .ratio-links a:hover .ratio-swatch-fill {
    fill: var(--color-text);
}

.picwok-page--explore .ratio-links a:hover .ratio-label {
    text-decoration: underline;
}

.picwok-page--explore .ratio-label {
    font-size: 0.85em;
    color: var(--color-text-muted);
}

@media (max-width: 700px) {
    .picwok-page--explore .picture-links {
        column-count: 2;
    }
}

@media (max-width: 480px) {
    .picwok-page--explore .picture-links {
        column-count: 1;
    }
}

/* --- Checkout --- */

.picwok-page--checkout .checkout-header,
.picwok-page--checkout .checkout-item {
    display: grid;
    grid-template-columns: 60px 1fr 80px 130px 90px 100px;
    gap: 15px;
    align-items: center;
}

.picwok-page--checkout .checkout-header {
    font-weight: bold;
    color: var(--color-text-muted);
    padding-bottom: 8px;
    border-bottom: 1px solid var(--color-border);
}

.picwok-page--checkout .checkout-item {
    padding: 10px 0;
    border-bottom: 1px solid var(--color-surface);
}

.picwok-page--checkout .checkout-item .error {
    color: var(--color-error);
}

.picwok-page--checkout .checkout-shipping-name {
    grid-column: 2 / 6;
    color: var(--color-text-muted);
}

.picwok-page--checkout .checkout-shipping-amount {
    text-align: right;
    color: var(--color-text-muted);
}

.picwok-page--checkout .item-price {
    text-align: right;
}

.picwok-page--checkout .checkout-total {
    margin-top: 20px;
    font-size: 1.3em;
    font-weight: bold;
    text-align: right;
}

.picwok-page--checkout .checkout-shipping-note {
    font-size: 0.9em;
    color: var(--color-text-muted);
    text-align: right;
}

.picwok-page--checkout .checkout-warning {
    margin-top: 20px;
    padding: 12px 15px;
    border: 1px solid var(--color-error);
    color: var(--color-error);
}

.picwok-page--checkout .checkout-warning a {
    color: inherit;
}

.picwok-page--checkout .checkout-size-hint {
    margin-top: 20px;
    padding: 12px 15px;
    border: 1px solid var(--color-info-border);
    background: var(--color-info-bg);
    color: var(--color-info-text);
    max-width: 500px;
}

.picwok-page--checkout .checkout-info {
    margin-top: 30px;
    padding: 20px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    max-width: 500px;
}

.picwok-page--checkout .checkout-info p {
    margin-top: 0;
    line-height: 1.6;
}

.picwok-page--checkout .checkout-info button {
    padding: 10px 18px;
    color: inherit;
    background: none;
    border: 1px solid var(--color-text);
    border-radius: 3px;
    cursor: pointer;
}

.picwok-page--checkout .checkout-info button:hover:not(:disabled) {
    background: var(--color-text);
    color: var(--color-bg);
}

.picwok-page--checkout .checkout-info button:disabled {
    cursor: not-allowed;
    opacity: 0.6;
}

.picwok-page--checkout .checkout-pdf-error {
    margin-top: 10px;
    color: var(--color-error);
}

.picwok-page--checkout .empty {
    color: var(--color-text-muted);
}

/* --- Language / currency picker --- */

.picwok-page--preference .preference-note {
    color: var(--color-text-muted);
    line-height: 1.6;
    max-width: 500px;
    margin-bottom: 30px;
}

.picwok-page--preference .preference-list {
    list-style: none;
    padding: 0;
    margin: 0;
    max-width: 300px;
}

.picwok-page--preference .preference-list li {
    margin-bottom: 10px;
}

.picwok-page--preference .preference-option {
    display: block;
    width: 100%;
    padding: 10px 15px;
    text-align: left;
    font: inherit;
    color: var(--color-text);
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: 3px;
    cursor: pointer;
}

.picwok-page--preference .preference-option:hover {
    background: var(--color-surface-hover);
}

/* --- Aspect ratio info --- */

.picwok-page--aspect-ratio-info .aspect-ratio-header {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 30px;
}

.picwok-page--aspect-ratio-info .aspect-ratio-header h1 {
    margin: 0;
}



