/* moved from woocommerce/myaccount/my-account.php */
/* ===== My Account page · scoped to body.woocommerce-account ===== */

/* envio-nav-3 item 6 (canvas escala-fluida-noir.html, V1 picked by Jaime): the noir family's fluid
   root, at a stock 16 px browser default 16 px up to 1600 wide, 19.2 px at 1920, 25.6 px from 2560,
   so below 1600 nothing changes; the rem floor and ceiling read the visitor's own default font
   size, so a larger default is kept (Gate 0 R1 O-1).
   Duplicated VERBATIM in coming-soon.php's inline style (the landing loads no theme CSS); a test
   keeps the two declarations identical. */
:root {
    --fm-noir-root: clamp(1rem, 1vw, 1.6rem);
}
/* The door document (login-envio-door.php, body.fm-porta-door) scales its root from the token: its
   .fm-porta-shell, .fm-porta and Porta B card lengths are rem at the 16 px base. A browser without
   :has() ignores the rule and renders at the visitor's default root. The stock account page and the
   privacy page never match it: their root stays at the visitor's default, only the curtain chrome scales (see the
   .fm-curtain-header rules at the end). */
html:has(body.fm-porta-door) { font-size: var(--fm-noir-root); }

/* ---- Page header ---- */
/* Design board B (2026-09-28): ONE header row. Left column = eyebrow, H1 (the current endpoint's
   menu label) and the optional intro (fotomania_account_header_intro); right = the optional aside
   (fotomania_account_header_aside). Nothing hooked -> eyebrow + H1 at the same rhythm everywhere. */
body.woocommerce-account .fm-account-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    padding-bottom: 28px;
    border-bottom: 1px solid var(--hairline);
    margin-bottom: 36px;
}
body.woocommerce-account .fm-account-header__main {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}
body.woocommerce-account .fm-account-header__aside {
    flex-shrink: 0;
}
body.woocommerce-account .fm-account-header .eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--red);
    font-weight: 500;
}
body.woocommerce-account .fm-account-header .h2 {
    font-family: "Fraunces", Georgia, serif;
    font-weight: 400;
    font-size: clamp(1.9rem, 4vw, 2.8rem);
    line-height: 1.08;
    letter-spacing: -0.018em;
    margin: 0;
    color: var(--ink);
}
body.woocommerce-account .fm-account-header__intro {
    font-size: 15px;
    line-height: 1.5;
    color: var(--muted);
    max-width: 60ch;
    margin: 0;
}
/* The header's primary action (e.g. "Fazer novo envio", printed by Studio on meus-envios): the
   same values as the fm-envios-account component pill it replaces. */
body.woocommerce-account .fm-account-header__pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    padding: 0 22px;
    border-radius: 99px;
    background: var(--red);
    color: #fff;
    font-family: "Geist", system-ui, sans-serif;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}
body.woocommerce-account .fm-account-header__pill:hover {
    background: var(--red-600);
    color: #fff;
}
body.woocommerce-account .fm-account-header__pill:focus-visible {
    outline: 2px solid var(--red);
    outline-offset: 2px;
}
@media (max-width: 768px) {
    body.woocommerce-account .fm-account-header {
        flex-direction: column;
        align-items: flex-start;
    }
    body.woocommerce-account .fm-account-header__aside {
        margin-top: 4px;
    }
}
/* ---- Two-column layout: sidebar nav + content ---- */
body.woocommerce-account .woocommerce-MyAccount-wrapper {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 40px;
    align-items: start;
}
@media (max-width: 768px) {
    body.woocommerce-account .woocommerce-MyAccount-wrapper {
        grid-template-columns: 1fr;
        gap: 16px;
    }
}
/* Account content sections (2026-09-28): the global marketing rule
   `section { padding: clamp(72px, 9vw, 132px) 0; }` (style.css:429, a page-band rhythm for
   landing sections) also matches every `<section>` printed inside the account content column:
   Studio's `section.fm-envios-account` (EnviosAccountPage.php:67) and
   `section.fm-photo-library-account` (PhotoLibraryAccount::renderShell(),
   PhotoLibraryAccount.php:36), WooCommerce's own view-order sections (order details, customer
   details, fulfillments), saved products and the dashboard. The leak added 72px (mobile) up to
   132px (1920px desktop) of dead space above and below them. This rule zeroes the vertical
   padding on EVERY viewport for every `<section>` in the content column, so the wrapper grid gap
   is the only distance left. It replaces the earlier two-selector reset and the mobile-only,
   top-only fix (T1a.2 fix round 1). */
body.woocommerce-account .woocommerce-MyAccount-content section {
    padding-top: 0;
    padding-bottom: 0;
}

/* ---- Sidebar nav, navigation.php renders into .woocommerce-MyAccount-navigation ---- */
/* Sticky only on desktop: on mobile it renders as a static, scrollable chip strip.
   Envio com conta final fix wave F3: the sticky grid item is the rail (navigation.php wraps the
   nav and the after-navigation hook output, e.g. the pilot note, in .fm-account-rail), so the
   note sits under the nav in the nav column and the content keeps the content column. */
@media (min-width: 769px) {
    body.woocommerce-account .fm-account-rail {
        position: sticky;
        top: calc(80px + 16px);
        min-width: 0;
    }
    body.woocommerce-account.admin-bar .fm-account-rail {
        top: calc(80px + 32px + 16px);
    }
    body.woocommerce-account .fm-account-rail .fm-account-pilot-note {
        margin: 16px 0 0;
    }
}
/* The pilot note under the nav (PilotAccountProfile::renderNote, dies with the curtain): board B
   quiet type. A plain rule on purpose, nothing else depends on it. */
body.woocommerce-account .fm-account-pilot-note {
    font-size: 13px;
    line-height: 1.45;
    color: var(--muted);
}
/* Mobile: the rail dissolves, so the nav strip, the note and the content stay three stacked grid
   items exactly as before the rail existed. */
