/* === Hide WooCommerce default variation UI when seat grid is active === */
form.cart:has(.ticket-dashboard) table.variations,
form.cart:has(.ticket-dashboard) .woocommerce-variation.single_variation,
form.cart:has(.ticket-dashboard) .single_variation_wrap div.quantity,
form.cart:has(.ticket-dashboard) .single_variation_wrap .single_add_to_cart_button,
form.cart:has(.ticket-dashboard) .single_variation_wrap button.single_add_to_cart_button,
form.cart:has(.ticket-dashboard) > .quantity,
form.cart:has(.ticket-dashboard) > .single_add_to_cart_button,
form.cart:has(.ticket-dashboard) > button.single_add_to_cart_button,
form.cart:has(.ticket-dashboard) .woocommerce-variation-add-to-cart .quantity,
form.cart:has(.ticket-dashboard) .woocommerce-variation-add-to-cart button.single_add_to_cart_button {
    display: none !important;
}

.clear{clear:both;}
.ticket-dashboard {
    background: #eee;
    padding: 0;
	border:1px solid #eee;
    width: 100%;
}
.ticket-dashboard button.tbtn-button.button {
    color: #fff;
    background-color: #bf8864;
    padding: 12px 35px;
}
#generate-random{
    color: #fff;
    background-color: #bf8864;
}
.ticket-dashboard .ticket-wrapper {
    padding: 0.5rem 0.5rem 0;
}
ul.my-tickets{
	margin: 0 0 1rem;
    padding: 0;
    list-style: none;
    width: 100%;
    text-align: center;
	position:relative;
}
ul.my-tickets li{
	width: 32px;
    height: 32px;
    text-align: center;
    vertical-align: middle;
    display: inline-block;
    background: rgba(0,0,0,0);
    margin: 0 0 7px 0;
	position:relative;
}
ul.my-tickets li label{
	position:relative;
	display:block;
}
ul.my-tickets li span{
    text-decoration: none;
    font-size: 10px;
    line-height: 32px;
    vertical-align: middle;
	position: absolute;
	top:0;
    left: 0;
    right: 0;
	color:#fff;
	outline:none;
	cursor:pointer;
	background-image: url(seat-white.png);
    background-size: cover;
	
}
.ticket-dashboard h4 {
    text-transform: uppercase;
    font-size: 1rem;
    text-align: left;
    margin: 0 0 .5rem;
	float:left;
	width:50%;
}
.ticket-dashboard .seat-available{
	text-transform: uppercase;
    font-size: 1rem;
    text-align: right;
    margin: 0 0 .5rem;
	float:left;
	width:50%;
}
.ticket-dashboard h4 strong{
	margin-left:1rem;
	color:#999;
}

.single-product form.cart .ticket-dashboard .ticket-box{
	width:100%;
	border:none;
	-webkit-appearance: none;
    -moz-appearance: none;
	appearance: none;
    position: relative;
}
.single-product form.cart .ticket-dashboard .ticket-box:after{display:none;}
.ticket-dashboard input[type=checkbox]:focus{
	outline:none;
}
.ticket-dashboard input[type=checkbox]:checked+span {
    color:#fff;
	outline-color:#0f5132;
	background-image: url(seat-green.png);
}
/*.ticket-dashboard input[type=checkbox]:disabled+span {
    color: #000;
    outline-color: #999;
    background-image: url(seat-gray.png);
	cursor:not-allowed;
}*/

/* === Reserved seat (temporary hold) === */
.ticket-dashboard input[type=checkbox].rbtn-tt-temp:disabled + span {
    color: #fff;
    outline-color: #999;
    background-image: url(seat-green.png);
    cursor: not-allowed;
}

/* === Taken seat (permanently booked) === */
.ticket-dashboard input[type=checkbox].rbtn-tt-perma:disabled + span {
    color: #fff;
    outline-color: #999;
    background-image: url(seat-gray.png);
    cursor: not-allowed;
}

.ticket-dashboard .proceed-cart-info{
    width: 100%;
    background: #fff;
    padding: .5rem;
    transition: 0.5s all;
	z-index:999;
}
.ticket-dashboard .proceed-cart-info ul{
	list-style:none;
	text-align:center;
	margin:0;
	padding:0;
}
.ticket-dashboard .proceed-cart-info ul li{
	display:inline-block;
	margin:0 0.5rem;
	font-size:1rem;
}
.ticket-dashboard span.tbtn{
	width: 24px;
    height: 24px;
    display: inline-block;
    vertical-align: middle;
    color: #6faa5a;
    outline: 2px solid #2f4826;
    cursor: pointer;
    background-color: #6faa5a;
}
.ticket-dashboard span.tbtn-sold{
    color: #861919;
    outline-color: #4b0e0e;
    background-color: #b62323;
}
.ticket-dashboard span.tbtn-selected{
    color: #69563f;
    outline-color: #69563f;
    background-color: #f5c392;
}

