/* AuctionPage WordPress Plugin Styles
   Uses --ap-* custom properties so nothing conflicts with the host theme.
   Compatible with any WordPress theme, including the bundled NPO theme. */

:root {
    --ap-primary:       #2a7d4f;
    --ap-primary-dark:  #1f5e3a;
    --ap-accent:        #f4a932;
    --ap-secondary:     #1a3a5c;
    --ap-surface:       #ffffff;
    --ap-bg:            #f6f8f5;
    --ap-text:          #222222;
    --ap-muted:         #666666;
    --ap-border:        #e0e0e0;
    --ap-error:         #c0392b;
    --ap-success:       #27ae60;
    --ap-radius:        8px;
    --ap-shadow:        0 2px 12px rgba(0,0,0,.08);
    --ap-font-ui:       'Helvetica Neue', Arial, sans-serif;
}

/* ============================================================
   Listings Grid
   ============================================================ */
.ap-listings-grid {
    display: grid;
    gap: 1.75rem;
    grid-template-columns: repeat(3, 1fr);
}
.ap-listings-grid.ap-cols-2 { grid-template-columns: repeat(2, 1fr); }

.ap-empty,
.ap-error {
    grid-column: 1 / -1;
    text-align: center;
    padding: 3rem 1rem;
    color: var(--ap-muted);
    font-family: var(--ap-font-ui);
    font-size: .95rem;
}
.ap-error { color: var(--ap-error); }

/* ---- Card ---- */
.ap-listing-card {
    background: var(--ap-surface);
    border-radius: var(--ap-radius);
    box-shadow: var(--ap-shadow);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transition: transform .2s, box-shadow .2s;
}
.ap-listing-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(0,0,0,.12);
}

.ap-card-image-link { display: block; }

.ap-card-image {
    width: 100%;
    aspect-ratio: 4/3;
    background-size: cover;
    background-position: center;
    background-color: #eee;
}
.ap-card-image--placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--ap-muted);
    font-family: var(--ap-font-ui);
    font-size: .85rem;
}

.ap-card-body {
    padding: 1.1rem 1.25rem .75rem;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.ap-card-title {
    font-family: var(--ap-font-ui);
    font-size: 1rem;
    font-weight: 700;
    margin: 0;
    line-height: 1.3;
}
.ap-card-title a { color: var(--ap-secondary); text-decoration: none; }
.ap-card-title a:hover { color: var(--ap-primary); }

.ap-card-tags { display: flex; flex-wrap: wrap; gap: .35rem; }

.ap-tag {
    background: #eef5f0;
    color: var(--ap-primary);
    font-family: var(--ap-font-ui);
    font-size: .7rem;
    font-weight: 600;
    padding: .15rem .5rem;
    border-radius: 20px;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.ap-card-bid { margin-top: auto; }
.ap-card-bid-label {
    font-family: var(--ap-font-ui);
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--ap-muted);
}
.ap-card-bid-amount {
    font-family: var(--ap-font-ui);
    font-size: 1.4rem;
    font-weight: 800;
    color: var(--ap-secondary);
    line-height: 1.1;
}
.ap-card-bid-count {
    font-family: var(--ap-font-ui);
    font-size: .8rem;
    color: var(--ap-muted);
}

.ap-card-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: .5rem;
    padding-top: .6rem;
    border-top: 1px solid var(--ap-border);
}