@media (max-width: 768px) {
    body.woocommerce-account .fm-account-rail {
        display: contents;
    }
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    margin: 0;
    padding: 0;
    background: var(--surface);
    border: 1px solid var(--hairline);
    border-radius: 16px;
    overflow: hidden;
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li {
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--hairline);
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li:last-child {
    border-bottom: none;
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
    display: block;
    padding: 13px 18px;
    font-size: 0.88rem;
    font-weight: 500;
    color: var(--muted);
    text-decoration: none;
    transition: color 180ms ease, background 180ms ease, padding-left 180ms ease;
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover {
    color: var(--ink);
    background: var(--surface-2);
    padding-left: 22px;
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a,
body.woocommerce-account .woocommerce-MyAccount-navigation ul li a[aria-current="page"] {
    color: var(--red);
    font-weight: 600;
    background: var(--red-50);
    padding-left: 18px;
    position: relative;
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a::before,
body.woocommerce-account .woocommerce-MyAccount-navigation ul li a[aria-current="page"]::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background: var(--red);
    border-radius: 0 2px 2px 0;
}
/* Logout item special style */
body.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a {
    color: var(--muted);
    font-size: 0.82rem;
}
body.woocommerce-account .woocommerce-MyAccount-navigation ul li.woocommerce-MyAccount-navigation-link--customer-logout a:hover {
    color: var(--red);
    background: oklch(0.95 0.02 25);
}
/* ---- Mobile: nav becomes a static, scrollable chip strip (never floats over content) ---- */
@media (max-width: 768px) {
    body.woocommerce-account .woocommerce-MyAccount-navigation {
        position: static;
        /* Grid items default to min-width:auto, which lets a wide overflow-x child
           grow the grid track instead of clipping to it: force the track width. */
        min-width: 0;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul {
        display: flex;
        gap: 8px;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 6px;
        scrollbar-width: none;
        background: transparent;
        border: none;
        border-radius: 0;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul::-webkit-scrollbar {
        display: none;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li {
        flex: 0 0 auto;
        margin: 0;
        padding: 0;
        border-bottom: none;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li a {
        display: inline-block;
        padding: 8px 14px;
        border: 1px solid var(--hairline);
        border-radius: 999px;
        white-space: nowrap;
        font-size: 0.9rem;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li a:hover {
        padding-left: 14px;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a,
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li a[aria-current="page"] {
        border-color: var(--red);
        padding-left: 14px;
    }
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li.is-active a::before,
    body.woocommerce-account .woocommerce-MyAccount-navigation ul li a[aria-current="page"]::before {
        content: none;
    }
}

/* ---- Content area ---- */
body.woocommerce-account .woocommerce-MyAccount-content {
    min-width: 0; /* prevent grid blowout */
}

/* ---- WC notices in account ---- */
body.woocommerce-account .woocommerce-notices-wrapper .woocommerce-message,
body.woocommerce-account .woocommerce-notices-wrapper .woocommerce-info,
body.woocommerce-account .woocommerce-notices-wrapper .woocommerce-error {
    border-top: 3px solid var(--red);
    border-radius: 0 0 10px 10px;
    padding: 14px 18px;
    font-size: 0.92rem;
    margin-bottom: 24px;
    list-style: none;
}

/* ---- General account form inputs ---- */
body.woocommerce-account .woocommerce-MyAccount-content .form-row {
    margin-bottom: 16px;
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row label {
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 6px;
    letter-spacing: 0.01em;
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row label .required {
    color: var(--red);
    font-weight: 700;
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row label .optional {
    font-weight: 400;
    color: var(--muted);
    font-size: 0.78rem;
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row .input-text,
body.woocommerce-account .woocommerce-MyAccount-content .form-row input[type="text"],
body.woocommerce-account .woocommerce-MyAccount-content .form-row input[type="email"],
body.woocommerce-account .woocommerce-MyAccount-content .form-row input[type="tel"],
body.woocommerce-account .woocommerce-MyAccount-content .form-row input[type="password"],
body.woocommerce-account .woocommerce-MyAccount-content .form-row input[type="number"],
body.woocommerce-account .woocommerce-MyAccount-content .form-row select,
body.woocommerce-account .woocommerce-MyAccount-content .form-row textarea {
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.95rem;
    width: 100%;
    padding: 11px 14px;
    border: 1px solid var(--hairline-2);
    border-radius: 10px;
    color: var(--ink);
    background: var(--paper);
    box-sizing: border-box;
    transition: border-color 200ms ease, box-shadow 200ms ease;
    appearance: none;
    -webkit-appearance: none;
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row .input-text:focus,
body.woocommerce-account .woocommerce-MyAccount-content .form-row input:focus,
body.woocommerce-account .woocommerce-MyAccount-content .form-row select:focus,
body.woocommerce-account .woocommerce-MyAccount-content .form-row textarea:focus {
    outline: none;
    border-color: transparent;
    box-shadow: 0 0 0 2px var(--red);
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row textarea {
    resize: vertical;
    min-height: 90px;
}

/* Two-column field rows */
body.woocommerce-account .woocommerce-MyAccount-content .form-row-first,
body.woocommerce-account .woocommerce-MyAccount-content .form-row-last {
    display: inline-block;
    width: calc(50% - 8px);
    box-sizing: border-box;
    vertical-align: top;
}
body.woocommerce-account .woocommerce-MyAccount-content .form-row-first { margin-right: 8px; }
body.woocommerce-account .woocommerce-MyAccount-content .form-row-last  { margin-left: 8px; }
@media (max-width: 600px) {
    body.woocommerce-account .woocommerce-MyAccount-content .form-row-first,
    body.woocommerce-account .woocommerce-MyAccount-content .form-row-last {
        width: 100%;
        margin: 0;
    }
}

/* Submit buttons in forms */
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button[type="submit"],
body.woocommerce-account .woocommerce-MyAccount-content button[type="submit"] {
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    padding: 14px 28px;
    border-radius: 99px;
    cursor: pointer;
    border: none;
    background: var(--red);
    color: #fff;
    box-shadow: 0 8px 24px oklch(0.55 0.20 25 / 0.3);
    display: inline-flex;
    align-items: center;
    transition: all 200ms ease;
    margin-top: 8px;
}
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-Button[type="submit"]:hover,
body.woocommerce-account .woocommerce-MyAccount-content button[type="submit"]:hover {
    background: var(--red-600);
    box-shadow: 0 12px 32px oklch(0.55 0.20 25 / 0.4);
    transform: translateY(-2px);
}

/* Fieldset (password change section) */
body.woocommerce-account .woocommerce-MyAccount-content fieldset {
    border: 1px solid var(--hairline);
    border-radius: 12px;
    padding: 20px 20px 12px;
    margin: 24px 0;
}
body.woocommerce-account .woocommerce-MyAccount-content fieldset legend {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--muted);
    font-weight: 500;
    padding: 0 8px;
}

/* section sub-label (monospace eyebrow inside content) */
body.woocommerce-account .fm-content-section-label {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--muted);
    font-weight: 500;
    margin: 0 0 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--hairline);
}
/* moved from woocommerce/myaccount/orders.php */
/* ===== Orders table ===== */
body.woocommerce-account .fm-orders-heading {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--muted);
    font-weight: 500;
    margin: 0 0 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--hairline);
}

body.woocommerce-account .woocommerce-orders-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
}
body.woocommerce-account .woocommerce-orders-table thead tr {
    border-bottom: 2px solid var(--hairline-2);
}
body.woocommerce-account .woocommerce-orders-table thead th {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--muted);
    font-weight: 500;
    padding: 0 12px 10px 0;
    text-align: left;
    white-space: nowrap;
}
body.woocommerce-account .woocommerce-orders-table tbody tr {
    border-bottom: 1px solid var(--hairline);
    transition: background 150ms ease;
}
body.woocommerce-account .woocommerce-orders-table tbody tr:hover {
    background: var(--surface);
}
body.woocommerce-account .woocommerce-orders-table tbody td,
body.woocommerce-account .woocommerce-orders-table tbody th {
    padding: 14px 12px 14px 0;
    vertical-align: middle;
    color: var(--ink);
}
body.woocommerce-account .woocommerce-orders-table tbody th a,
body.woocommerce-account .woocommerce-orders-table tbody td a {
    color: var(--red);
    font-weight: 600;
    text-decoration: none;
}
body.woocommerce-account .woocommerce-orders-table tbody th a:hover,
body.woocommerce-account .woocommerce-orders-table tbody td a:hover {
    text-decoration: underline;
}

/* Responsive: stack on small screens */
@media (max-width: 600px) {
    body.woocommerce-account .woocommerce-orders-table,
    body.woocommerce-account .woocommerce-orders-table thead,
    body.woocommerce-account .woocommerce-orders-table tbody,
    body.woocommerce-account .woocommerce-orders-table tr,
    body.woocommerce-account .woocommerce-orders-table th,
    body.woocommerce-account .woocommerce-orders-table td {
        display: block;
    }
    body.woocommerce-account .woocommerce-orders-table thead {
        display: none;
    }
    body.woocommerce-account .woocommerce-orders-table tbody td::before,
    body.woocommerce-account .woocommerce-orders-table tbody th::before {
        content: attr(data-title) ": ";
        font-weight: 600;
        font-size: 0.75rem;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        color: var(--muted);
        display: block;
        margin-bottom: 2px;
    }
    body.woocommerce-account .woocommerce-orders-table tbody tr {
        padding: 14px 0;
    }
    body.woocommerce-account .woocommerce-orders-table tbody td,
    body.woocommerce-account .woocommerce-orders-table tbody th {
        padding: 3px 0;
        border-bottom: none;
    }
}

/* Action buttons in the table */
body.woocommerce-account .woocommerce-orders-table .woocommerce-button,
body.woocommerce-account .woocommerce-orders-table .button {
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 7px 16px;
    border-radius: 99px;
    border: 1px solid var(--red);
    background: transparent;
    color: var(--red);
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
    transition: background 150ms ease, color 150ms ease;
    margin: 2px 4px 2px 0;
}
body.woocommerce-account .woocommerce-orders-table .woocommerce-button:hover,
body.woocommerce-account .woocommerce-orders-table .button:hover {
    background: var(--red);
    color: #fff;
}

/* Pagination */
body.woocommerce-account .woocommerce-pagination {
    display: flex;
    gap: 12px;
    margin-top: 28px;
}
body.woocommerce-account .woocommerce-pagination .button {
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.85rem;
    font-weight: 600;
    padding: 10px 22px;
    border-radius: 99px;
    border: 1px solid var(--hairline-2);
    background: var(--paper);
    color: var(--ink);
    cursor: pointer;
    text-decoration: none;
    display: inline-block;
    transition: border-color 150ms ease, background 150ms ease;
}
body.woocommerce-account .woocommerce-pagination .button:hover {
    border-color: var(--ink);
    background: var(--surface);
}

/* Empty state */
.fm-orders-empty {
    text-align: center;
    padding: 56px 24px;
}
.fm-orders-empty__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    background: var(--red-50);
    border-radius: 16px;
    color: var(--red);
    margin: 0 auto 20px;
}
.fm-orders-empty__title {
    font-family: "Fraunces", Georgia, serif;
    font-weight: 400;
    font-size: 1.4rem;
    letter-spacing: -0.01em;
    color: var(--ink);
    margin: 0 0 8px;
}
.fm-orders-empty__desc {
    font-size: 0.88rem;
    color: var(--muted);
    margin: 0 0 28px;
}
.fm-orders-empty__cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    padding: 14px 28px;
    border-radius: 99px;
    border: none;
    background: var(--red);
    color: #fff;
    box-shadow: 0 8px 24px oklch(0.55 0.20 25 / 0.3);
    text-decoration: none;
    transition: all 200ms ease;
}
.fm-orders-empty__cta:hover {
    background: var(--red-600);
    box-shadow: 0 12px 32px oklch(0.55 0.20 25 / 0.4);
    transform: translateY(-2px);
    color: #fff;
}
/* Lab-exit date (spec 14.3), under the order date. */
.woocommerce-orders-table .fm-order-lab-exit {
    display: block;
    margin-top: 4px;
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    color: var(--muted);
}
/* moved from woocommerce/myaccount/form-login.php */
/* ===== Login page · scoped to body.woocommerce-account.woocommerce-page ===== */

/* Page header */
body.woocommerce-account .fm-login-header {
    padding-bottom: 32px;
    border-bottom: 1px solid var(--hairline);
    margin-bottom: 48px;
}
body.woocommerce-account .fm-login-header .eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--red);
    font-weight: 500;
    margin-bottom: 8px;
}
body.woocommerce-account .fm-login-header .h2 {
    font-family: "Fraunces", Georgia, serif;
    font-weight: 400;
    font-size: clamp(1.9rem, 4vw, 2.8rem);
    line-height: 1.08;
    letter-spacing: -0.018em;
    margin: 0;
    color: var(--ink);
}

/* Two-column card layout */
#customer_login.fm-login-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px;
    align-items: start;
}
@media (max-width: 720px) {
    #customer_login.fm-login-grid {
        grid-template-columns: 1fr;
    }
}

/* Login/Register card */
.fm-auth-card {
    background: var(--paper);
    border: 1px solid var(--hairline);
    border-radius: 18px;
    padding: 32px 28px;
    box-shadow: var(--shadow-ambient);
}
.fm-auth-card__title {
    font-family: "Fraunces", Georgia, serif;
    font-weight: 400;
    font-size: 1.4rem;
    letter-spacing: -0.01em;
    color: var(--ink);
    margin: 0 0 6px;
}
.fm-auth-card__subtitle {
    font-size: 0.83rem;
    color: var(--muted);
    margin: 0 0 28px;
}

/* Form rows */
.fm-auth-card .woocommerce-form-row {
    margin-bottom: 16px;
}
.fm-auth-card .woocommerce-form-row label {
    display: block;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--ink);
    margin-bottom: 6px;
    letter-spacing: 0.01em;
}
.fm-auth-card .woocommerce-form-row label .required {
    color: var(--red);
    font-weight: 700;
}
.fm-auth-card .woocommerce-form-row .input-text,
.fm-auth-card .woocommerce-form-row input[type="text"],
.fm-auth-card .woocommerce-form-row input[type="email"],
.fm-auth-card .woocommerce-form-row input[type="password"] {
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.95rem;
    width: 100%;
    padding: 11px 14px;
    border: 1px solid var(--hairline-2);
    border-radius: 10px;
    color: var(--ink);
    background: var(--paper);
    box-sizing: border-box;
    transition: border-color 200ms ease, box-shadow 200ms ease;
    appearance: none;
    -webkit-appearance: none;
}
.fm-auth-card .woocommerce-form-row .input-text::placeholder,
.fm-auth-card .woocommerce-form-row input::placeholder {
    color: var(--muted);
    opacity: 0.6;
}
.fm-auth-card .woocommerce-form-row .input-text:focus,
.fm-auth-card .woocommerce-form-row input:focus {
    outline: none;
    border-color: transparent;
    box-shadow: 0 0 0 2px var(--red);
}

/* Remember me row */
.fm-auth-card .form-row.fm-remember-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 0;
}
.fm-auth-card .woocommerce-form__label-for-checkbox {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.84rem;
    color: var(--muted);
    cursor: pointer;
}
.fm-auth-card .woocommerce-form__input-checkbox {
    width: 16px;
    height: 16px;
    accent-color: var(--red);
    cursor: pointer;
}