.ticket-dashboard .proceed-cart {
	display: none;
    width: 100%;
    background: #fff;
    padding: 0.5rem 0;
    transition: 0.5s all;
    text-align: center;
}
.ticket-dashboard .tbtn-button{
	float:none !important;
}
.ticket-dashboard .prc-qty{
	font-size:1rem;
	margin: 0 0 .5rem;
	
}
.list-ticket-avialble{color:#5d5d5d}
.list-ticket-avialble span{
	text-transform:capitalize;
	color:#333;
}
.ticket-dashboard input[type=checkbox].wait+span{
	opacity:0.8;
}
.ticket-dashboard input[type=checkbox].wait+span:after{
	content: "";
    width: 80%;
    height: 80%;
    background: url(loader.gif) no-repeat;
    position: absolute;
    left: 10%;
    top: 10%;
    z-index: 100;
    background-size: 100%;
}
.availabilitycheck-msg {
    text-align: center;
    background: pink;
    color: red;
    padding: 5px 15px;
	display:none;
}

/* === Vote Buttons (Catalog + Product Page) === */
.twwt-vote-wrap {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 6px 0 0;
    justify-content: center;
    width: 100%;
}
.twwt-thumb-btn {
    background: none;
    border: 1px solid #ddd;
    border-radius: 4px;
    cursor: pointer;
    padding: 4px 8px;
    font-size: 18px;
    line-height: 1;
    transition: background 0.2s, transform 0.15s, border-color 0.2s;
}
.twwt-thumb-btn:hover {
    transform: scale(1.1);
    border-color: #999;
}
.twwt-thumb-up.twwt-thumb-active {
    background: #e8f5e9;
    border-color: #4caf50;
}
.twwt-thumb-down.twwt-thumb-active {
    background: #fbe9e7;
    border-color: #e53935;
}
.twwt-thumb-count {
    font-size: 13px;
    color: #666;
    font-weight: 600;
    min-width: 12px;
}

/* === Feedback Section (Single Product Page) === */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap');

.twwt-feedback-section {
    clear: both;
    font-family: 'DM Sans', 'Helvetica Neue', sans-serif;
    max-width: 560px;
    width: 100%;
    margin: 24px auto 30px;
    padding: 0;
    background: #fff;
    border-radius: 20px;
    border: 1px solid #e7e5e4;
    overflow: hidden;
    box-shadow: 0 4px 24px rgba(0,0,0,0.04);
}

/* -- Voting Section (top half) -- */
.twwt-voting-section {
    padding: 28px 28px 24px;
    border-bottom: 1px solid #f5f5f4;
}
.twwt-voting-title {
    font-size: 15px;
    font-weight: 600;
    color: #1c1917;
    margin: 0 0 6px;
}
.twwt-voting-subtitle {
    font-size: 13px;
    color: #a8a29e;
    margin: 0 0 18px;
}
.twwt-feedback-section .twwt-thumbs-wrap {
    display: flex;
    gap: 12px;
    justify-content: flex-start;
    align-items: center;
    margin-bottom: 0;
}

/* Vote buttons inside the feedback card */
.twwt-feedback-section .twwt-thumb-btn {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 22px;
    border-radius: 14px;
    border: 2px solid #e7e5e4;
    background: #fff;
    cursor: pointer;
    font-size: 14px;
    line-height: 1.4;
    transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: none;
}
.twwt-feedback-section .twwt-thumb-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    background: #fafaf9;
    border-color: #e7e5e4;
}
.twwt-feedback-section .twwt-thumb-btn:active {
    transform: scale(0.97);
}
.twwt-feedback-section .twwt-thumb-up.twwt-thumb-active {
    border-color: #10b981;
    background: #ecfdf5;
    box-shadow: 0 4px 12px rgba(16,185,129,0.15);
}
.twwt-feedback-section .twwt-thumb-down.twwt-thumb-active {
    border-color: #ef4444;
    background: #fef2f2;
    box-shadow: 0 4px 12px rgba(239,68,68,0.15);
}

/* Emoji inside vote button */
.twwt-thumb-emoji {
    font-size: 22px;
    line-height: 1;
    transition: transform 0.3s;
}
.twwt-thumb-active .twwt-thumb-emoji {
    transform: scale(1.2);
}

/* Count inside vote button */
.twwt-feedback-section .twwt-thumb-count {
    font-size: 16px;
    font-weight: 600;
    color: #57534e;
}
.twwt-feedback-section .twwt-thumb-up.twwt-thumb-active .twwt-thumb-count {
    color: #059669;
}
.twwt-feedback-section .twwt-thumb-down.twwt-thumb-active .twwt-thumb-count {
    color: #dc2626;
}

/* Label inside vote button */
.twwt-feedback-section .twwt-thumb-label {
    font-size: 12px;
    color: #a8a29e;
    font-weight: 500;
}