.ap-badge {
    font-family: var(--ap-font-ui);
    font-size: .7rem;
    font-weight: 700;
    padding: .2rem .55rem;
    border-radius: 20px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.ap-badge--active  { background: #e3f5eb; color: var(--ap-primary); }
.ap-badge--ended   { background: #f0f0f0; color: #888; }
.ap-badge--pending { background: #fff8e1; color: #b06000; }

.ap-card-countdown,
.ap-countdown {
    font-family: var(--ap-font-ui);
    font-size: .85rem;
    font-weight: 600;
    color: var(--ap-secondary);
}
.ap-countdown--urgent  { color: var(--ap-error); }
.ap-countdown--ended   { color: var(--ap-muted); }

.ap-card-cta {
    display: block;
    margin: 0 1.25rem 1.25rem;
    text-align: center;
}

/* ============================================================
   Single listing
   ============================================================ */
.ap-single-listing {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem 3rem;
    max-width: 1000px;
    margin: 0 auto;
}
.ap-listing-images  { grid-column: 1; grid-row: 1; }
.ap-listing-details { grid-column: 2; grid-row: 1; }
.ap-listing-description { grid-column: 1; }
.ap-bid-history         { grid-column: 2; }

.ap-listing-main-image {
    width: 100%;
    border-radius: var(--ap-radius);
    object-fit: cover;
    aspect-ratio: 4/3;
}

.ap-listing-thumbs {
    display: flex;
    gap: .5rem;
    margin-top: .6rem;
    flex-wrap: wrap;
}
.ap-listing-thumb {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: 4px;
    border: 2px solid transparent;
    cursor: pointer;
    transition: border-color .15s;
}
.ap-listing-thumb--active,
.ap-listing-thumb:hover { border-color: var(--ap-primary); }

.ap-listing-title {
    font-family: var(--ap-font-ui);
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--ap-secondary);
    margin: 0 0 .75rem;
    line-height: 1.2;
}

.ap-listing-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1rem; }

/* ---- Live bid block ---- */
.ap-live-bid-block {
    background: var(--ap-bg);
    border-radius: var(--ap-radius);
    padding: 1.1rem 1.25rem;
    margin-bottom: 1.5rem;
}
.ap-live-row {
    display: flex;
    gap: 1.5rem;
    flex-wrap: wrap;
}
.ap-live-item { display: flex; flex-direction: column; gap: .15rem; }
.ap-live-label {
    font-family: var(--ap-font-ui);
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--ap-muted);
}
.ap-current-bid {
    font-family: var(--ap-font-ui);
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--ap-secondary);
    line-height: 1;
}
.ap-no-bids { font-size: 1rem; font-weight: 600; color: var(--ap-muted); }
.ap-bid-count {
    font-family: var(--ap-font-ui);
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--ap-secondary);
}
.ap-single-listing .ap-countdown {
    font-family: var(--ap-font-ui);
    font-size: 1.3rem;
    font-weight: 700;
}