/* Submit buttons */
.fm-auth-card .fm-auth-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    padding: 14px 28px;
    border-radius: 99px;
    cursor: pointer;
    border: none;
    background: var(--red);
    color: #fff;
    box-shadow: 0 8px 24px oklch(0.55 0.20 25 / 0.3);
    transition: all 200ms ease;
    margin-top: 18px;
    width: 100%;
}
.fm-auth-card .fm-auth-btn:hover {
    background: var(--red-600);
    box-shadow: 0 12px 32px oklch(0.55 0.20 25 / 0.4);
    transform: translateY(-2px);
}
/* Busy state while the login/register POST runs (assets/js/account-form.js). The button stays
   enabled until the browser has serialized the form (WooCommerce needs its name in the POST), so
   pointer-events blocks further clicks meanwhile. The ring is white on the red pill, no new color. */
.fm-auth-card .fm-auth-btn.is-busy,
.fm-auth-card .fm-auth-btn.is-busy:hover {
    pointer-events: none;
    cursor: progress;
    opacity: .85;
    transform: none;
    background: var(--red);
    box-shadow: 0 4px 12px oklch(0.55 0.20 25 / 0.2);
}
.fm-auth-card .fm-auth-btn.is-busy::after {
    content: "";
    display: inline-block;
    width: 16px;
    height: 16px;
    box-sizing: border-box;
    margin-left: 10px;
    border: 2px solid rgba(255,255,255,.45);
    border-top-color: #fff;
    border-radius: 50%;
    animation: fm-auth-spin .8s linear infinite;
}
@keyframes fm-auth-spin {
    to { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
    .fm-auth-card .fm-auth-btn.is-busy::after {
        animation: none;
    }
}

/* Lost password link */
.fm-auth-card .woocommerce-LostPassword {
    text-align: center;
    margin-top: 16px;
    font-size: 0.82rem;
    color: var(--muted);
}
.fm-auth-card .woocommerce-LostPassword a {
    color: var(--red);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.fm-auth-card .woocommerce-LostPassword a:hover {
    opacity: 0.8;
}

/* Hide any stray empty paragraph or unstyled wrapper injected by WC hooks
   between form fields (e.g. empty <p class="form-row"> from woocommerce_login_form action). */
.fm-auth-card .woocommerce-form-row:empty,
.fm-auth-card p.form-row:empty,
.fm-auth-card p:empty {
    display: none;
    margin: 0;
    padding: 0;
}

/* Password hint on register card */
.fm-auth-card .fm-register-hint {
    font-size: 0.80rem;
    color: var(--muted);
    line-height: 1.5;
    margin-bottom: 20px;
    padding: 12px 14px;
    background: var(--surface);
    border-radius: 8px;
    border: 1px solid var(--hairline);
}
/* moved from woocommerce/myaccount/form-login.php (2026-09-25, envio-conta T10, round 2) */
/* ===== Porta B: the envio-door login content, scoped to body.woocommerce-account =====
   Round 2: Porta B is now rendered by the standalone full-bleed shell (theme root
   login-envio-door.php, wired via the `template_include` filter in inc/envio-door.php) instead of
   sitting inside the normal account page chrome; board PortaNoir.dc.html's own noir background,
   top bar and footer strip live in the .fm-porta-shell* rules further below. This block is just
   the two-column CONTENT inside that shell: the intro (left, noir text) and the login/register
   card (right, Paper White, .fm-auth-card verbatim, now a single card with an Entrar/Criar conta
   tab switcher instead of two side-by-side cards). Single column below 860px. */
body.woocommerce-account .fm-porta {
    display: flex;
    flex-direction: column;
    gap: 2rem;
    align-items: start;
    width: 100%;
}
@media (min-width: 860px) {
    body.woocommerce-account .fm-porta {
        display: grid;
        grid-template-columns: minmax(0, 1fr) minmax(20rem, 28.75rem);
        gap: 3.5rem;
        align-items: center;
    }
}
body.woocommerce-account .fm-porta__intro { max-width: 62ch; }
body.woocommerce-account .fm-porta__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5625rem;
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: oklch(0.72 0.17 25);
    font-weight: 500;
    margin: 0 0 0.875rem;
}
body.woocommerce-account .fm-porta__title {
    font-family: "Fraunces", Georgia, serif;
    font-weight: 300;
    font-size: clamp(1.9rem, 4.2vw, 2.9rem);
    line-height: 1.08;
    letter-spacing: -0.018em;
    margin: 0 0 1.125rem;
    color: var(--on-noir);
}
body.woocommerce-account .fm-porta__why {
    list-style: none;
    margin: 0 0 1.125rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
body.woocommerce-account .fm-porta__why li {
    position: relative;
    padding-left: 1.25rem;
    font-size: 0.95rem;
    color: var(--on-noir-dim);
    line-height: 1.5;
}
body.woocommerce-account .fm-porta__why li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 0.375rem;
    height: 0.375rem;
    border-radius: 6.1875rem;
    background: var(--red);
}
body.woocommerce-account .fm-porta__note {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    margin: 0;
    padding: 0.75rem 1rem;
    border-radius: 0.75rem;
    border: 1px solid var(--noir-line);
    background: oklch(1 0 0 / 0.04);
    font-size: 0.85rem;
    color: oklch(0.80 0.010 80);
}
body.woocommerce-account .fm-porta__note svg {
    flex: none;
    color: var(--red);
    /* envio-nav-3 item 6: the icon's 18 px width/height attributes, restated in rem to grow with the root. */
    width: 1.125rem;
    height: 1.125rem;
}
body.woocommerce-account .fm-porta .fm-auth-card__title {
    margin-top: 0;
    margin-bottom: 0.375rem;
}
/* envio-nav-3 item 6: the Porta B card at the door's fluid root. The shared .fm-auth-card rules
   above also style the stock login page (curtain down) and stay px there; under .fm-porta the card
   restates each px length of those rules in rem (value / 16, identical at the 16 px root), so the
   whole card grows with the door. Their font sizes are rem already. The card's box-shadow stays the
   site-wide --shadow-ambient token (style.css, px): a token outside the noir family. */
body.woocommerce-account .fm-porta .fm-auth-card {
    border-radius: 1.125rem;
    padding: 2rem 1.75rem;
}
body.woocommerce-account .fm-porta .fm-auth-card__subtitle { margin: 0 0 1.75rem; }
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row { margin-bottom: 1rem; }
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row label { margin-bottom: 0.375rem; }
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row .input-text,
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row input[type="text"],
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row input[type="email"],
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row input[type="password"] {
    padding: 0.6875rem 0.875rem;
    border-radius: 0.625rem;
}
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row .input-text:focus,
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form-row input:focus {
    box-shadow: 0 0 0 0.125rem var(--red);
}
body.woocommerce-account .fm-porta .fm-auth-card .form-row.fm-remember-row { gap: 0.75rem; }
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form__label-for-checkbox { gap: 0.5rem; }
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-form__input-checkbox { width: 1rem; height: 1rem; }
body.woocommerce-account .fm-porta .fm-auth-card .fm-auth-btn {
    padding: 0.875rem 1.75rem;
    box-shadow: 0 0.5rem 1.5rem oklch(0.55 0.20 25 / 0.3);
    margin-top: 1.125rem;
}
body.woocommerce-account .fm-porta .fm-auth-card .fm-auth-btn:hover {
    box-shadow: 0 0.75rem 2rem oklch(0.55 0.20 25 / 0.4);
    transform: translateY(-0.125rem);
}
/* The porta hover lift and shadow outrank the generic busy rule; keep the busy pill flat here too. */
body.woocommerce-account .fm-porta .fm-auth-card .fm-auth-btn.is-busy,
body.woocommerce-account .fm-porta .fm-auth-card .fm-auth-btn.is-busy:hover {
    transform: none;
    box-shadow: 0 0.25rem 0.75rem oklch(0.55 0.20 25 / 0.2);
}
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-LostPassword { margin-top: 1rem; }
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-LostPassword a { text-underline-offset: 0.125rem; }
body.woocommerce-account .fm-porta .fm-auth-card .fm-register-hint {
    margin-bottom: 1.25rem;
    padding: 0.75rem 0.875rem;
    border-radius: 0.5rem;
}
/* Envio com conta final fix wave F6: WooCommerce's registration privacy text
   (wc_registration_privacy_policy_text(), the admin-editable option
   woocommerce_registration_privacy_policy_text) sits on the Paper White card but inherited the noir
   shell's light --on-noir ink, near invisible. It takes the card's own muted token, and its link
   is underlined like the shell footer's privacy link. */
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-privacy-policy-text,
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-privacy-policy-text p {
    color: var(--muted);
    font-size: 0.80rem;
    line-height: 1.5;
}
body.woocommerce-account .fm-porta .fm-auth-card .woocommerce-privacy-policy-text a {
    color: var(--ink);
    text-decoration: underline;
    text-underline-offset: 0.125rem;
}

/* Entrar/Criar conta pill tab switcher (board PortaNoir.dc.html): two radio inputs (checked =
   the visible panel) + CSS sibling selectors, no JS. Both panels always exist in the DOM (never a
   JS-only affordance); native radiogroup keyboard behavior (Tab focuses the group, arrow keys
   change the selection) makes it operable without a script, and each label stays a real <label
   for> its radio so a screen reader announces it like any other radio control. Present only while
   WooCommerce registration is enabled (form-login.php's existing $fm_login_registration gate):
   with registration off, .fm-porta__card renders the login form alone, no tabs. */
body.woocommerce-account .fm-tabs { position: relative; }
body.woocommerce-account .fm-tabs__input {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
body.woocommerce-account .fm-tabs__list {
    display: flex;
    gap: 0.375rem;
    padding: 0.25rem;
    margin-bottom: 1.5rem;
    border-radius: 6.1875rem;
    background: var(--surface);
}
body.woocommerce-account .fm-tabs__tab {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 2.5rem;
    border-radius: 6.1875rem;
    font-family: "Geist", ui-sans-serif, sans-serif;
    font-size: 0.87rem;
    font-weight: 600;
    color: var(--muted);
    cursor: pointer;
    transition: background 200ms ease, color 200ms ease, box-shadow 200ms ease;
}
body.woocommerce-account #fm_porta_tab_entrar:checked ~ .fm-tabs__list label[for="fm_porta_tab_entrar"],
body.woocommerce-account #fm_porta_tab_criar:checked ~ .fm-tabs__list label[for="fm_porta_tab_criar"] {
    background: #fff;
    color: var(--ink);
    box-shadow: 0 0.0625rem 0.1875rem oklch(0.18 0.01 25 / 0.12);
}
body.woocommerce-account #fm_porta_tab_entrar:focus-visible ~ .fm-tabs__list label[for="fm_porta_tab_entrar"],
body.woocommerce-account #fm_porta_tab_criar:focus-visible ~ .fm-tabs__list label[for="fm_porta_tab_criar"] {
    outline: 0.125rem solid var(--red);
    outline-offset: 0.125rem;
}
body.woocommerce-account .fm-tabs__panel { display: none; }
body.woocommerce-account #fm_porta_tab_entrar:checked ~ #fm_porta_panel_entrar,
body.woocommerce-account #fm_porta_tab_criar:checked ~ #fm_porta_panel_criar {
    display: block;
}