/* -- Suggestion Section (bottom half) -- */
.twwt-suggestion-section {
    padding: 24px 28px 28px;
}
.twwt-suggestion-title {
    font-size: 15px;
    font-weight: 600;
    color: #1c1917;
    margin: 0 0 4px;
}
.twwt-suggestion-subtitle {
    font-size: 13px;
    color: #a8a29e;
    margin: 0 0 16px;
}
.twwt-suggestion-input-wrap {
    display: flex;
    gap: 10px;
}
.twwt-suggestion-input {
    flex: 1;
    padding: 12px 16px;
    border-radius: 14px;
    border: 2px solid #e7e5e4;
    font-size: 14px;
    color: #1c1917;
    background: #fafaf9;
    outline: none;
    transition: border-color 0.2s, background 0.2s;
    box-sizing: border-box;
    font-family: 'DM Sans', sans-serif;
}
.twwt-suggestion-input::placeholder {
    color: #a8a29e;
}
.twwt-suggestion-input:focus {
    border-color: #a8a29e;
    background: #fff;
}
.twwt-suggestion-submit {
    padding: 12px 24px;
    background: linear-gradient(135deg, #292524, #1c1917);
    color: #fff;
    border: none;
    border-radius: 14px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.3s;
    box-shadow: 0 2px 8px rgba(0,0,0,0.12);
    white-space: nowrap;
    min-width: 100px;
    font-family: 'DM Sans', sans-serif;
}
.twwt-suggestion-submit:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.18);
}
.twwt-suggestion-submit:active {
    transform: scale(0.97);
}
.twwt-suggestion-submit.twwt-submit-success {
    background: linear-gradient(135deg, #10b981, #059669);
}
.twwt-suggestion-msg {
    display: block;
    font-size: 13px;
    margin-top: 8px;
    min-height: 18px;
    font-family: 'DM Sans', sans-serif;
}
.twwt-suggestion-msg.twwt-msg-success { color: #059669; }
.twwt-suggestion-msg.twwt-msg-error   { color: #dc2626; }

/* === Login Prompt (inline, for logged-out users) === */
.twwt-login-prompt {
    margin-top: 16px;
    padding: 12px 16px;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 14px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.twwt-login-prompt-text {
    font-size: 14px;
    color: #92400e;
}
.twwt-login-prompt-btn {
    display: inline-block;
    padding: 8px 18px;
    font-size: 14px;
    font-weight: 600;
    background: linear-gradient(135deg, #292524, #1c1917);
    color: #fff !important;
    border-radius: 14px;
    text-decoration: none !important;
    transition: all 0.2s;
    box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}
.twwt-login-prompt-btn:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.18);
}
/* Compact version for catalog cards */
.twwt-vote-wrap .twwt-login-prompt {
    width: 100%;
    margin-top: 8px;
    padding: 8px 10px;
    font-size: 12px;
    justify-content: center;
}
.twwt-vote-wrap .twwt-login-prompt-text { font-size: 12px; }
.twwt-vote-wrap .twwt-login-prompt-btn { padding: 4px 12px; font-size: 12px; }

/* === Dark Theme Compatibility === */
.ticket-dashboard h4,
.ticket-dashboard .seat-available,
.ticket-dashboard .prc-qty,
.ticket-dashboard .prc-type {
    color: #222 !important;
}
.ticket-dashboard h4 strong {
    color: #555 !important;
}
.proceed-cart-info ul li {
    color: #333 !important;
}
.twwt-voting-title,
.twwt-suggestion-title {
    color: #1c1917 !important;
}
.twwt-voting-subtitle,
.twwt-suggestion-subtitle {
    color: #78716c !important;
}

/* === Random Seat Generator Input (dark theme safe) === */
.ticket-dashboard .randomGenerator input[type=number],
.ticket-dashboard #random-generator,
.randomGenerator input[type=number],
#random-generator {
    background-color: #ffffff !important;
    color: #1c1917 !important;
    border: 1px solid #ccc !important;
}
.ticket-dashboard .randomGenerator input[type=number]::placeholder,
.ticket-dashboard #random-generator::placeholder,
.randomGenerator input[type=number]::placeholder,
#random-generator::placeholder {
    color: #78716c !important;
    opacity: 1 !important;
}
.ticket-dashboard .randomGenerator input[type=number]::-webkit-input-placeholder,
.ticket-dashboard #random-generator::-webkit-input-placeholder,
.randomGenerator input[type=number]::-webkit-input-placeholder,
#random-generator::-webkit-input-placeholder {
    color: #78716c !important;
}
.ticket-dashboard .randomGenerator input[type=number]::-moz-placeholder,
.ticket-dashboard #random-generator::-moz-placeholder,
.randomGenerator input[type=number]::-moz-placeholder,
#random-generator::-moz-placeholder {
    color: #78716c !important;
    opacity: 1 !important;
}