/* Flash animation on new bid */
@keyframes ap-flash-green {
    0%   { background: #c8f5da; }
    100% { background: transparent; }
}
.ap-flash { animation: ap-flash-green .9s ease-out; }

/* ---- Bid form ---- */
.ap-bid-section { margin-bottom: 1.25rem; }

.ap-bid-form { display: flex; flex-direction: column; gap: .6rem; }

.ap-bid-min-hint {
    font-family: var(--ap-font-ui);
    font-size: .85rem;
    color: var(--ap-muted);
    margin: 0;
}
.ap-min-bid-display { color: var(--ap-secondary); }

.ap-bid-input-row {
    display: flex;
    gap: .6rem;
    align-items: stretch;
}
.ap-input-prefix-wrap {
    display: flex;
    align-items: center;
    border: 2px solid var(--ap-border);
    border-radius: var(--ap-radius);
    overflow: hidden;
    flex: 1;
    background: var(--ap-surface);
    transition: border-color .15s;
}
.ap-input-prefix-wrap:focus-within { border-color: var(--ap-primary); }
.ap-currency {
    padding: 0 .6rem;
    font-family: var(--ap-font-ui);
    font-weight: 700;
    color: var(--ap-muted);
    user-select: none;
}
.ap-bid-input,
.ap-proxy-input {
    border: none;
    outline: none;
    padding: .65rem .5rem .65rem 0;
    font-family: var(--ap-font-ui);
    font-size: 1rem;
    width: 100%;
    background: transparent;
    color: var(--ap-text);
}
/* Hide browser spin buttons */
.ap-bid-input::-webkit-outer-spin-button,
.ap-bid-input::-webkit-inner-spin-button,
.ap-proxy-input::-webkit-outer-spin-button,
.ap-proxy-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ap-bid-input[type=number],
.ap-proxy-input[type=number] { -moz-appearance: textfield; }

.ap-proxy-section {
    font-family: var(--ap-font-ui);
    font-size: .9rem;
}
.ap-proxy-section summary { cursor: pointer; color: var(--ap-primary); user-select: none; }
.ap-proxy-body {
    border: 1px solid var(--ap-border);
    border-radius: var(--ap-radius);
    padding: 1rem;
    margin-top: .5rem;
    background: var(--ap-bg);
    display: flex;
    flex-direction: column;
    gap: .6rem;
}
.ap-proxy-desc { font-size: .8rem; color: var(--ap-muted); margin: 0; }

.ap-bid-notice {
    padding: .6rem .85rem;
    border-radius: var(--ap-radius);
    font-family: var(--ap-font-ui);
    font-size: .875rem;
}
.ap-bid-notice--success { background: #e3f5eb; color: #1e6e3c; }
.ap-bid-notice--error   { background: #fdecea; color: var(--ap-error); }
.ap-bid-notice--info    { background: #e8f0fe; color: #1a56b0; }

.ap-bid-auth-prompt {
    font-family: var(--ap-font-ui);
    font-size: .9rem;
    color: var(--ap-muted);
    background: var(--ap-bg);
    border-radius: var(--ap-radius);
    padding: 1rem;
    text-align: center;
}
.ap-bid-auth-prompt a { color: var(--ap-primary); font-weight: 600; }

.ap-shipping-info {
    font-family: var(--ap-font-ui);
    font-size: .9rem;
    color: var(--ap-muted);
    margin-top: 1rem;
}
.ap-shipping-info p { margin: 0; }

/* ---- Description ---- */
.ap-listing-description h2,
.ap-bid-history h2 {
    font-family: var(--ap-font-ui);
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--ap-secondary);
    margin: 0 0 .75rem;
    padding-bottom: .5rem;
    border-bottom: 2px solid var(--ap-border);
}
.ap-description-body {
    font-size: .95rem;
    line-height: 1.7;
    color: var(--ap-text);
}

/* ---- Bid history ---- */
.ap-bids-table {
    width: 100%;
    border-collapse: collapse;
    font-family: var(--ap-font-ui);
    font-size: .875rem;
}
.ap-bids-table th {
    text-align: left;
    padding: .4rem .6rem;
    background: var(--ap-bg);
    color: var(--ap-muted);
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    border-bottom: 1px solid var(--ap-border);
}
.ap-bids-table td {
    padding: .5rem .6rem;
    border-bottom: 1px solid var(--ap-border);
    color: var(--ap-text);
}
.ap-bids-table tr:last-child td { border-bottom: none; }

@keyframes ap-highlight-row {
    0%   { background: #c8f5da; }
    100% { background: transparent; }
}
.ap-bid-row--new td { animation: ap-highlight-row 1.5s ease-out; }

/* ============================================================
   Buttons
   ============================================================ */
.ap-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .65rem 1.4rem;
    border: none;
    border-radius: var(--ap-radius);
    font-family: var(--ap-font-ui);
    font-size: .95rem;
    font-weight: 700;
    cursor: pointer;
    text-decoration: none;
    transition: background .15s, transform .1s, opacity .15s;
    line-height: 1;
}
.ap-btn:hover { text-decoration: none; transform: translateY(-1px); }
.ap-btn:active { transform: translateY(0); }
.ap-btn:disabled { opacity: .55; cursor: not-allowed; transform: none; }

.ap-btn-primary   { background: var(--ap-primary); color: #fff; }
.ap-btn-primary:hover { background: var(--ap-primary-dark); color: #fff; }

.ap-btn-secondary { background: transparent; color: var(--ap-primary); border: 2px solid var(--ap-primary); padding: .55rem 1.3rem; }
.ap-btn-secondary:hover { background: var(--ap-primary); color: #fff; }

.ap-btn-full  { width: 100%; }
.ap-btn-small { padding: .35rem .85rem; font-size: .8rem; }

/* ============================================================
   Modal
   ============================================================ */
.ap-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.55);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
body.ap-modal-open { overflow: hidden; }

.ap-modal {
    background: var(--ap-surface);
    border-radius: calc(var(--ap-radius) * 1.5);
    width: 100%;
    max-width: 420px;
    padding: 2rem;
    position: relative;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    animation: ap-modal-in .2s ease-out;
}
@keyframes ap-modal-in {
    from { opacity: 0; transform: scale(.94) translateY(8px); }
    to   { opacity: 1; transform: scale(1) translateY(0); }
}
.ap-modal-close {
    position: absolute;
    top: .85rem;
    right: .85rem;
    background: none;
    border: none;
    font-size: 1.4rem;
    line-height: 1;
    color: var(--ap-muted);
    cursor: pointer;
    padding: .2rem .4rem;
    border-radius: 4px;
}
.ap-modal-close:hover { background: var(--ap-bg); color: var(--ap-text); }

.ap-auth-tabs {
    display: flex;
    gap: 0;
    margin-bottom: 1.5rem;
    border-bottom: 2px solid var(--ap-border);
}
.ap-auth-tab {
    flex: 1;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    padding: .6rem 0;
    font-family: var(--ap-font-ui);
    font-size: .9rem;
    font-weight: 600;
    color: var(--ap-muted);
    cursor: pointer;
    transition: color .15s, border-color .15s;
}
.ap-auth-tab--active { color: var(--ap-primary); border-bottom-color: var(--ap-primary); }

.ap-auth-heading {
    font-family: var(--ap-font-ui);
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--ap-secondary);
    margin: 0 0 1.25rem;
}

.ap-form-group {
    display: flex;
    flex-direction: column;
    gap: .3rem;
    margin-bottom: .9rem;
}
.ap-form-group label {
    font-family: var(--ap-font-ui);
    font-size: .82rem;
    font-weight: 600;
    color: var(--ap-secondary);
}
.ap-form-group input {
    padding: .6rem .85rem;
    border: 1.5px solid var(--ap-border);
    border-radius: var(--ap-radius);
    font-family: var(--ap-font-ui);
    font-size: .95rem;
    color: var(--ap-text);
    background: var(--ap-surface);
    transition: border-color .15s;
    width: 100%;
    box-sizing: border-box;
}
.ap-form-group input:focus { outline: none; border-color: var(--ap-primary); }
.ap-form-group small { font-family: var(--ap-font-ui); font-size: .75rem; color: var(--ap-muted); }

.ap-form-notice {
    padding: .55rem .85rem;
    border-radius: var(--ap-radius);
    font-family: var(--ap-font-ui);
    font-size: .85rem;
    margin-bottom: .85rem;
}
.ap-form-notice--error   { background: #fdecea; color: var(--ap-error); }
.ap-form-notice--success { background: #e3f5eb; color: #1e6e3c; }

/* ============================================================
   Account widget
   ============================================================ */
.ap-account-widget {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    font-family: var(--ap-font-ui);
}
.ap-account-name {
    font-size: .9rem;
    font-weight: 600;
    color: var(--ap-secondary);
}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width: 900px) {
    .ap-listings-grid          { grid-template-columns: repeat(2, 1fr); }
    .ap-single-listing         { grid-template-columns: 1fr; }
    .ap-listing-images,
    .ap-listing-details,
    .ap-listing-description,
    .ap-bid-history            { grid-column: 1; grid-row: auto; }
}
@media (max-width: 540px) {
    .ap-listings-grid { grid-template-columns: 1fr; }
    .ap-bid-input-row { flex-direction: column; }
    .ap-bid-submit    { width: 100%; }
    .ap-live-row      { gap: 1rem; }
}