/* ===== Porta B shell (theme root login-envio-door.php): the full-bleed noir DOCUMENT, same
   visual language as coming-soon.php's .cs shell (board PortaNoir.dc.html: its own top bar and
   footer strip, edge to edge, no theme header.php/footer.php). Namespaced .fm-porta-shell so it
   never collides with .cs (coming-soon.php keeps its own inline <style>; this page instead loads
   account.css through the normal wp_head() pipeline, see login-envio-door.php's own comment for
   why). The page is still is_account_page() (only the physical template file changed), so
   body_class() still prints "woocommerce-account" here same as the stock page. */
body.woocommerce-account.fm-porta-door {
    margin: 0;
}
.fm-porta-shell {
    position: relative;
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: 1.75rem 1.5rem 1.5rem;
    overflow: hidden;
    background: var(--noir);
    color: var(--on-noir);
    font-family: "Geist", system-ui, sans-serif;
}
@media (min-width: 760px) { .fm-porta-shell { padding: 3rem 4.5rem 2.5rem; } }
.fm-porta-shell__glow {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(68.75rem, 140vw);
    aspect-ratio: 11 / 7;
    transform: translate(-50%, -50%);
    border-radius: 62.4375rem;
    background: radial-gradient(closest-side, oklch(0.55 0.20 25 / 0.14), oklch(0.175 0.016 45 / 0));
    pointer-events: none;
}
.fm-porta-shell__top,
.fm-porta-shell__body,
.fm-porta-shell__foot {
    position: relative;
}
.fm-porta-shell__top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
}
/* envio-nav-3 item 4: the landing's lockup and heights (coming-soon.php .cs__logo), 44 px tap target. */
.fm-porta-shell__logo { display: inline-flex; align-items: center; min-height: 2.75rem; }
.fm-porta-shell__logo img { display: block; height: 2.5rem; width: auto; }
@media (min-width: 760px) { .fm-porta-shell__logo img { height: 3.25rem; } }
.fm-porta-shell__meta {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--on-noir-dim);
}
.fm-porta-shell__body {
    flex: 1;
    display: flex;
    align-items: center;
    padding: 2.5rem 0;
}
/* WooCommerce's notices (a wrong password, the password-reset confirmation) print INSIDE the form
   card, above the fields, in the card's own ink (form-login.php fires
   woocommerce_before_customer_login_form there; Jaime 2026-09-27 15:52, envio-nav-2 Gate 0 E-02).
   WooCommerce's own "Perdeu a sua senha?" link inside the error stays a visible, underlined link. */