/* === Login Required Button (for sites with login_restrict enabled) === */
.twwt-login-required-btn {
    display: inline-block !important;
    padding: 14px 28px !important;
    margin: 10px 0 !important;
    background: #bf8864 !important;
    color: #ffffff !important;
    text-decoration: none !important;
    border-radius: 6px !important;
    font-weight: 600 !important;
    text-align: center !important;
    min-width: 240px !important;
}
.twwt-login-required-btn:hover {
    background: #a6714f !important;
    color: #ffffff !important;
}

/* === Winner Drawing Page (dark theme safe) === */
.twwt-winner-wrap,
.twwt-winner-wrap * {
    box-sizing: border-box;
}
.twwt-winner-wrap {
    background: #ffffff !important;
    color: #1c1917 !important;
}
.twwt-winner-wrap .twwt-winner-title,
.twwt-winner-wrap .twwt-winner-col h4,
.twwt-winner-wrap .twwt-winner-table th,
.twwt-winner-wrap .twwt-winner-table td {
    color: #1c1917 !important;
}
.twwt-winner-wrap .twwt-winner-table tbody tr td {
    background: #ffffff !important;
}
.twwt-winner-wrap .twwt-winner-table tbody tr:nth-child(even) td {
    background: #fafafa !important;
}
/* Bug 2 (report 2026-07-15): keep the attendee table inside its flex column so a
   long, unbreakable Name value cannot stretch the table under the RNG iframe. */
.twwt-winner-wrap .twwt-winner-table {
    table-layout: fixed;
    max-width: 100%;
}
.twwt-winner-wrap .twwt-winner-table th,
.twwt-winner-wrap .twwt-winner-table td {
    overflow-wrap: break-word;
    word-break: break-word;
}
/* Bug 3 (report 2026-07-15): on a sold-out card that also has a winner drawn, Astra's
   "Sold Out" badge (position:absolute; left:1em; right:1em; bottom:1em — anchored to the
   thumbnail <a>, which ALSO contains our "Winner drawn" <p>) stretches down over that
   label, so the two collide. Adding margin/padding to the label only grows the <a> and
   the badge with it. Fix: reposition the badge to a compact top-left ribbon ON the image
   so both labels are separated and fully readable. !important is required to beat Astra's
   (0,4,2) selector. The class is Astra-only, so this rule is inert on other fleet themes. */
li.twwt-winner-drawn .ast-shop-product-out-of-stock {
    top: 12px !important;
    bottom: auto !important;
    left: 12px !important;
    right: auto !important;
    width: auto !important;
    padding: 4px 10px !important;
    line-height: 1.2 !important;
}

/* ============================================================================
   SEAT-MAP / HYBRID LAYOUT VARIANT  (opt-in; Classic layout unaffected)
   A presentation skin over the same .ticket-box inputs. All rules scoped under
   .twwt-seatmap-variant / .twwt-seatmap-card so none of it touches Classic.
   ============================================================================ */
.twwt-seatmap-variant.ticket-dashboard{
    --sm-card:#111827; --sm-map:#0a0f1a; --sm-text:#d1d5db; --sm-muted:#9ca3af;
    --sm-accent:#dc2626; --sm-accent-hover:#b91c1c;
    --sm-avail-bg:#e6f5ec; --sm-avail-fg:#1a7a3c;
    --sm-booked-bg:#2b2b2b; --sm-booked-fg:#8a8f98; --sm-booked-bd:#444;
    --sm-held-bg:#c0c0c0; --sm-held-fg:#3a3a3a; --sm-held-bd:#a8a8a8;
    --sm-sel-bg:#dc2626; --sm-sel-fg:#ffffff;
    background:transparent!important; border:0!important; padding:0; color:var(--sm-text); font-family:inherit;
}
.twwt-seatmap-variant *{box-sizing:border-box;}