.fm-porta__card .woocommerce-notices-wrapper:not(:empty) { margin: 0 0 1.25rem; }
/* The light card inside the noir shell sets its own ink: anything else printed on that hook
   inherits it instead of the shell's light text (Gate 0 R3-01). Studio's AuthResume prints its
   "Cancelar e voltar ao projeto" link there when a resume handle is in the request. */
body.woocommerce-account .fm-porta__card { color: var(--ink); }
body.woocommerce-account .fm-porta__card .fotomania-studio-resume-cancel { margin: 0 0 1rem; font-size: 0.88rem; }
body.woocommerce-account .fm-porta__card .fotomania-studio-resume-cancel a {
    color: var(--red);
    text-decoration: underline;
    text-underline-offset: 0.125rem;
}
body.woocommerce-account .fm-porta__card .woocommerce-notices-wrapper .woocommerce-error,
body.woocommerce-account .fm-porta__card .woocommerce-notices-wrapper .woocommerce-message,
body.woocommerce-account .fm-porta__card .woocommerce-notices-wrapper .woocommerce-info {
    margin: 0;
    padding: 0.75rem 0.875rem;
    color: var(--ink);
    background: var(--red-50);
    border: 1px solid var(--hairline);
    border-top: 0.1875rem solid var(--red);
    border-radius: 0 0 0.625rem 0.625rem;
    font-size: 0.88rem;
    line-height: 1.45;
}
body.woocommerce-account .fm-porta__card .woocommerce-notices-wrapper li { margin: 0; }
body.woocommerce-account .fm-porta__card .woocommerce-notices-wrapper a {
    color: var(--red);
    text-decoration: underline;
    text-underline-offset: 0.125rem;
}
@media (min-width: 760px) { .fm-porta-shell__body { padding: 3rem 0; } }
.fm-porta-shell__foot {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    border-top: 1px solid var(--noir-line);
    padding-top: 1rem;
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    color: var(--on-noir-dim);
}
.fm-porta-shell__foot a { color: var(--on-noir-dim); text-decoration: underline; text-underline-offset: 0.125rem; }
.fm-porta-shell__foot a:hover { color: var(--on-noir); }
.fm-porta-shell__foot span:nth-child(2) { display: none; }
@media (min-width: 900px) { .fm-porta-shell__foot span:nth-child(2) { display: inline; } }