/* Stat tiles */
.twwt-seatmap-variant .twwt-sm-tiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:10px; margin:0 0 12px;}
.twwt-sm-tile{background:var(--sm-card); border:1px solid rgba(255,255,255,.06); border-radius:10px; padding:12px 14px; display:flex; flex-direction:column; gap:4px;}
.twwt-sm-tile__label{font-size:.72rem; letter-spacing:.06em; text-transform:uppercase; color:var(--sm-muted);}
.twwt-sm-tile__value{font-size:1.15rem; font-weight:700; color:#fff;}
.twwt-sm-tile--left .twwt-sm-tile__value{color:var(--sm-accent);}

/* Progress bar */
.twwt-seatmap-variant .twwt-sm-progress{height:8px; background:#1f2937; border-radius:999px; overflow:hidden; margin:0 0 4px;}
.twwt-seatmap-variant .twwt-sm-progress__fill{height:100%; background:linear-gradient(90deg,var(--sm-accent),#f87171); border-radius:999px;}
.twwt-seatmap-variant .twwt-sm-progress__label{font-size:.8rem; color:var(--sm-muted); margin:0 0 12px;}

/* Card */
.twwt-seatmap-card{background:var(--sm-card); border:1px solid rgba(255,255,255,.06); border-radius:16px; padding:20px 22px; color:var(--sm-text);}
.twwt-seatmap-card__title{color:var(--sm-accent); font-size:1.6rem; margin:0 0 4px; text-transform:none; text-align:left; float:none; width:auto;}
.twwt-seatmap-card__meta{margin:0 0 16px; color:var(--sm-muted); font-size:.95rem;}
.twwt-seatmap-card__meta .twwt-sm-price,.twwt-seatmap-card__meta .twwt-sm-price *{color:#fff!important; font-weight:700;}
.twwt-sm-dot{margin:0 4px; color:#6b7280;}
.twwt-sm-remaining{color:#f87171; font-weight:600;}

/* Pick-for-me */
.twwt-sm-pickrow{display:flex; gap:10px; margin:0 0 14px;}
.twwt-sm-pickrow .twwt-sm-pickqty{flex:1; background:#0b1220; border:1px solid #243044; color:#fff; border-radius:8px; padding:10px 14px; font-size:1rem; max-width:100%;}
.twwt-sm-pickrow .twwt-sm-pickbtn{background:#1f2937; color:#fff; border:1px solid #374151; border-radius:8px; padding:10px 18px; font-weight:700; text-transform:uppercase; letter-spacing:.03em; cursor:pointer;}
.twwt-sm-pickrow .twwt-sm-pickbtn:hover{background:#374151;}

/* Legend chips */
.twwt-sm-legend{display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px;}
.twwt-sm-chip{display:inline-flex; align-items:center; padding:5px 12px; border-radius:999px; font-size:.82rem; font-weight:600; border:1.5px solid transparent;}
.twwt-sm-chip--available{background:var(--sm-avail-bg); color:var(--sm-avail-fg); border-color:var(--sm-avail-fg);}
.twwt-sm-chip--held{background:var(--sm-held-bg); color:var(--sm-held-fg);}
.twwt-sm-chip--booked{background:var(--sm-booked-bg); color:var(--sm-booked-fg); border-color:var(--sm-booked-bd);}
.twwt-sm-chip--selected{background:var(--sm-sel-bg); color:var(--sm-sel-fg);}

/* Map wrap + variation head */
.twwt-seatmap-card .twwt-seatmap-wrap{background:var(--sm-map); border-radius:10px; padding:16px; margin:0;}
.twwt-sm-variation{padding:0; margin:0 0 14px;}
.twwt-sm-variation:last-child{margin-bottom:0;}
.twwt-sm-variation__head{display:flex; justify-content:space-between; align-items:baseline; gap:10px; margin:0 0 10px; flex-wrap:wrap;}
.twwt-sm-variation__name{color:#fff; font-weight:700; text-transform:uppercase; font-size:.95rem;}
.twwt-seatmap-variant .twwt-sm-variation__head .seat-available{color:var(--sm-muted); font-size:.85rem; float:none; width:auto; text-align:right; text-transform:none; margin:0;}

/* Grid */
.twwt-seatmap-card ul.my-tickets.twwt-seatmap{display:grid; grid-template-columns:repeat(auto-fill,minmax(42px,1fr)); gap:6px; margin:0; padding:0; text-align:left; width:100%;}
.twwt-seatmap-card ul.my-tickets.twwt-seatmap li{width:auto; height:auto; display:block; margin:0; aspect-ratio:1/1; position:relative;}
.twwt-seatmap-card ul.my-tickets.twwt-seatmap li label{position:relative; display:block; width:100%; height:100%; margin:0;}

/* input overlay (compound .ticket-dashboard.twwt-seatmap-variant beats Classic 0-0-4-1) */
.single-product form.cart .ticket-dashboard.twwt-seatmap-variant .ticket-box{position:absolute; inset:0; width:100%; height:100%; margin:0; padding:0; opacity:0; cursor:pointer; z-index:2;}
.single-product form.cart .ticket-dashboard.twwt-seatmap-variant .ticket-box:disabled{cursor:not-allowed;}

/* cell face + states */
.twwt-seatmap-card .twwt-seatcell-face{position:absolute; inset:0; z-index:1; pointer-events:none; display:flex; align-items:center; justify-content:center; border-radius:8px; border:2px solid var(--sm-avail-fg); background:var(--sm-avail-bg); color:var(--sm-avail-fg); font-size:.8rem; font-weight:700; transition:.12s all; overflow:hidden;}
.twwt-seatcell-num{line-height:1;}
.twwt-seatcell-glyph{width:56%; height:56%; background-repeat:no-repeat; background-position:center; background-size:contain; position:absolute; opacity:.55;}
.twwt-seatmap-hybrid .twwt-seatcell-num{position:relative; z-index:1; font-size:.66rem; align-self:flex-end; margin:0 0 2px; padding:0 3px; border-radius:4px; background:rgba(0,0,0,.28); color:#fff;}
.twwt-seatmap-card .ticket-box:checked + .twwt-seatcell-face{background:var(--sm-sel-bg); border-color:var(--sm-sel-bg); color:var(--sm-sel-fg);}
.twwt-seatmap-card .ticket-box.rbtn-tt-temp:disabled + .twwt-seatcell-face{background:var(--sm-held-bg); border-color:var(--sm-held-bd); color:var(--sm-held-fg);}
.twwt-seatmap-card .ticket-box.rbtn-tt-perma:disabled + .twwt-seatcell-face{background:var(--sm-booked-bg); border-color:var(--sm-booked-bd); color:var(--sm-booked-fg);}
.twwt-seatmap-card .ticket-box.wait + .twwt-seatcell-face{opacity:.6;}

/* footer */
.twwt-sm-footer{display:flex; justify-content:space-between; align-items:flex-end; gap:16px; margin:16px 0 0; flex-wrap:wrap;}
.twwt-sm-footer__left{display:flex; flex-direction:column; gap:2px;}
.twwt-sm-hint{color:var(--sm-muted); font-size:.85rem;}
.twwt-sm-total{color:#fff; font-size:1.6rem; font-weight:800;}
.twwt-sm-footer__right{display:flex; flex-direction:column; align-items:flex-end; gap:6px; text-align:right;}
.twwt-sm-finemsg{color:#6b7280; font-size:.75rem;}
.twwt-seatmap-card .proceed-cart.twwt-sm-proceed{width:auto; background:transparent; padding:0; text-align:right;}
.twwt-seatmap-card .twwt-sm-proceed .prc-qty{color:var(--sm-muted); font-size:.85rem; margin:0 0 6px;}
.twwt-seatmap-card .twwt-sm-proceed button.tbtn-button.twwt-sm-cta{background:var(--sm-accent); color:#fff; border:0; border-radius:8px; padding:12px 26px; font-weight:800; text-transform:uppercase; letter-spacing:.03em;}
.twwt-seatmap-card .twwt-sm-proceed button.tbtn-button.twwt-sm-cta:hover{background:var(--sm-accent-hover);}

/* closed / sold out */
.twwt-seatmap-card .twwt-sm-closed{background:#1f1416; border:1px solid #7f1d1d; color:#fca5a5; text-align:center; padding:16px; border-radius:10px; font-weight:600; margin:0;}

/* how it works */
.twwt-sm-howitworks{margin:16px 0 0; text-align:center;}
.twwt-sm-howitworks__title{color:#fff; font-size:1.15rem; margin:0 0 12px;}
.twwt-sm-steps{display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:10px;}
.twwt-sm-step{background:var(--sm-card); border:1px solid rgba(255,255,255,.06); border-radius:10px; padding:14px 10px; display:flex; flex-direction:column; align-items:center; gap:4px;}
.twwt-sm-step__icon{font-size:1.4rem;}
.twwt-sm-step__t{color:var(--sm-accent); font-weight:700; font-size:.9rem;}
.twwt-sm-step__d{color:var(--sm-muted); font-size:.78rem;}

/* mobile */
@media (max-width:600px){
  .twwt-seatmap-card{padding:16px;}
  .twwt-seatmap-card ul.my-tickets.twwt-seatmap{grid-template-columns:repeat(auto-fill,minmax(38px,1fr));}
  .twwt-sm-footer{flex-direction:column; align-items:stretch;}
  .twwt-sm-footer__right{align-items:stretch;}
  .twwt-seatmap-card .twwt-sm-proceed{text-align:center;}
}

/* Harden Seat-Map buttons against theme .button overrides (Astra/Woo win on .button) */
.twwt-seatmap-card .twwt-sm-pickrow .twwt-sm-pickbtn,.twwt-sm-pickrow button.twwt-sm-pickbtn{background:#1f2937!important; color:#fff!important; border:1px solid #374151!important;}
.twwt-seatmap-card .twwt-sm-pickrow .twwt-sm-pickbtn:hover,.twwt-sm-pickrow button.twwt-sm-pickbtn:hover{background:#374151!important;}
.twwt-seatmap-card .twwt-sm-proceed button.tbtn-button.twwt-sm-cta{background:var(--sm-accent)!important; color:#fff!important; border:0!important;}
.twwt-seatmap-card .twwt-sm-proceed button.tbtn-button.twwt-sm-cta:hover{background:var(--sm-accent-hover)!important;}

/* Full-width placement (opt-in): card sits below the product block at content width */
.twwt-seatmap-fullwidth-holder{width:100%; clear:both; margin:24px auto 0;}
.twwt-seatmap-fullwidth-holder .twwt-seatmap-variant.ticket-dashboard{width:100%;}
/* Full-width holder spans the full row regardless of product layout (flex/grid/float) */
.twwt-seatmap-fullwidth-holder{flex-basis:100%; grid-column:1/-1; clear:both;}

/* ============================================================================
   LIGHT COLOR MODE for the Seat-Map / Hybrid card (opt-in: seatmap_color_mode=light)
   Append-only override — Dark mode (the default) is untouched. Overrides the
   palette CSS vars + the few hardcoded #fff/dark values so the card blends into
   light/white store themes.
   ============================================================================ */
.twwt-seatmap-variant.twwt-seatmap-light{
  --sm-card:#ffffff; --sm-map:#f1f5f9; --sm-text:#475569; --sm-muted:#64748b;
  --sm-booked-bg:#e5e7eb; --sm-booked-fg:#94a3b8; --sm-booked-bd:#d1d5db;
  --sm-held-bg:#cbd5e1; --sm-held-fg:#475569; --sm-held-bd:#b6c2d1;
}
.twwt-seatmap-light .twwt-sm-tile,
.twwt-seatmap-light .twwt-seatmap-card,
.twwt-seatmap-light .twwt-sm-step{border-color:rgba(15,23,42,.12); box-shadow:0 1px 3px rgba(0,0,0,.06);}
.twwt-seatmap-light .twwt-sm-tile__value,
.twwt-seatmap-light .twwt-sm-variation__name,
.twwt-seatmap-light .twwt-sm-total,
.twwt-seatmap-light .twwt-sm-howitworks__title{color:#0f172a;}
.twwt-seatmap-light .twwt-seatmap-card__meta .twwt-sm-price,
.twwt-seatmap-light .twwt-seatmap-card__meta .twwt-sm-price *{color:#0f172a!important;}
.twwt-seatmap-light .twwt-sm-progress{background:#e2e8f0;}
.twwt-seatmap-light .twwt-sm-pickrow .twwt-sm-pickqty{background:#ffffff; border-color:#cbd5e1; color:#0f172a;}
.twwt-seatmap-light .twwt-sm-pickrow .twwt-sm-pickqty::placeholder{color:#94a3b8;}
.twwt-seatmap-light .twwt-sm-closed{background:#fef2f2; border-color:#fecaca; color:#b91c1c;}
.twwt-seatmap-light .twwt-sm-tile--left .twwt-sm-tile__value{color:var(--sm-accent);}

/* Webinar card availability bar + urgency (opt-in: card_availability_bar) */
.twwt-card-avail{--sm-accent:#dc2626; margin:8px 0 4px;}
.twwt-card-avail__meta{display:flex; justify-content:space-between; align-items:center; font-size:.8rem; line-height:1.2; margin:0 0 5px;}
.twwt-card-avail__urgency{color:var(--sm-accent,#dc2626); font-weight:700;}
.twwt-card-avail__count{color:#6b7280; margin-left:auto;}
.twwt-card-avail__bar{height:7px; background:#e5e7eb; border-radius:999px; overflow:hidden;}
.twwt-card-avail__fill{height:100%; background:var(--sm-accent,#dc2626); border-radius:999px;}

/* ===========================================================================
   IGY6-style two-tone webinar card (opt-in: webinar_card_style = igy6)
   Markup built by twwt-card-igy6.js; accent via --sm-accent (settable).
   ======================================================================== */
ul.products li.product[data-twwt-igy6]{--sm-accent:#dc2626; padding:0; overflow:hidden; border-radius:12px;
  background:#111827; border:1px solid #263041; display:flex; flex-direction:column;
  transition:transform .18s ease, box-shadow .18s ease;}
ul.products li.product[data-twwt-igy6]:hover{transform:translateY(-4px); box-shadow:0 14px 34px rgba(0,0,0,.45);}
.twwt-igy6-card{display:flex; flex-direction:column; flex:1 1 auto; color:#e5e7eb; text-decoration:none;}
.twwt-igy6-card__top{position:relative; background:#fff; padding:46px 22px 18px;}
.twwt-igy6-pill{position:absolute; top:14px; left:14px; font-size:11px; font-weight:800; text-transform:uppercase;
  letter-spacing:.04em; padding:5px 12px; border-radius:999px;}
.twwt-igy6-pill--in{background:#FDE7D4; color:#C2410C;}
.twwt-igy6-pill--out{background:#e5e7eb; color:#6b7280;}
.twwt-igy6-chip{position:absolute; top:14px; right:14px; font-size:11px; font-weight:700; background:#374151;
  color:#e5e7eb; padding:5px 12px; border-radius:8px;}
.twwt-igy6-card__img{text-align:center; margin:4px 0 12px;}
.twwt-igy6-card__img img{max-width:100%; height:180px; object-fit:contain; display:inline-block;}
.twwt-igy6-price{font-size:24px; font-weight:800; color:var(--sm-accent,#dc2626); line-height:1;}
.twwt-igy6-price .amount,.twwt-igy6-price .woocommerce-Price-amount{color:var(--sm-accent,#dc2626)!important; font-weight:800;}
.twwt-igy6-price .twwt-igy6-per{color:#9ca3af; font-size:14px; font-weight:500;}
.twwt-igy6-card__body{background:#111827; padding:20px 22px 22px; flex:1; display:flex; flex-direction:column; gap:13px;}
.twwt-igy6-title{color:#fff; font-size:17px; font-weight:800; margin:0; line-height:1.32;}
.twwt-igy6-meta{display:flex; justify-content:space-between; align-items:center; font-size:13px;}
.twwt-igy6-urgency{color:var(--sm-accent,#dc2626); font-weight:800;}
.twwt-igy6-seats{color:#9ca3af; margin-left:auto;}
.twwt-igy6-progress{height:8px; background:#374151; border-radius:999px; overflow:hidden;}
.twwt-igy6-progress__fill{height:100%; background:var(--sm-accent,#dc2626); border-radius:999px; transition:width .3s ease;}
.twwt-igy6-claim{display:block; text-align:center; background:var(--sm-accent,#dc2626); color:#fff!important; font-weight:800;
  text-transform:uppercase; letter-spacing:.04em; padding:14px; border-radius:8px; margin-top:6px;}
.twwt-igy6-card:hover .twwt-igy6-title{color:var(--sm-accent,#dc2626);}
.twwt-igy6-card__body .twwt-vote-wrap{display:flex; align-items:center; justify-content:center; gap:10px;
  margin-top:14px; padding-top:14px; border-top:1px solid #263041; flex-wrap:wrap;}
.twwt-igy6-card__body .twwt-thumb-btn{background:#1F2937!important; border:1px solid #263041!important; color:#e5e7eb!important;
  border-radius:8px!important; padding:6px 12px!important; display:inline-flex; align-items:center; gap:6px; box-shadow:none!important;}
.twwt-igy6-card__body .twwt-thumb-btn:hover,
.twwt-igy6-card__body .twwt-thumb-btn.twwt-thumb-active{border-color:var(--sm-accent,#dc2626)!important;}
.twwt-igy6-card__body .twwt-thumb-btn img.emoji{width:18px; height:18px; margin:0;}
.twwt-igy6-card__body .twwt-thumb-count{color:#9ca3af; font-size:13px; font-weight:800; margin:0 6px 0 -4px;}

/* Seat-Map stat tiles below the seat card (opt-in: seatmap_tiles_position = below) */
.twwt-seatmap-variant.twwt-sm-tiles-below{display:flex; flex-direction:column;}
.twwt-seatmap-variant.twwt-sm-tiles-below .twwt-seatmap-card{order:1;}
.twwt-seatmap-variant.twwt-sm-tiles-below .twwt-sm-tiles{order:2; margin-top:16px;}

/* ============================================================================
   2.7.4 — Progress-bar urgency colors + Pick-for-Me unify (both opt-in, default OFF)
   ============================================================================ */
/* Solid green -> yellow -> red by % filled (sold). The level class is emitted only when
   the setting is on: the IGY6 card bar gets it from twwt-card-igy6.js (opts.barUrgency),
   the seat-page bar from ticket-layout-seatmap.php ($sm_urg_bar). background-image:none
   clears the plugin's default accent->#f87171 gradient on the seat-page fill. */
.twwt-igy6-progress__fill--low,
.twwt-seatmap-variant .twwt-sm-progress__fill--low{background:#16a34a!important; background-image:none!important;}
.twwt-igy6-progress__fill--mid,
.twwt-seatmap-variant .twwt-sm-progress__fill--mid{background:#eab308!important; background-image:none!important;}
.twwt-igy6-progress__fill--high,
.twwt-seatmap-variant .twwt-sm-progress__fill--high{background:#dc2626!important; background-image:none!important;}

/* Unify "Pick for Me" with the primary CTA (opt-in: seatmap_unify_pick_button). Both become
   the accent color at weight 700 with an accent-derived hover (color-mix), so a custom accent
   like WinitOrange applies to both without a hardcoded palette. */
.twwt-seatmap-variant.twwt-sm-unifybtn .twwt-sm-pickrow .twwt-sm-pickbtn,
.twwt-sm-unifybtn .twwt-seatmap-card .twwt-sm-pickrow button.twwt-sm-pickbtn{
  background:var(--sm-accent)!important; color:#fff!important; border:0!important; font-weight:600!important;
}
.twwt-seatmap-variant.twwt-sm-unifybtn .twwt-seatmap-card .twwt-sm-proceed button.tbtn-button.twwt-sm-cta{font-weight:600!important;}
.twwt-sm-unifybtn .twwt-sm-pickrow .twwt-sm-pickbtn:hover,
.twwt-sm-unifybtn .twwt-seatmap-card .twwt-sm-proceed button.tbtn-button.twwt-sm-cta:hover{
  background:#cc5a1a!important;
  background:color-mix(in srgb, var(--sm-accent) 82%, #000)!important;
}
.twwt-seatmap-variant.twwt-sm-tiles-below .twwt-sm-progress{order:3;}
.twwt-seatmap-variant.twwt-sm-tiles-below .twwt-sm-progress__label{order:4;}
.twwt-seatmap-variant.twwt-sm-tiles-below .twwt-sm-howitworks{order:5;}