/* moved from woocommerce/myaccount/dashboard.php */
/* ===== Dashboard content ===== */
.fm-dashboard-greeting {
    margin-bottom: 36px;
}
.fm-dashboard-greeting .fm-greeting-name {
    font-family: "Fraunces", Georgia, serif;
    font-weight: 400;
    font-size: clamp(1.3rem, 2.5vw, 1.7rem);
    letter-spacing: -0.01em;
    color: var(--ink);
    margin: 0 0 8px;
}
.fm-dashboard-greeting .fm-greeting-sub {
    font-size: 0.88rem;
    color: var(--muted);
    margin: 0;
    line-height: 1.5;
}
.fm-dashboard-greeting .fm-greeting-sub a {
    color: var(--red);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.fm-dashboard-greeting .fm-greeting-sub a:hover {
    opacity: 0.8;
}

/* ===== Dashboard sections (meus projetos / pedidos recentes / meus dados) ===== */
.fm-dash-section {
    /* style.css:429 gives every <section> a clamp(72px, 9vw, 132px) vertical padding, which is a
       page-band rhythm, not an account-column one: without this reset the three sections sit ~260px
       apart inside the content column. */
    padding: 0;
    margin-top: 36px;
}
.fm-dash-section__head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
}
.fm-dash-section__head .fm-content-section-label {
    flex: 1 1 auto;
    min-width: 0;
}
.fm-dash-section__links {
    display: flex;
    align-items: baseline;
    gap: 14px;
    flex: 0 0 auto;
    padding-bottom: 10px;
}
.fm-dash-section__link {
    flex: 0 0 auto;
    font-size: 0.8rem;
    color: var(--red);
    text-decoration: none;
    white-space: nowrap;
    padding-bottom: 10px;
}
.fm-dash-section__link:hover {
    text-decoration: underline;
    text-underline-offset: 2px;
}
.fm-dash-section__links .fm-dash-section__link {
    padding-bottom: 0;
}

/* Projects grid */
/* One row only (Jaime 2026-09-17): three columns = the default limit of three projects
   (fotomania_account_dashboard_projects_limit()); the section link ("ver todos") reaches every
   project. */
.fm-project-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    list-style: none;
    margin: 0;
    padding: 0;
}
@media (max-width: 900px) {
    .fm-project-grid {
        grid-template-columns: repeat(2, 1fr);
    }
    /* Still one row: the first two tiles by position. The hidden projects are reached through the
       "ver todos" link. A grid with no such link (saved_products menu absent, the
       fotomania_accountProductStorage plugin default) carries --no-all-link and keeps every tile,
       or its projects past the second would be unreachable from the dashboard (Gate 0 R1-03). */
    .fm-project-grid:not(.fm-project-grid--no-all-link) > .fm-project-tile:nth-child(n+3) { display: none; }
}
.fm-project-tile {
    display: flex;
    flex-direction: column;
    gap: 6px;
    background: var(--paper);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    padding: 12px;
    transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease;
}
.fm-project-tile:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-ambient);
    border-color: var(--hairline-2);
}
.fm-project-tile__photo {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 1 / 1;
    width: 100%;
    overflow: hidden;
    border-radius: 10px;
    background: var(--surface);
    color: var(--muted);
    margin-bottom: 4px;
}
.fm-project-tile__photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.fm-project-tile__title {
    font-weight: 600;
    font-size: 0.9rem;
    line-height: 1.3;
    color: var(--ink);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.fm-project-tile__meta {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--muted);
}
.fm-project-tile__action {
    margin-top: 2px;
    font-size: 0.78rem;
    color: var(--red);
    text-decoration: none;
}
.fm-project-tile__action:hover {
    text-decoration: underline;
    text-underline-offset: 2px;
}
/* Empty state, shared by the projects and orders sections */
.fm-dash-empty {
    background: var(--paper);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    padding: 28px 20px;
    text-align: center;
}
.fm-dash-empty__title {
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--ink);
    margin: 0 0 6px;
}
.fm-dash-empty__text {
    font-size: 0.85rem;
    color: var(--muted);
    margin: 0 0 16px;
}
.fm-dash-empty .fm-dash-section__link {
    padding-bottom: 0;
}

/* Recent orders */
.fm-order-rows {
    list-style: none;
    margin: 0;
    padding: 0;
    background: var(--paper);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    overflow: hidden;
}
.fm-order-row {
    display: grid;
    grid-template-columns: 56px minmax(0, 1.2fr) minmax(0, 1.2fr) auto auto;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    border-top: 1px solid var(--hairline);
}
.fm-order-row:first-child {
    border-top: 0;
}
.fm-order-row__thumb {
    width: 56px;
    height: 56px;
    border-radius: 8px;
    background: var(--surface);
    overflow: hidden;
    display: block;
}
.fm-order-row__thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.fm-order-row__id {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}
.fm-order-row__number {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.82rem;
    color: var(--ink);
    text-decoration: none;
}
.fm-order-row__number:hover {
    color: var(--red);
}
.fm-order-row__date {
    font-size: 0.75rem;
    color: var(--muted);
}
.fm-order-row__status {
    font-size: 0.82rem;
    color: var(--ink);
    min-width: 0;
}
.fm-order-row .fm-order-lab-exit {
    display: block;
    margin-top: 4px;
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.72rem;
    color: var(--muted);
}
.fm-order-row__total {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--ink);
    text-align: right;
    white-space: nowrap;
}
.fm-order-row__action {
    text-align: right;
}
.fm-order-row__download {
    font-size: 0.8rem;
    color: var(--red);
    text-decoration: none;
    white-space: nowrap;
}
.fm-order-row__download:hover {
    text-decoration: underline;
    text-underline-offset: 2px;
}
@media (max-width: 640px) {
    .fm-order-row {
        grid-template-columns: 56px minmax(0, 1fr) auto;
        grid-template-areas:
            "thumb id total"
            "status status action";
        row-gap: 10px;
        align-items: start;
    }
    .fm-order-row__thumb { grid-area: thumb; }
    .fm-order-row__id { grid-area: id; }
    .fm-order-row__status { grid-area: status; align-self: center; }
    .fm-order-row__total { grid-area: total; }
    .fm-order-row__action { grid-area: action; align-self: center; }
}

/* meus dados */
.fm-data-rows {
    margin: 0;
    padding: 0;
    background: var(--paper);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    overflow: hidden;
}
.fm-data-row {
    display: grid;
    grid-template-columns: 120px minmax(0, 1fr);
    gap: 14px;
    padding: 14px 16px;
    border-top: 1px solid var(--hairline);
}
.fm-data-row:first-child {
    border-top: 0;
}
.fm-data-row dt {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--muted);
    margin: 0;
    padding-top: 2px;
}
.fm-data-row dd {
    margin: 0;
    font-size: 0.88rem;
    color: var(--ink);
    line-height: 1.5;
}
.fm-data-row__empty {
    color: var(--muted);
}
@media (max-width: 640px) {
    .fm-data-row {
        grid-template-columns: 1fr;
        gap: 4px;
    }
}

/* moved from woocommerce/myaccount/my-address.php */
/* ===== Addresses cards ===== */
.fm-addresses-desc {
    font-size: 0.88rem;
    color: var(--muted);
    margin: 0 0 28px;
}

.fm-addresses-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
@media (max-width: 640px) {
    .fm-addresses-grid {
        grid-template-columns: 1fr;
    }
}

.fm-address-card {
    background: var(--paper);
    border: 1px solid var(--hairline);
    border-radius: 14px;
    overflow: hidden;
}
.fm-address-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 18px;
    background: var(--surface);
    border-bottom: 1px solid var(--hairline);
}
.fm-address-card__title {
    font-family: "Geist Mono", ui-monospace, monospace;
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--muted);
    font-weight: 500;
    margin: 0;
}
.fm-address-card__edit {
    font-size: 0.80rem;
    font-weight: 600;
    color: var(--red);
    text-decoration: none;
}
.fm-address-card__edit:hover {
    text-decoration: underline;
}
.fm-address-card address {
    padding: 16px 18px;
    font-style: normal;
    font-size: 0.88rem;
    color: var(--ink);
    line-height: 1.6;
}
.fm-address-card address.fm-no-address {
    color: var(--muted);
    font-style: italic;
}

/* ---- Curtain chrome (envio-nav-2 item 3): the account page while WooCommerce's pre-launch
   curtain is up prints this header/footer instead of the store's (header.php, footer.php,
   fotomania_curtain_account_chrome()). Same grid as the checkout's fm-chk-header; the lockup
   heights follow the landing (coming-soon.php .cs__logo: 40 px, 52 px from 760 px at a stock 16 px
   browser default). ----
   envio-nav-3 item 6: the header and the footer grow with the noir family WITHOUT rescaling the
   light page: each sets font-size: var(--fm-noir-root) on itself (at a stock 16 px browser default:
   16 px up to 1600 wide; a 20 px default starts at 20 px and grows from 2000) and every
   length inside is em. A child's own font-size is em of the header/footer (one level only); every
   other length on an element is em of THAT element's computed size ("sair" at 0.85em, 13.6 px at
   a stock default: its 44 px floor is 44 / 13.6 = 3.2353em, a ratio that holds at any default). The page content (dashboard, Meus envios, privacy
   prose) keeps its root, the visitor's default. */
.fm-curtain-header {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    font-size: var(--fm-noir-root);
    gap: 0.75em;
    min-height: 4.5em;
    padding: 0.5em 1.5em;
    background: var(--paper);
    border-bottom: 1px solid var(--hairline);
}
.fm-curtain-header__back,
.fm-curtain-header__logout {
    display: inline-flex;
    align-items: center;
    min-height: 3.2353em;
    font-size: 0.85em;
    color: var(--muted);
    text-decoration: none;
    transition: color var(--fast, 0.2s) var(--ease-out, ease);
}
.fm-curtain-header__back { justify-self: start; }
.fm-curtain-header__logout { justify-self: end; justify-content: center; min-width: 3.2353em; }
.fm-curtain-header__back:hover,
.fm-curtain-header__logout:hover { color: var(--ink); }
.fm-curtain-header__logo { justify-self: center; display: inline-flex; align-items: center; justify-content: center; min-width: 2.75em; min-height: 2.75em; }
.fm-curtain-header__logo img { display: block; height: 2.5em; width: auto; }
@media (min-width: 760px) {
    .fm-curtain-header__logo img { height: 3.25em; }
}
@media (max-width: 480px) {
    .fm-curtain-header { padding: 0.5em 1em; }
    /* 0.8em (12.8 px at a stock default): the 44 px floor becomes 44 / 12.8 = 3.4375em. */
    .fm-curtain-header__back { font-size: 0.8em; min-height: 3.4375em; }
}
.fm-curtain-footer {
    padding: 1.5em 1em;
    text-align: center;
    font-family: "Geist", sans-serif;
    font-size: var(--fm-noir-root);
    color: var(--muted);
}
/* The footer line keeps its 0.82 of the root (13.12 px at 16 px). */
.fm-curtain-footer p { font-size: 0.82em; }
.fm-curtain-footer a { color: var(--muted); text-decoration: underline; }
.fm-curtain-footer a:hover { color: var(--ink); }
