Ring header restructured from flat 1fr/auto grid into two semantic rows: - Info row: title + badges left, progress counter right - Controls row: Reverse and Autoplay toggles right-aligned Now-playing row shows full title (no line-clamp truncation) and product thumbnail. JS reads og:image meta tag for current thumbnail during SPA navigation. SPA updates for edit button, download button, file info, comments, and canonical link. Footer and docs updates.
3156 lines
64 KiB
CSS
3156 lines
64 KiB
CSS
/* * * * * *
|
|
*
|
|
* Make Post Sell (mps) is a mobile first web application. We make the pages
|
|
* look great on mobile & only use media queries as needed for bigger displays.
|
|
*
|
|
* We use CSS Grid. It's awesome.
|
|
*
|
|
* * * * * */
|
|
|
|
/* Preload hover background images to prevent flash */
|
|
body::after {
|
|
content: "";
|
|
position: absolute;
|
|
width: 0;
|
|
height: 0;
|
|
overflow: hidden;
|
|
z-index: -1;
|
|
background-image:
|
|
url("/static/img/trans-blue.png"),
|
|
url("/static/img/trans-green.png"),
|
|
url("/static/img/trans-red.png"),
|
|
url("/static/img/trans-blue2.png"),
|
|
url("/static/img/trans-green2.png"),
|
|
url("/static/img/trans-red2.png");
|
|
}
|
|
|
|
body {
|
|
margin: 0px;
|
|
font-family: helvetica;
|
|
min-height: 100vh;
|
|
display: grid;
|
|
grid-template-rows: auto 1fr auto;
|
|
}
|
|
|
|
h1 {
|
|
font-size: 1.25em;
|
|
margin-top: 0;
|
|
margin-bottom: .4em;
|
|
}
|
|
|
|
/* Remove top margin from all heading tags */
|
|
h1, h2, h3, h4, h5, h6 {
|
|
margin-top: 0;
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
}
|
|
|
|
/* Products editor: Status column hidden by default (desktop/landscape) */
|
|
.col-status { display: none; }
|
|
|
|
/* Mobile PORTRAIT only adjustments for products table */
|
|
@media (max-width: 640px) and (orientation: portrait) {
|
|
/* Let columns size naturally and tighten spacing */
|
|
.table-fixed-layout { table-layout: auto; }
|
|
.table-fixed-layout th, .table-fixed-layout td { padding: 6px; font-size: 14px; }
|
|
|
|
/* Hide low-priority columns: Visibility(3), Bundle(4), Physical(5), Ready(6) */
|
|
.table-fixed-layout th:nth-child(3), .table-fixed-layout td:nth-child(3),
|
|
.table-fixed-layout th:nth-child(4), .table-fixed-layout td:nth-child(4),
|
|
.table-fixed-layout th:nth-child(5), .table-fixed-layout td:nth-child(5),
|
|
.table-fixed-layout th:nth-child(6), .table-fixed-layout td:nth-child(6) {
|
|
display: none;
|
|
}
|
|
|
|
/* Show compact Status column (now header index 8, cell .col-status) */
|
|
.table-fixed-layout th.col-status, .table-fixed-layout td.col-status { display: table-cell; }
|
|
|
|
/* Allow Title (7) to wrap to multiple lines and keep bold */
|
|
.table-fixed-layout th:nth-child(7), .table-fixed-layout td:nth-child(7) {
|
|
white-space: normal;
|
|
width: 88px;
|
|
min-width: 88px;
|
|
max-width: 88px;
|
|
word-wrap: break-word;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.table-fixed-layout td:nth-child(7) b {
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Make Sellable (1) and Price (2) sit closer together and more compact */
|
|
.table-fixed-layout th:nth-child(1), .table-fixed-layout td:nth-child(1) {
|
|
width: auto;
|
|
max-width: 66px;
|
|
min-width: 36px;
|
|
padding-right: 6px;
|
|
white-space: normal;
|
|
word-wrap: break-word;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.table-fixed-layout th:nth-child(2), .table-fixed-layout td:nth-child(2) {
|
|
width: auto;
|
|
max-width: 65px;
|
|
min-width: 32px;
|
|
padding-left: 4px;
|
|
padding-right: 4px;
|
|
white-space: normal;
|
|
word-wrap: break-word;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
/* Constrain Size column (9) to give Title more space */
|
|
.table-fixed-layout th:nth-child(9), .table-fixed-layout td:nth-child(9) {
|
|
max-width: 66px;
|
|
min-width: 32px;
|
|
padding-left: 4px;
|
|
padding-right: 4px;
|
|
white-space: normal;
|
|
word-wrap: break-word;
|
|
font-size: 14px;
|
|
}
|
|
|
|
/* Ensure check/cross glyphs render consistently and add visual polish */
|
|
.table-fixed-layout td.col-status {
|
|
font-family: system-ui, "Segoe UI Symbol", "Noto Sans Symbols", "Apple Color Emoji",
|
|
"Noto Color Emoji", "Helvetica", "Arial", sans-serif;
|
|
padding: 8px 6px;
|
|
}
|
|
|
|
/* Align status lines with fixed-width labels for easier eye tracking */
|
|
.status-line {
|
|
display: flex;
|
|
gap: 2px;
|
|
margin-bottom: 4px;
|
|
align-items: baseline;
|
|
white-space: nowrap;
|
|
}
|
|
.status-line:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.status-label {
|
|
display: inline-block;
|
|
min-width: 44px;
|
|
max-width: 44px;
|
|
text-align: left;
|
|
flex-shrink: 0;
|
|
margin-right: 3px;
|
|
}
|
|
.status-dot {
|
|
margin: 0 4px 0 2px;
|
|
}
|
|
.status-value {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.decimal-dot {
|
|
font-weight: 700;
|
|
display: inline-block;
|
|
padding: 0 1px;
|
|
}
|
|
|
|
/* Allow Status column to wrap rows but keep each line intact */
|
|
.table-fixed-layout th.col-status, .table-fixed-layout td.col-status {
|
|
white-space: normal;
|
|
width: 84px;
|
|
min-width: 84px;
|
|
max-width: 84px;
|
|
}
|
|
|
|
/* Ensure table doesn't overflow on very small screens */
|
|
@media (max-width: 400px) {
|
|
.table-fixed-layout th:nth-child(1), .table-fixed-layout td:nth-child(1) { width: 52px; font-size: 13px; }
|
|
.table-fixed-layout th:nth-child(2), .table-fixed-layout td:nth-child(2) { width: 80px; font-size: 13px; }
|
|
.table-fixed-layout td:nth-child(9) { width: 50px; font-size: 13px; }
|
|
.table-fixed-layout th:nth-child(9) { width: 50px; }
|
|
.status-label { min-width: 56px; max-width: 56px; font-size: 13px; }
|
|
}
|
|
}
|
|
|
|
table tr:nth-child(even) {
|
|
/* Light gray background for even rows */
|
|
background-color: #f2f2f2;
|
|
}
|
|
|
|
table tr:nth-child(odd) {
|
|
/* White background for odd rows (optional, for contrast) */
|
|
background-color: #ffffff;
|
|
}
|
|
|
|
tr, th, td {
|
|
padding: 8px;
|
|
border: 0px;
|
|
text-align: left;
|
|
}
|
|
|
|
label {
|
|
display: block;
|
|
font-weight: bold;
|
|
}
|
|
|
|
span.asterisk {
|
|
color: red;
|
|
font-weight: bold;
|
|
}
|
|
|
|
a {
|
|
text-decoration: none;
|
|
color: #5f6368
|
|
}
|
|
|
|
input {
|
|
/* keep the input inside the parents box! */
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
section {
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
input[type="text"],
|
|
input[type="tel"],
|
|
input[type="password"],
|
|
input[type="number"],
|
|
input[type="date"] {
|
|
padding: 8px;
|
|
border-radius: 4px;
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
border-color: #CCCCCC;
|
|
}
|
|
|
|
textarea {
|
|
/* keep the input inside the parents box! */
|
|
box-sizing: border-box;
|
|
|
|
padding: 8px;
|
|
border-radius: 4px;
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
border-color: #CCCCCC;
|
|
}
|
|
|
|
section.shop-name-and-description {
|
|
display: grid;
|
|
}
|
|
|
|
input.mps-quantity {
|
|
max-width: 60px;
|
|
}
|
|
|
|
input.mps-submit {
|
|
float: right;
|
|
}
|
|
|
|
textarea.mps-billing-address,
|
|
textarea.mps-shop-description,
|
|
textarea.mps-bundle-data,
|
|
textarea.mps-shop-ribbon-text
|
|
{
|
|
max-width: 600px;
|
|
width: 100%;
|
|
height: 120px;
|
|
padding: 10px;
|
|
}
|
|
|
|
textarea.mps-shop-ribbon-text {
|
|
height: 60px;
|
|
}
|
|
|
|
input.mps-shop-name,
|
|
input.mps-phone-number,
|
|
input.mps-google-analytics-id,
|
|
input.mps-stripe-public-api-key,
|
|
input.mps-stripe-secret-api-key,
|
|
input.mps-shop-ribbon-text-color,
|
|
input.mps-shop-ribbon-color
|
|
{
|
|
max-width: 600px;
|
|
width: 100%;
|
|
}
|
|
|
|
section.product-title-and-description,
|
|
section.content-title-and-description {
|
|
display: grid;
|
|
}
|
|
|
|
section.product-left,
|
|
section.content-left {
|
|
justify-self: right;
|
|
text-align: left;
|
|
/*max-width: 480px;*/
|
|
}
|
|
|
|
section.product-right,
|
|
section.content-right {
|
|
justify-self: center;
|
|
text-align: center;
|
|
}
|
|
|
|
section.log-in-form {
|
|
justify-self: right;
|
|
text-align: center;
|
|
}
|
|
|
|
section.join-form {
|
|
justify-self: left;
|
|
text-align: center;
|
|
}
|
|
|
|
input.mps-product-title,
|
|
input.mps-product-price,
|
|
input.mps-content-title {
|
|
max-width: 600px;
|
|
width: 100%;
|
|
}
|
|
|
|
textarea.mps-product-description,
|
|
textarea.mps-content-description {
|
|
max-width: 600px;
|
|
width: 100%;
|
|
height: 120px;
|
|
padding: 10px;
|
|
}
|
|
|
|
input.file-input {
|
|
width: 100%;
|
|
}
|
|
|
|
div.message-ribbon {
|
|
height: 42px;
|
|
display: grid;
|
|
align-items: center;
|
|
text-align: center;
|
|
font-weight: bold;
|
|
font-size: 18px;
|
|
}
|
|
|
|
section.main {
|
|
/*padding: 14px;*/
|
|
}
|
|
|
|
/*
|
|
section.grid-nav {
|
|
grid-column: 1/-1;
|
|
}
|
|
*/
|
|
|
|
/* mobile first */
|
|
/* the navbar is stacked by default. */
|
|
section.nav {
|
|
background-color: var(--bg-secondary);
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-auto-columns: max-content;
|
|
grid-auto-flow: dense;
|
|
grid-gap: 4px;
|
|
padding: 4px;
|
|
}
|
|
|
|
div.message-ribbon {
|
|
display: none;
|
|
}
|
|
|
|
section.log-in {
|
|
text-align: center;
|
|
align-self: center;
|
|
font-size: .75em;
|
|
}
|
|
|
|
section.search {
|
|
align-self: center;
|
|
}
|
|
|
|
form.search {
|
|
width: 100%;
|
|
}
|
|
|
|
input.mps-keywords {
|
|
width: 100%;
|
|
text-align: center;
|
|
}
|
|
|
|
section.content {
|
|
background-color: #ffffff;
|
|
margin: 4px;
|
|
margin-bottom: 42px;
|
|
}
|
|
|
|
section.logo{
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
img {
|
|
width: 100%;
|
|
max-width: 100%;
|
|
height: auto;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
|
|
img.logo {
|
|
width: initial;
|
|
max-height: 100px;
|
|
max-width: 94%;
|
|
padding: 10px;
|
|
}
|
|
|
|
img.product-cart-thumbnail {
|
|
border: 1px solid #ddd;
|
|
border-radius: 4px;
|
|
max-width:44px;
|
|
max-height:44px;
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
|
|
img.product-thumbnail {
|
|
border: 1px solid #ddd;
|
|
border-radius: 4px;
|
|
max-width:58px;
|
|
max-height:58px;
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
|
|
.product-main {
|
|
max-height: 42vh;
|
|
}
|
|
|
|
.product-images {
|
|
text-align: left;
|
|
}
|
|
|
|
.product-images img.product-main,
|
|
div.product-images img.product-main {
|
|
max-width: 100%;
|
|
max-height: 42vh;
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
|
|
/* Video play button overlay for hero thumbnails */
|
|
.video-thumbnail-container {
|
|
position: relative;
|
|
display: inline-block;
|
|
cursor: pointer;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.video-thumbnail-container img.product-main {
|
|
display: block;
|
|
max-width: 100%;
|
|
max-height: 42vh;
|
|
height: auto;
|
|
}
|
|
|
|
.video-play-overlay {
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
z-index: 10;
|
|
width: 80px;
|
|
height: 80px;
|
|
background-color: rgba(255, 0, 0, 0.4); /* red at 66/255 ~= 0.26, try 0.4 for 66% visibility */
|
|
border-radius: 50%;
|
|
display: grid;
|
|
place-items: center;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.video-play-overlay::after {
|
|
content: "";
|
|
width: 0;
|
|
height: 0;
|
|
border-style: solid;
|
|
border-width: 15px 0 15px 25px;
|
|
border-color: transparent transparent transparent #ffffff;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.video-click-to-play {
|
|
text-align: center;
|
|
margin-top: 8px;
|
|
color: inherit;
|
|
}
|
|
|
|
.video-thumbnail-container:hover .video-play-overlay {
|
|
background-color: rgba(255, 0, 0, 0.6);
|
|
}
|
|
|
|
/* Prevent content sections from overflowing */
|
|
.product-description {
|
|
max-width: 100%;
|
|
overflow-x: auto;
|
|
box-sizing: border-box;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
/* Use overflow-x: clip on .content so it clips without creating a scroll
|
|
container — overflow-x: auto breaks position: sticky for descendants */
|
|
.content,
|
|
section.content {
|
|
max-width: 100%;
|
|
overflow-x: clip;
|
|
box-sizing: border-box;
|
|
overflow-wrap: break-word;
|
|
}
|
|
|
|
/* Make pre and code tags horizontally scrollable for long content */
|
|
pre, code {
|
|
overflow-x: auto;
|
|
white-space: pre;
|
|
}
|
|
|
|
.mps-button {
|
|
border: 2px solid transparent;
|
|
border-radius: 4px;
|
|
color: white;
|
|
background-color: #D4D0C8;
|
|
display: inline-block;
|
|
font-size: 14px;
|
|
font-weight: bold;
|
|
min-width: 100%;
|
|
margin-top: 4px;
|
|
margin-bottom: 4px;
|
|
padding-top: 14px;
|
|
padding-bottom: 14px;
|
|
text-align: center;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
}
|
|
|
|
[data-theme="dark"] .mps-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
color: var(--blue-color);
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
[data-theme="dark"] .mps-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
a.mps-button-blue,
|
|
button.mps-button-blue {
|
|
background-color: #98b6fa;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button-blue,
|
|
[data-theme="dark"] button.mps-button-blue,
|
|
[data-theme="dark"] input.mps-button-blue {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
color: var(--blue-color);
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button-blue:hover,
|
|
[data-theme="dark"] button.mps-button-blue:hover,
|
|
[data-theme="dark"] input.mps-button-blue:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
a.mps-button-green,
|
|
button.mps-button-green {
|
|
background-color: #a3c765;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button-green,
|
|
[data-theme="dark"] button.mps-button-green,
|
|
[data-theme="dark"] input.mps-button-green {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
color: var(--green-color);
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button-green:hover,
|
|
[data-theme="dark"] button.mps-button-green:hover,
|
|
[data-theme="dark"] input.mps-button-green:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
a.mps-button-red,
|
|
button.mps-button-red,
|
|
input.mps-button-red {
|
|
background-color: #bc2131;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button-red,
|
|
[data-theme="dark"] button.mps-button-red,
|
|
[data-theme="dark"] input.mps-button-red {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red.png");
|
|
color: var(--red-color);
|
|
border: 2px solid var(--red-color);
|
|
opacity: 1.0;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button-red:hover,
|
|
[data-theme="dark"] button.mps-button-red:hover,
|
|
[data-theme="dark"] input.mps-button-red:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--red-color);
|
|
}
|
|
|
|
.mps-cancel-button,
|
|
.mps-comment-form-button {
|
|
display: inline-block;
|
|
padding: 6px 12px;
|
|
border: 1px solid #ccc;
|
|
border-radius: 4px;
|
|
background: #f9f9f9;
|
|
color: #333;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
text-decoration: none;
|
|
vertical-align: top;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Red cancel button */
|
|
.mps-cancel-button-red {
|
|
background: var(--red-color);
|
|
color: white;
|
|
border-color: var(--red-color);
|
|
}
|
|
|
|
[data-theme="dark"] .mps-cancel-button-red {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red.png");
|
|
border: 2px solid var(--red-color);
|
|
color: var(--red-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .mps-cancel-button-red:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--red-color);
|
|
}
|
|
|
|
.comment-actions {
|
|
margin-bottom: 42px;
|
|
display: grid;
|
|
grid-auto-flow: column;
|
|
grid-template-columns: repeat(auto-fit, max-content);
|
|
justify-content: start;
|
|
gap: 5px;
|
|
}
|
|
|
|
.reply-link,
|
|
.edit-link,
|
|
.delete-link,
|
|
.moderate-link {
|
|
display: inline-block;
|
|
padding: 6px 12px;
|
|
border: 1px solid #ccc;
|
|
border-radius: 4px;
|
|
background: #f9f9f9;
|
|
color: #333;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
text-decoration: none;
|
|
vertical-align: top;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Light mode color styling */
|
|
.reply-link {
|
|
background: var(--green-color);
|
|
color: white;
|
|
border: 2px solid transparent;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.delete-link {
|
|
background: var(--red-color);
|
|
color: white;
|
|
border: 2px solid transparent;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.mps-comment-form-button {
|
|
background: var(--green-color);
|
|
color: white;
|
|
border: 2px solid transparent;
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .reply-link,
|
|
[data-theme="dark"] .edit-link,
|
|
[data-theme="dark"] .moderate-link {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
border: 2px solid var(--blue-color);
|
|
color: var(--blue-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .reply-link:hover,
|
|
[data-theme="dark"] .edit-link:hover,
|
|
[data-theme="dark"] .moderate-link:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
/* Reply button - green */
|
|
[data-theme="dark"] .reply-link {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
border: 2px solid var(--green-color);
|
|
color: var(--green-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .reply-link:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
/* Delete button - red */
|
|
[data-theme="dark"] .delete-link {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red.png");
|
|
border: 2px solid var(--red-color);
|
|
color: var(--red-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .delete-link:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--red-color);
|
|
}
|
|
|
|
/* Post comment button - green */
|
|
[data-theme="dark"] .mps-comment-form-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
border: 2px solid var(--green-color);
|
|
color: var(--green-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .mps-comment-form-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
.payment-toggle-button {
|
|
display: inline-block;
|
|
padding: 6px 12px;
|
|
border: 1px solid #ccc;
|
|
border-radius: 4px;
|
|
background: #f9f9f9;
|
|
color: #333;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
text-decoration: none;
|
|
vertical-align: top;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.payment-toggle-button.enable {
|
|
background: #4a4;
|
|
color: white;
|
|
border-color: #4a4;
|
|
}
|
|
|
|
.payment-toggle-button.disable {
|
|
background: #d44;
|
|
color: white;
|
|
border-color: #d44;
|
|
}
|
|
|
|
a.product-edit-button {
|
|
background-color: #98b6fa;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button.product-edit-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
color: #7ab9ff;
|
|
border: 2px solid #7ab9ff;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button.product-edit-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
color: #ffffff;
|
|
border: 2px solid #7ab9ff;
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button.shop-new-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
color: var(--green-color);
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.mps-button.shop-new-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
/* Product download and preview buttons - make them green in dark mode */
|
|
[data-theme="dark"] a.product-download-button,
|
|
[data-theme="dark"] button.product-download-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
color: var(--green-color);
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.product-download-button:hover,
|
|
[data-theme="dark"] button.product-download-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.product-preview-button,
|
|
[data-theme="dark"] button.product-preview-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
color: var(--green-color);
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.product-preview-button:hover,
|
|
[data-theme="dark"] button.product-preview-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
a.product-preview-button {
|
|
background-color: #98b6fa;
|
|
}
|
|
|
|
a.product-download-button {
|
|
background-color: #a3c765;
|
|
}
|
|
|
|
a.product-new-button {
|
|
background-color: #98b6fa;
|
|
}
|
|
|
|
a.shop-new-button {
|
|
background-color: #a3c765;
|
|
}
|
|
|
|
a.done-button {
|
|
background-color: #a3c765;
|
|
}
|
|
|
|
a.log-out-button {
|
|
background-color: var(--red-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.log-out-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red.png");
|
|
border: 2px solid var(--red-color);
|
|
color: var(--red-color);
|
|
}
|
|
|
|
[data-theme="dark"] a.log-out-button:hover {
|
|
background-image: url("/static/img/trans-red2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--red-color);
|
|
}
|
|
|
|
a.shop-switch-button {
|
|
color: #666666;
|
|
border-color: #666666;
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
padding-top: 10px;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
a.user-display-name {
|
|
margin: 14px;
|
|
display: inline-block;
|
|
}
|
|
|
|
a.cart-and-count {
|
|
margin: 14px;
|
|
display: inline-block;
|
|
}
|
|
|
|
|
|
/* -------------------------------------------------------------------
|
|
Form-buttons: copy your <a>-class styles to <button> elements
|
|
------------------------------------------------------------------- */
|
|
|
|
/* “Remove” link: no button chrome, just a link color + hover underline */
|
|
button.cart-remove-link {
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
font: inherit;
|
|
color: #5f6368;
|
|
text-decoration: none;
|
|
cursor: pointer;
|
|
}
|
|
button.cart-remove-link:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* Links should use the theme link color */
|
|
[data-theme="dark"] a {
|
|
color: var(--link-color);
|
|
}
|
|
|
|
[data-theme="dark"] button.cart-remove-link {
|
|
color: var(--blue-color);
|
|
}
|
|
|
|
[data-theme="dark"] button.cart-remove-link:hover {
|
|
color: var(--blue-color);
|
|
text-decoration: underline;
|
|
}
|
|
|
|
/* “Add To Cart”, “Download”, “Preview” buttons */
|
|
button.product-download-button,
|
|
button.product-preview-button {
|
|
/* inherits .mps-button defaults */
|
|
}
|
|
button.product-download-button {
|
|
background-color: #a3c765;
|
|
}
|
|
button.product-preview-button {
|
|
background-color: #98b6fa;
|
|
}
|
|
|
|
/* Cart action buttons */
|
|
button.cart-checkout-button {
|
|
background-color: #a3c765;
|
|
}
|
|
button.cart-save-button {
|
|
background-color: #98b6fa;
|
|
}
|
|
|
|
/* Dark mode cart buttons */
|
|
[data-theme="dark"] button.cart-checkout-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
color: var(--green-color);
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
|
|
[data-theme="dark"] button.cart-checkout-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--green-color);
|
|
}
|
|
button.cart-activate-button {
|
|
background-color: #5871ad;
|
|
}
|
|
button.cart-delete-button {
|
|
background-color: #CC6958;
|
|
color: white;
|
|
}
|
|
|
|
/* “Make Public” / “Make Private” */
|
|
button.cart-public-button {
|
|
background: none;
|
|
color: #666666;
|
|
border: 1px solid #666666;
|
|
padding-top: 10px;
|
|
padding-bottom: 10px;
|
|
cursor: pointer;
|
|
}
|
|
button.cart-public-button span.lock {
|
|
font-size: 24px;
|
|
}
|
|
|
|
/* Continue shopping button */
|
|
.cart-continue-shopping-button {
|
|
background-color: #98b6fa;
|
|
color: white;
|
|
}
|
|
|
|
.coupon-apply-button {
|
|
background-color: #a3c765;
|
|
}
|
|
|
|
/*
|
|
* CSS Grid Lanes: Masonry-style layout with graceful fallback
|
|
*
|
|
* Grid Lanes is a new CSS feature that creates true masonry layouts natively.
|
|
* We use @supports to detect browser support and fall back to regular CSS Grid.
|
|
* Shop owners can toggle this via the "grid-lanes-enabled" class in settings.
|
|
*
|
|
* Fallback: Standard CSS Grid with auto-fit columns (items in rows)
|
|
* Enhanced: CSS Grid Lanes (items flow into shortest column, waterfall style)
|
|
*/
|
|
|
|
/* Default: Standard CSS Grid layout */
|
|
section.serp {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
|
|
grid-auto-columns: max-content;
|
|
grid-auto-flow: dense;
|
|
gap: 4px;
|
|
}
|
|
|
|
/* Grid Lanes: Only apply when shop has it enabled AND browser supports it */
|
|
@supports (display: grid-lanes) {
|
|
section.serp.grid-lanes-enabled {
|
|
display: grid-lanes;
|
|
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
|
gap: 4px;
|
|
/* item-tolerance controls sensitivity when deciding item placement */
|
|
/* Prevents layout shuffling from minor size variations */
|
|
item-tolerance: 1em;
|
|
}
|
|
}
|
|
|
|
div.serp-item {
|
|
border-radius: 4px;
|
|
padding: 4px;
|
|
grid-column: span 1;
|
|
grid-row: span 1;
|
|
|
|
/* The new CSS animations are off the hook. */
|
|
transition: background-color 800ms ease;
|
|
|
|
-webkit-transition: 600ms -webkit-filter ease;
|
|
-moz-transition: 600ms -moz-filter ease;
|
|
-moz-transition: 600ms filter ease;
|
|
-ms-transition: 600ms -ms-filter ease;
|
|
-o-transition: 600ms -o-filter ease;
|
|
transition: 600ms filter ease, 600ms -webkit-filter ease;
|
|
}
|
|
|
|
div.serp-item:hover {
|
|
background-color: #FBFBF3;
|
|
|
|
-webkit-filter: brightness(88%);
|
|
-moz-filter: brightness(88%);
|
|
filter: brightness(88%);
|
|
}
|
|
|
|
[data-theme="dark"] div.serp-item:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
border: 2px solid #7ab9ff;
|
|
color: #ffffff;
|
|
-webkit-filter: none;
|
|
-moz-filter: none;
|
|
filter: none;
|
|
}
|
|
|
|
[data-theme="dark"] div.serp-item:hover a {
|
|
color: #ffffff;
|
|
}
|
|
|
|
img.serp-thumbnail {
|
|
border-radius: 4px;
|
|
}
|
|
|
|
div.edit-page {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
|
grid-gap: 20px;
|
|
}
|
|
|
|
hr {
|
|
color: #EEEEEE;
|
|
}
|
|
|
|
section.upload-product-and-preview {
|
|
}
|
|
|
|
section.upload-thumbnails {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
|
grid-auto-columns: max-content;
|
|
grid-auto-flow: dense;
|
|
grid-gap: 14px;
|
|
}
|
|
|
|
section.windows-95-task-bar {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-gap: 4px;
|
|
padding-top: 10px;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
section.windows-95-start-button {
|
|
padding: 14px;
|
|
padding-top: 2px;
|
|
padding-bottom: 2px;
|
|
}
|
|
|
|
section.call-to-action {
|
|
padding: 14px;
|
|
padding-top: 2px;
|
|
padding-bottom: 2px;
|
|
}
|
|
|
|
section.one-column, section.one-column-thin {
|
|
max-width: 600px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
|
|
section.one-column-thin {
|
|
max-width: 400px;
|
|
}
|
|
|
|
section.user-settings {
|
|
justify-self: right;
|
|
}
|
|
|
|
section.button-panel {
|
|
justify-self: left;
|
|
text-align: center;
|
|
}
|
|
|
|
section.existing-cards {
|
|
justify-self: right;
|
|
text-align: left;
|
|
margin-bottom: 40px;
|
|
}
|
|
|
|
section.new-card {
|
|
justify-self: left;
|
|
text-align: right;
|
|
margin-bottom: 40px;
|
|
}
|
|
|
|
div.card-details {
|
|
max-width: 240px;
|
|
margin:auto;
|
|
}
|
|
|
|
div.card-are-you-sure-buttons {
|
|
max-width: 300px;
|
|
margin:auto;
|
|
}
|
|
|
|
section.cart-left {
|
|
margin-bottom: 10px;
|
|
grid-column: 1 / span 3;
|
|
}
|
|
|
|
section.cart-left-grid {
|
|
display: grid;
|
|
grid-gap: 20px;
|
|
grid-template-columns: 1fr 4fr 1fr;
|
|
}
|
|
|
|
section.cart-right {
|
|
text-align: center;
|
|
margin-bottom: 10px;
|
|
grid-column: 4;
|
|
}
|
|
|
|
span.cart-left-item-title {
|
|
font-weight: bold;
|
|
font-size: 18px;
|
|
}
|
|
|
|
section.checkout-left {
|
|
justify-self: right;
|
|
text-align: left;
|
|
text-align: center;
|
|
margin-bottom: 40px;
|
|
}
|
|
|
|
section.checkout-right {
|
|
justify-self: left;
|
|
text-align: center;
|
|
margin-bottom: 40px;
|
|
}
|
|
|
|
/* Checkout page: responsive columns based on content */
|
|
section.checkout-page {
|
|
display: grid;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
grid-gap: 20px;
|
|
max-width: 640px;
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
/* Two columns when multiple sections exist (Stripe + shipping) */
|
|
section.checkout-page .checkout-left + .checkout-right {
|
|
/* This targets checkout-right when it follows checkout-left */
|
|
}
|
|
|
|
section.checkout-page:has(.checkout-left) {
|
|
max-width: 1000px;
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
|
|
/* Fallback for browsers without :has() support */
|
|
@supports not (selector(:has(*))) {
|
|
section.checkout-page {
|
|
max-width: 1000px;
|
|
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
|
|
}
|
|
}
|
|
|
|
|
|
section.checkout-page .well {
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
section.checkout-page {
|
|
max-width: 100%;
|
|
margin: 0;
|
|
padding: 0 10px;
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
section.checkout-page:has(.checkout-left) {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
.coupon {
|
|
/* Dotted border */
|
|
border-radius: 4px;
|
|
border: 3px dotted #bbb;
|
|
padding: 20px;
|
|
}
|
|
|
|
|
|
#email2_input {
|
|
display: None;
|
|
}
|
|
|
|
.StripeElement {
|
|
width: 90%;
|
|
margin: auto;
|
|
border-color: #bbbbbb;
|
|
border-style: solid;
|
|
border-width: 1px;
|
|
border-radius: 8px;
|
|
background-color: white;
|
|
padding: 12px;
|
|
}
|
|
|
|
.opacity-60 {
|
|
opacity: .60;
|
|
}
|
|
|
|
.well, .well2 {
|
|
background-color: #F9F9FA;
|
|
border-radius: 10px;
|
|
padding: 10px;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.well-green {
|
|
background-color: var(--green-color);
|
|
color: white;
|
|
}
|
|
|
|
[data-theme="dark"] .one-column.well.well-green,
|
|
[data-theme="dark"] .action-columns.well.well-green {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green.png");
|
|
border: 2px solid var(--green-color);
|
|
box-shadow: 0 0 10px rgba(163, 199, 101, 0.3);
|
|
color: white;
|
|
}
|
|
|
|
[data-theme="dark"] .well-green .shop-new-button {
|
|
background-image: url("/static/img/trans-green.png");
|
|
}
|
|
|
|
/* Action columns - true 50/50 equal columns */
|
|
.action-columns {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: 20px;
|
|
max-width: 600px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
|
|
@media (min-width: 960px) {
|
|
.action-columns {
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 40px;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* markup editor css */
|
|
|
|
section.markup-settings {
|
|
width: 100%;
|
|
min-height: 280px;
|
|
}
|
|
|
|
textarea.markup-editor-textarea {
|
|
-webkit-box-sizing: border-box;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
height: 400px;
|
|
}
|
|
|
|
.markup-editor-submit {
|
|
float: right;
|
|
}
|
|
|
|
.markup-preview-div {
|
|
width: 100%;
|
|
}
|
|
|
|
.markup-preview-div {
|
|
border-top: 1px dotted #bbbbbb;
|
|
border-bottom: 1px dotted #bbbbbb;
|
|
padding-top: 16px;
|
|
padding-bottom: 16px;
|
|
margin-top: 16px;
|
|
margin-bottom: 16px;
|
|
margin-right: 5px;
|
|
margin-left: 5px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.markup-preview-div p {
|
|
margin-top: 15px;
|
|
margin-bottom: 15px;
|
|
line-height: 1.75;
|
|
}
|
|
|
|
.preview-raw-markup {
|
|
display: block;
|
|
white-space: pre-wrap;
|
|
background-color: unset;
|
|
border-radius: unset;
|
|
border: unset;
|
|
border-width: 0px;
|
|
|
|
margin-top: 19px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.discounted {
|
|
color: #a3c765;
|
|
}
|
|
|
|
@media (max-width: 800px) {
|
|
/* the two-column is stacked by default. */
|
|
section.two-column {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
max-width: 600px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
padding-left: 4px;
|
|
padding-right: 4px;
|
|
}
|
|
|
|
/* On mobile, reorder to put purchase section after images */
|
|
.product-images {
|
|
order: 1;
|
|
max-width: 100%;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.product-images img.product-main {
|
|
max-width: 100%;
|
|
max-height: 42vh;
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
|
|
section.product-right {
|
|
order: 2;
|
|
width: 100%;
|
|
}
|
|
|
|
section.product-right .well {
|
|
margin-top: 30px;
|
|
}
|
|
|
|
.product-description {
|
|
order: 3;
|
|
}
|
|
|
|
.product-comments {
|
|
order: 4;
|
|
}
|
|
|
|
/* Watch mode mobile: video sticks at top, nothing scrolls over it */
|
|
.watch-left {
|
|
order: 1;
|
|
}
|
|
|
|
.watch-mode .product-images {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 20;
|
|
background: var(--bg-primary, #ffffff);
|
|
}
|
|
|
|
.watch-mode .product-description,
|
|
.watch-mode .product-comments,
|
|
.watch-mode section.product-right {
|
|
position: relative;
|
|
z-index: 5;
|
|
background: var(--bg-primary, #ffffff);
|
|
}
|
|
|
|
.watch-mode section.product-right {
|
|
order: 2;
|
|
}
|
|
|
|
/* Ensure buttons get full width on mobile */
|
|
section.product-right .mps-button {
|
|
width: 100%;
|
|
min-width: 100%;
|
|
}
|
|
|
|
/* the cart-grid is stacked by default. */
|
|
section.cart-grid {
|
|
max-width: 600px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
|
|
/* markup-editor is stacked by default. */
|
|
div.markup-editor {
|
|
display: grid;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
section.markup-rendered {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
/*************************************************************
|
|
*
|
|
* for displays bigger than 800px which are "desktop-ish".
|
|
*
|
|
*************************************************************/
|
|
@media (min-width: 960px) {
|
|
|
|
/* The SERP page grid should have bigger items since it has more room.
|
|
* mobile -> desktop
|
|
* 160px -> 240px */
|
|
section.serp {
|
|
grid-template-columns: repeat(auto-fit, minmax(240px, .25fr));
|
|
}
|
|
|
|
/* We have the room to really break into 2 columns */
|
|
section.two-column {
|
|
display: grid;
|
|
grid-template-columns: 2fr 1fr;
|
|
grid-template-areas:
|
|
"images purchase"
|
|
"description purchase"
|
|
"comments purchase";
|
|
gap: 40px;
|
|
max-width: 1200px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
padding-left: 40px;
|
|
padding-right: 40px;
|
|
align-items: start;
|
|
}
|
|
|
|
.product-images {
|
|
grid-area: images;
|
|
}
|
|
|
|
section.product-right {
|
|
grid-area: purchase;
|
|
}
|
|
|
|
.product-description {
|
|
grid-area: description;
|
|
}
|
|
|
|
.product-comments {
|
|
grid-area: comments;
|
|
}
|
|
|
|
/* Watch mode: two-column layout with left wrapper for sticky video */
|
|
section.two-column.watch-mode {
|
|
grid-template-columns: 2fr 1fr;
|
|
grid-template-areas: "left purchase";
|
|
}
|
|
|
|
.watch-left {
|
|
grid-area: left;
|
|
min-width: 0;
|
|
}
|
|
|
|
/* In watch mode, child divs inside watch-left are plain block elements */
|
|
.watch-mode .product-images,
|
|
.watch-mode .product-description,
|
|
.watch-mode .product-comments {
|
|
grid-area: auto;
|
|
}
|
|
|
|
.watch-mode section.product-right {
|
|
grid-area: purchase;
|
|
align-self: start;
|
|
}
|
|
|
|
/* if we have room, break markup-editor into 2 columns */
|
|
div.markup-editor {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-auto-columns: max-content;
|
|
grid-auto-flow: dense;
|
|
grid-gap: 30px;
|
|
padding: 14px;
|
|
justify-items: center;
|
|
}
|
|
section.markup-settings {
|
|
min-height: 400px;
|
|
}
|
|
|
|
/* the minimum width for "desktop-ish" screens. */
|
|
a.mps-button {
|
|
min-width: 280px;
|
|
}
|
|
|
|
/* really make the button small now that we have room. */
|
|
a.mps-button-small {
|
|
min-width: 140px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
}
|
|
|
|
section.windows-95-task-bar {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
|
|
section.call-to-action {
|
|
text-align: right;
|
|
}
|
|
|
|
/* if we have room, break into 2 columns */
|
|
section.cart-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr 1fr;
|
|
grid-gap: 30px;
|
|
padding: 14px;
|
|
justify-items: center;
|
|
}
|
|
|
|
img.product-cart-thumbnail {
|
|
max-width:104px;
|
|
max-height:104px;
|
|
}
|
|
|
|
section.content {
|
|
background-color: #ffffff;
|
|
margin: 4px;
|
|
padding-bottom: 42px;
|
|
}
|
|
|
|
input.mps-keywords {
|
|
text-align: left;
|
|
}
|
|
|
|
section.nav {
|
|
/* if we have room, break navbar into 3 columns */
|
|
grid-template-columns: minmax(200px, 300px) 3fr 1fr;
|
|
grid-gap: 30px;
|
|
padding: 2px;
|
|
}
|
|
|
|
div.message-ribbon {
|
|
display: grid;
|
|
}
|
|
|
|
/* Desktop, NOT watch mode: full nav is sticky */
|
|
body:not(.watch-mode-shop) section.nav {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 40;
|
|
}
|
|
|
|
/* Desktop, watch mode: ribbon + logo stick, rest of nav scrolls */
|
|
.watch-mode-shop div.message-ribbon {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 40;
|
|
}
|
|
|
|
.watch-mode-shop section.logo {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 39;
|
|
background-color: var(--bg-secondary);
|
|
}
|
|
|
|
/* Desktop: offset sticky video below the sticky ribbon */
|
|
.watch-mode .product-images {
|
|
top: 42px;
|
|
}
|
|
|
|
section.log-in {
|
|
text-align: right;
|
|
}
|
|
|
|
.well, .well2 {
|
|
padding: 10px;
|
|
padding-right: 20px;
|
|
padding-left: 20px;
|
|
}
|
|
.well2 {
|
|
padding: 10px;
|
|
}
|
|
}
|
|
|
|
@media (min-width: 1200px) {
|
|
img.product-cart-thumbnail {
|
|
max-width:184px;
|
|
max-height:184px;
|
|
}
|
|
.well, .well2 {
|
|
padding: 20px;
|
|
padding-right: 40px;
|
|
padding-left: 40px;
|
|
}
|
|
.well2 {
|
|
padding: 20px;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Desktop: Progressive enhancement for CSS Grid Lanes
|
|
* This uses nested @supports inside @media to only apply when both
|
|
* the viewport is desktop-sized AND the browser supports grid-lanes
|
|
* AND the shop has grid-lanes-enabled class set
|
|
*/
|
|
@media (min-width: 960px) {
|
|
@supports (display: grid-lanes) {
|
|
section.serp.grid-lanes-enabled {
|
|
display: grid-lanes;
|
|
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
|
gap: 4px;
|
|
item-tolerance: 1em;
|
|
}
|
|
}
|
|
}
|
|
|
|
div.message-ribbon {
|
|
color: #ffffff;
|
|
background-color: #5871ad;
|
|
background: linear-gradient(to right, #5871ad, #82A8FF);
|
|
}
|
|
|
|
.highlight {
|
|
text-shadow:
|
|
-6px 0px 6px rgba(255, 231, 13, 0.6),
|
|
6px 0px 6px rgba(255, 231, 13, 0.6),
|
|
12px 0px 12px rgba(255, 231, 13, 0.6),
|
|
-12px 0px 12px rgba(255, 231, 13, 0.6);
|
|
}
|
|
.avoid-wrap {
|
|
display:inline-block;
|
|
}
|
|
|
|
.vertical-text {
|
|
display: inline-block;
|
|
-webkit-transform: rotate(-90deg);
|
|
-moz-transform: rotate(-90deg);
|
|
-ms-transform: rotate(-90deg);
|
|
-o-transform: rotate(-90deg);
|
|
transform: rotate(-90deg);
|
|
}
|
|
|
|
.shown-on-desktop {
|
|
display: none;
|
|
}
|
|
|
|
.not-shown-on-desktop {
|
|
display: block;
|
|
}
|
|
|
|
@media screen and (min-width:800px) {
|
|
.shown-on-desktop {display: block}
|
|
.not-shown-on-desktop {display: none}
|
|
}
|
|
div.message-ribbon {
|
|
color: #ffffff;
|
|
background-color: #5871ad;
|
|
background: linear-gradient(to right, #5871ad, #82A8FF);
|
|
}
|
|
|
|
#alerts {
|
|
animation: fadein 2s;
|
|
}
|
|
|
|
@keyframes fadein {
|
|
from { opacity: 0; }
|
|
to { opacity: 1; }
|
|
}
|
|
|
|
|
|
/* ALERT START */
|
|
#alerts {
|
|
z-index: 98;
|
|
}
|
|
|
|
.alert {
|
|
opacity: .85;
|
|
display: grid;
|
|
grid-template-columns: 1fr 50px;
|
|
grid-gap: 10px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.alert-message {
|
|
text-align: center;
|
|
margin-top: 10px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.alert .close {
|
|
text-align: right;
|
|
margin-top: 10px;
|
|
margin-bottom: 10px;
|
|
margin-right: 15px;
|
|
}
|
|
|
|
.alert-danger, .alert-error {
|
|
color: #721c24;
|
|
background-color: #f8d7da;
|
|
border: 1px solid #f5c6cb;
|
|
}
|
|
|
|
.alert-warning {
|
|
color: #856404;
|
|
background-color: #fff3cd;
|
|
border: 1px solid #ffeeba;
|
|
}
|
|
|
|
.alert-info, .alert-notice {
|
|
color: var(--text-primary);
|
|
background-color: color-mix(in srgb, var(--info-color) 20%, var(--bg-primary) 80%);
|
|
border: 1px solid var(--info-color);
|
|
}
|
|
|
|
.alert-success {
|
|
color: #155724;
|
|
background-color: #a3c765;
|
|
border: 1px solid #c3e6cb;
|
|
}
|
|
|
|
/* ALERT END */
|
|
|
|
|
|
/* Pure CSS toggle using <details> element */
|
|
.toggle-summary {
|
|
cursor: pointer;
|
|
list-style: none;
|
|
color: var(--primary-color);
|
|
text-decoration: underline;
|
|
}
|
|
|
|
.toggle-summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
|
|
.toggle-summary::marker {
|
|
display: none;
|
|
content: "";
|
|
}
|
|
|
|
.api-key-details {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.api-key-fields {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
/* Status and message styling */
|
|
.status-message {
|
|
color: #666;
|
|
}
|
|
|
|
.success-indicator {
|
|
color: green;
|
|
}
|
|
|
|
.error-indicator {
|
|
color: #d44;
|
|
}
|
|
|
|
.note-text {
|
|
color: #666;
|
|
}
|
|
|
|
[data-theme="dark"] .note-text {
|
|
color: #c0c0c0;
|
|
}
|
|
|
|
[data-theme="dark"] .status-message {
|
|
color: #c0c0c0;
|
|
}
|
|
|
|
[data-theme="dark"] .error-indicator {
|
|
color: #ff6b6b;
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Flash message styling for dark mode */
|
|
[data-theme="dark"] .alert-danger,
|
|
[data-theme="dark"] .alert-error {
|
|
color: white;
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red2.png");
|
|
border-color: var(--red-color);
|
|
}
|
|
|
|
[data-theme="dark"] .alert-warning {
|
|
color: white;
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-red2.png");
|
|
border-color: #ffd93d;
|
|
}
|
|
|
|
[data-theme="dark"] .alert-info,
|
|
[data-theme="dark"] .alert-notice {
|
|
color: white;
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
border-color: var(--blue-color);
|
|
}
|
|
|
|
[data-theme="dark"] .alert-success {
|
|
color: white;
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-green2.png");
|
|
border-color: var(--green-color);
|
|
}
|
|
|
|
/* Override shop theme link colors to ensure visibility in dark mode */
|
|
[data-theme="dark"] a.shop-theme-link-color,
|
|
[data-theme="dark"] .shop-theme-link-color {
|
|
color: #ffffff !important;
|
|
}
|
|
|
|
|
|
/* User settings page grid layout */
|
|
.user-settings-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: 20px;
|
|
}
|
|
|
|
@media (min-width: 960px) {
|
|
.user-settings-grid {
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 40px;
|
|
}
|
|
}
|
|
|
|
/* Add payment method button styling */
|
|
.add-payment-method-button {
|
|
background-color: var(--blue-color);
|
|
color: white;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.add-payment-method-button:hover {
|
|
background-color: #4a90e2;
|
|
color: white;
|
|
}
|
|
|
|
[data-theme="dark"] .add-payment-method-button {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
color: var(--blue-color);
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
[data-theme="dark"] .add-payment-method-button:hover {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue2.png");
|
|
color: #ffffff;
|
|
border: 2px solid var(--blue-color);
|
|
}
|
|
|
|
.inline-label {
|
|
display: inline;
|
|
}
|
|
|
|
.favicon-preview {
|
|
width: 32px;
|
|
}
|
|
|
|
/* Input field styling */
|
|
.full-width-input {
|
|
width: 100%;
|
|
}
|
|
|
|
.disabled-input {
|
|
opacity: 0.5;
|
|
background-color: #f5f5f5;
|
|
}
|
|
|
|
/* Crypto checkout styles */
|
|
.crypto-logo {
|
|
width: 150px;
|
|
height: 150px;
|
|
margin-right: 15px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.payment-grid {
|
|
display: grid;
|
|
grid-template-columns: auto 1fr;
|
|
gap: 20px;
|
|
margin: 16px 0;
|
|
align-items: start;
|
|
}
|
|
|
|
.crypto-address {
|
|
white-space: pre-wrap;
|
|
word-wrap: break-word;
|
|
}
|
|
|
|
.payment-buttons {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
gap: 8px;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.payment-button-row-1 {
|
|
grid-row: 1;
|
|
}
|
|
|
|
.payment-button-cancel {
|
|
grid-column: 1 / -1;
|
|
grid-row: 2;
|
|
}
|
|
|
|
.status-box {
|
|
background: var(--bg-secondary);
|
|
border: 1px solid var(--border-color);
|
|
color: var(--text-primary);
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin: 10px 0;
|
|
}
|
|
|
|
.confirmations-hidden {
|
|
display: none;
|
|
}
|
|
|
|
.qr-fallback {
|
|
width: 150px;
|
|
height: 150px;
|
|
background: #f0f0f0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 12px;
|
|
color: #666;
|
|
border: 1px solid #ddd;
|
|
}
|
|
|
|
.success-notice {
|
|
background: color-mix(in srgb, var(--success-color) 15%, var(--bg-primary) 85%);
|
|
border: 1px solid var(--success-color);
|
|
color: var(--text-primary);
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.warning-notice {
|
|
background: color-mix(in srgb, var(--warning-color) 15%, var(--bg-primary) 85%);
|
|
border: 1px solid var(--warning-color);
|
|
color: var(--text-primary);
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.monospace-address {
|
|
font-family: monospace;
|
|
background: var(--bg-secondary);
|
|
color: var(--text-primary);
|
|
padding: 8px;
|
|
border-radius: 3px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.notice-list {
|
|
margin: 10px 0;
|
|
}
|
|
|
|
.notice-footer {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
/* Cart checkout styles */
|
|
.disabled-crypto-button {
|
|
background: #aaa !important;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
[data-theme="dark"] .disabled-crypto-button {
|
|
background-color: #1a1a1a !important;
|
|
background-image: none !important;
|
|
color: #666666 !important;
|
|
border: 2px solid #444444 !important;
|
|
cursor: not-allowed;
|
|
opacity: 0.6;
|
|
}
|
|
|
|
button img.crypto-button-icon,
|
|
.mps-button img.crypto-button-icon,
|
|
img.crypto-button-icon {
|
|
width: 32px !important;
|
|
height: 32px !important;
|
|
max-width: 32px !important;
|
|
min-width: 32px !important;
|
|
margin-right: 8px;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.crypto-settings-link {
|
|
color: #f59e0b;
|
|
text-decoration: none;
|
|
display: block;
|
|
margin-top: 10px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.warning-banner {
|
|
background: #fff3cd;
|
|
border: 1px solid #ffeaa7;
|
|
padding: 10px;
|
|
border-radius: 5px;
|
|
color: #856404;
|
|
}
|
|
|
|
.warning-banner-alt {
|
|
background: color-mix(in srgb, var(--info-color) 15%, var(--bg-primary) 85%);
|
|
border: 1px solid var(--info-color);
|
|
color: var(--text-primary);
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.warning-banner p {
|
|
margin: 0;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.warning-banner h3 {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.warning-banner-content {
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.pending-quote-item {
|
|
background: transparent;
|
|
border: none;
|
|
color: var(--text-primary);
|
|
border-radius: 3px;
|
|
padding: 10px;
|
|
margin: 8px 0;
|
|
}
|
|
|
|
.pending-quote-single {
|
|
text-align: center;
|
|
}
|
|
|
|
.pending-quote-cancel {
|
|
text-align: center;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.full-width-button {
|
|
width: 100%;
|
|
display: block;
|
|
}
|
|
|
|
|
|
.view-quote-button {
|
|
background: #17a2b8;
|
|
font-size: 12px;
|
|
padding: 5px 10px;
|
|
}
|
|
|
|
.pending-quote-details {
|
|
font-size: 12px;
|
|
color: #666;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
/* Cart page styles */
|
|
.cart-float-right {
|
|
float: right;
|
|
}
|
|
|
|
.cart-shop-grid-span {
|
|
grid-column: span 3;
|
|
}
|
|
|
|
.cart-shop-name {
|
|
font-size: 1.5em;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.cart-inline-form {
|
|
display: inline;
|
|
}
|
|
|
|
.cart-update-button {
|
|
width: 80px;
|
|
}
|
|
|
|
.cart-total-section {
|
|
text-align: right;
|
|
}
|
|
|
|
.cart-total-grid-span {
|
|
text-align: right;
|
|
grid-column: span 3;
|
|
}
|
|
|
|
.cart-total-amount {
|
|
font-size: 1.5em;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.cart-public-link {
|
|
font-size: 0.8em;
|
|
}
|
|
|
|
/* Phase 1: Static inline style replacements */
|
|
.no-bottom-margin {
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
.no-top-margin {
|
|
margin-top: 0px;
|
|
}
|
|
|
|
.bold-text {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.stripe-card-logo {
|
|
width: 92px;
|
|
float: left;
|
|
margin-right: 10px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.stripe-negative-margin {
|
|
margin-top: -12px;
|
|
}
|
|
|
|
.stripe-initial-width {
|
|
width: initial;
|
|
}
|
|
|
|
.stripe-save-button {
|
|
margin-bottom: 0px;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.comment-pending {
|
|
color: orange;
|
|
}
|
|
|
|
.hidden-form {
|
|
display: none;
|
|
}
|
|
|
|
.coupon-disabled {
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.vertical-coupon-text {
|
|
margin: 0px;
|
|
}
|
|
|
|
.remove-button-small {
|
|
width: 80px;
|
|
}
|
|
|
|
.subtitle-text {
|
|
font-size: 0.45em;
|
|
font-weight: normal;
|
|
}
|
|
|
|
.product-meta-dates {
|
|
color: var(--text-muted);
|
|
font-size: 0.8em;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.original-comment-box {
|
|
background-color: #f5f5f5;
|
|
padding: 15px;
|
|
border-left: 4px solid #007cba;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
[data-theme="dark"] .original-comment-box {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
border-left: 4px solid var(--blue-color);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* Comment reply styling */
|
|
.comment-reply {
|
|
margin-left: 0px;
|
|
margin-bottom: 20px;
|
|
border-left: 2px solid #ddd;
|
|
padding-left: 10px;
|
|
}
|
|
|
|
[data-theme="dark"] .comment-reply {
|
|
border-left: 2px solid var(--blue-color);
|
|
}
|
|
|
|
.start-button-icon {
|
|
font-size: 20px;
|
|
}
|
|
|
|
.table-full-width {
|
|
width: 100%;
|
|
max-width: 100%;
|
|
}
|
|
|
|
.table-fixed-layout {
|
|
table-layout: fixed;
|
|
}
|
|
|
|
.sold-out-button {
|
|
background-color: red !important;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* Phase 2: Static layout and status styling */
|
|
|
|
/* Crypto history layout classes */
|
|
.crypto-history-container {
|
|
margin: 20px 0;
|
|
}
|
|
|
|
.crypto-payment-card {
|
|
border: 1px solid #dee2e6;
|
|
border-radius: 4px;
|
|
padding: 15px;
|
|
margin-bottom: 15px;
|
|
background: #f8f9fa;
|
|
}
|
|
|
|
.crypto-header-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr auto;
|
|
align-items: start;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.crypto-header-title {
|
|
margin: 0 0 5px 0;
|
|
}
|
|
|
|
.crypto-header-subtitle {
|
|
margin: 0;
|
|
color: #6c757d;
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
.crypto-details-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
gap: 15px;
|
|
margin: 10px 0;
|
|
align-items: start;
|
|
}
|
|
|
|
.crypto-right-align {
|
|
text-align: right;
|
|
}
|
|
|
|
.crypto-right-align-justify {
|
|
text-align: right;
|
|
justify-self: end;
|
|
}
|
|
|
|
.crypto-small-text {
|
|
color: #6c757d;
|
|
}
|
|
|
|
/* Status notice classes */
|
|
.status-warning-notice {
|
|
background: #fff3cd;
|
|
border: 1px solid #ffeaa7;
|
|
border-radius: 3px;
|
|
padding: 8px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.status-error-notice {
|
|
background: #f8d7da;
|
|
border: 1px solid #f5c6cb;
|
|
border-radius: 3px;
|
|
padding: 8px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.status-info-notice {
|
|
background: #d1ecf1;
|
|
border: 1px solid #bee5eb;
|
|
border-radius: 3px;
|
|
padding: 8px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.crypto-help-section {
|
|
margin-top: 30px;
|
|
padding: 15px;
|
|
background: #e9ecef;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.crypto-empty-state {
|
|
text-align: center;
|
|
padding: 40px;
|
|
color: #6c757d;
|
|
}
|
|
|
|
/* Invoice layout classes */
|
|
.invoice-right-section {
|
|
text-align: right;
|
|
margin: 15px 0;
|
|
}
|
|
|
|
.invoice-total-section {
|
|
text-align: right;
|
|
margin: 20px 0;
|
|
font-size: 1.2em;
|
|
}
|
|
|
|
.invoice-payment-box {
|
|
background-color: #f0f8ff;
|
|
padding: 15px;
|
|
border: 1px solid #4169e1;
|
|
border-radius: 5px;
|
|
margin: 15px 0;
|
|
}
|
|
|
|
.invoice-margin-section {
|
|
margin-top: 15px;
|
|
}
|
|
|
|
.invoice-margin-small {
|
|
margin: 5px 0;
|
|
}
|
|
|
|
/* Status color classes */
|
|
.status-success {
|
|
color: #28a745;
|
|
}
|
|
|
|
.status-warning {
|
|
color: #ffc107;
|
|
}
|
|
|
|
.status-info {
|
|
color: #6c757d;
|
|
}
|
|
|
|
.status-error {
|
|
color: #dc3545;
|
|
}
|
|
|
|
.code-monospace {
|
|
font-size: 0.9em;
|
|
font-family: monospace;
|
|
}
|
|
|
|
/* Dark Mode Theme System */
|
|
:root {
|
|
/* Light mode colors (default) */
|
|
--bg-primary: #ffffff;
|
|
--bg-secondary: #f8f9fa;
|
|
--bg-tertiary: #e9ecef;
|
|
--text-primary: #333333;
|
|
--text-secondary: #6c757d;
|
|
--text-muted: #666666;
|
|
--border-color: #dee2e6;
|
|
--border-light: #e9ecef;
|
|
--link-color: #5f6368;
|
|
--blue-color: #98b6fa;
|
|
--green-color: #a3c765;
|
|
--red-color: #bc2131;
|
|
--success-color: #28a745;
|
|
--warning-color: #ffc107;
|
|
--error-color: #dc3545;
|
|
--info-color: #17a2b8;
|
|
|
|
/* Form elements */
|
|
--input-bg: #ffffff;
|
|
--input-border: #cccccc;
|
|
--input-text: #333333;
|
|
|
|
/* Navigation */
|
|
--nav-bg: #f9f9fa;
|
|
--nav-text: #333333;
|
|
|
|
/* Cards and containers */
|
|
--card-bg: #f8f9fa;
|
|
--well-bg: #f9f9fa;
|
|
|
|
/* Status notices */
|
|
--notice-warning-bg: #fff3cd;
|
|
--notice-warning-border: #ffeaa7;
|
|
--notice-error-bg: #f8d7da;
|
|
--notice-error-border: #f5c6cb;
|
|
--notice-info-bg: #d1ecf1;
|
|
--notice-info-border: #bee5eb;
|
|
}
|
|
|
|
[data-theme="dark"] {
|
|
/* Dark mode colors - zealotrush.com inspired gaming theme */
|
|
--bg-primary: #0d1117;
|
|
--bg-secondary: #161b22;
|
|
--bg-tertiary: #21262d;
|
|
--text-primary: #ffffff;
|
|
--text-secondary: #cccccc;
|
|
--text-muted: #999999;
|
|
--border-color: #7ab9ff;
|
|
--border-light: #5599dd;
|
|
--link-color: #7ab9ff;
|
|
--blue-color: #7ab9ff;
|
|
--green-color: #08e700;
|
|
--red-color: #F34C31;
|
|
--success-color: #08e700;
|
|
--warning-color: #f34c31;
|
|
--error-color: #f34c31;
|
|
--info-color: #7ab9ff;
|
|
|
|
/* Form elements */
|
|
--input-bg: #161b22;
|
|
--input-border: #7ab9ff;
|
|
--input-text: #ffffff;
|
|
|
|
/* Navigation */
|
|
--nav-bg: #0d1117;
|
|
--nav-text: #ffffff;
|
|
|
|
/* Cards and containers */
|
|
--card-bg: #2d2d2d;
|
|
--well-bg: #2d2d2d;
|
|
|
|
/* Status notices */
|
|
--notice-warning-bg: #3e2723;
|
|
--notice-warning-border: #5d4037;
|
|
--notice-error-bg: #3f1a1a;
|
|
--notice-error-border: #5c2626;
|
|
--notice-info-bg: #1a365d;
|
|
--notice-info-border: #2c5282;
|
|
}
|
|
|
|
/* Apply theme variables to existing elements */
|
|
body {
|
|
background-color: var(--bg-primary);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
section.content {
|
|
background-color: var(--bg-primary);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
section.nav {
|
|
background-color: var(--bg-secondary);
|
|
color: var(--nav-text);
|
|
}
|
|
|
|
a {
|
|
color: var(--link-color);
|
|
}
|
|
|
|
input[type="text"],
|
|
input[type="tel"],
|
|
input[type="password"],
|
|
input[type="number"],
|
|
input[type="date"],
|
|
textarea {
|
|
background-color: var(--input-bg);
|
|
border-color: var(--input-border);
|
|
color: var(--input-text);
|
|
}
|
|
|
|
.well, .well2 {
|
|
background-color: var(--well-bg);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .well,
|
|
[data-theme="dark"] .well2 {
|
|
background-color: #2d3748;
|
|
background-image: url("/static/img/trans-blue.png");
|
|
border: 2px solid #7ab9ff;
|
|
box-shadow: 0 0 10px rgba(122, 185, 255, 0.3);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* Dark mode specific overrides for existing classes */
|
|
[data-theme="dark"] table tr:nth-child(even) {
|
|
background-color: #2d2d2d;
|
|
}
|
|
|
|
[data-theme="dark"] table tr:nth-child(odd) {
|
|
background-color: #333333;
|
|
}
|
|
|
|
[data-theme="dark"] .crypto-payment-card {
|
|
background: var(--card-bg);
|
|
border-color: var(--border-color);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .status-warning-notice {
|
|
background: var(--notice-warning-bg);
|
|
border-color: var(--notice-warning-border);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .status-error-notice {
|
|
background: var(--notice-error-bg);
|
|
border-color: var(--notice-error-border);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .status-info-notice {
|
|
background: var(--notice-info-bg);
|
|
border-color: var(--notice-info-border);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .crypto-help-section {
|
|
background: var(--bg-tertiary);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .invoice-payment-box {
|
|
background-color: #1a365d;
|
|
border-color: #2c5282;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* Crypto wallet success indicators */
|
|
.success-indicator {
|
|
color: var(--success-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
[data-theme="dark"] .success-indicator {
|
|
color: var(--green-color);
|
|
font-weight: bold;
|
|
}
|
|
|
|
/* Theme toggle button */
|
|
.theme-toggle {
|
|
background: none;
|
|
border: 1px solid var(--border-color);
|
|
color: var(--text-primary);
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.theme-toggle:hover {
|
|
background-color: var(--bg-secondary);
|
|
}
|
|
|
|
.theme-toggle-icon {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
/* Watch mode: sticky video within tall left wrapper */
|
|
.watch-mode .product-images {
|
|
position: sticky;
|
|
z-index: 10;
|
|
background: var(--bg-primary, #ffffff);
|
|
overflow: hidden;
|
|
max-width: 100%;
|
|
}
|
|
|
|
/* Watch video container — grid stacks all children in same cell for crossfade */
|
|
.watch-video-container {
|
|
display: grid;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.watch-video-container > * {
|
|
grid-area: 1 / 1;
|
|
}
|
|
|
|
.watch-video-container > video {
|
|
max-width: 100%;
|
|
max-height: 42vh;
|
|
width: auto;
|
|
height: auto;
|
|
}
|
|
|
|
/* Incoming video during DJ crossfade — z-index above active */
|
|
.crossfade-incoming {
|
|
z-index: 2;
|
|
}
|
|
|
|
/* Unmute overlay — shown by JS when autoplay-with-sound is blocked */
|
|
.unmute-overlay {
|
|
position: absolute;
|
|
top: 10px;
|
|
right: 10px;
|
|
z-index: 20;
|
|
background: rgba(0, 0, 0, 0.7);
|
|
color: white;
|
|
border: none;
|
|
padding: 8px 16px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
display: none;
|
|
}
|
|
|
|
/* Related content sidebar — "Up Next" */
|
|
.related-content {
|
|
margin-top: 20px;
|
|
text-align: left;
|
|
}
|
|
|
|
.related-content-header {
|
|
display: grid;
|
|
gap: 6px;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.ring-header-info {
|
|
display: grid;
|
|
grid-template-columns: auto auto auto 1fr;
|
|
gap: 8px;
|
|
align-items: center;
|
|
}
|
|
|
|
.ring-header-info .ring-progress {
|
|
justify-self: end;
|
|
}
|
|
|
|
.ring-header-controls {
|
|
display: grid;
|
|
grid-template-columns: auto auto;
|
|
gap: 16px;
|
|
justify-content: end;
|
|
align-items: center;
|
|
}
|
|
|
|
.related-content-header h3 {
|
|
margin: 0;
|
|
font-size: 0.85em;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
color: var(--text-muted, #888);
|
|
}
|
|
|
|
/* Autoplay toggle — iOS-style slider */
|
|
.watch-autoplay-label {
|
|
display: grid;
|
|
grid-template-columns: auto auto;
|
|
gap: 8px;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
}
|
|
|
|
.autoplay-label-text {
|
|
font-size: 0.75em;
|
|
color: var(--text-muted, #888);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.08em;
|
|
}
|
|
|
|
.autoplay-slider {
|
|
width: 36px;
|
|
height: 20px;
|
|
background: var(--bg-tertiary, #ccc);
|
|
border-radius: 10px;
|
|
position: relative;
|
|
transition: background 0.2s;
|
|
}
|
|
|
|
.autoplay-slider::after {
|
|
content: "";
|
|
position: absolute;
|
|
top: 2px;
|
|
left: 2px;
|
|
width: 16px;
|
|
height: 16px;
|
|
background: white;
|
|
border-radius: 50%;
|
|
transition: transform 0.2s;
|
|
}
|
|
|
|
.watch-autoplay-label input {
|
|
display: none;
|
|
}
|
|
|
|
.watch-autoplay-label input:checked + .autoplay-slider {
|
|
background: var(--blue-color, #98b6fa);
|
|
}
|
|
|
|
.watch-autoplay-label input:checked + .autoplay-slider::after {
|
|
transform: translateX(16px);
|
|
}
|
|
|
|
.related-content-row {
|
|
display: grid;
|
|
grid-template-columns: 20px 1fr 28px;
|
|
gap: 0;
|
|
align-items: center;
|
|
margin-bottom: 2px;
|
|
border-radius: 6px;
|
|
transition: background 0.15s;
|
|
}
|
|
|
|
.related-content-row:hover {
|
|
background: var(--bg-secondary, rgba(0, 0, 0, 0.04));
|
|
}
|
|
|
|
.related-content-row-watched {
|
|
opacity: 0.45;
|
|
}
|
|
.related-content-row-current {
|
|
background-color: var(--blue-color, #5871ad);
|
|
color: white;
|
|
border-radius: 4px;
|
|
padding: 4px 0;
|
|
}
|
|
.related-content-row-current .related-content-index {
|
|
color: white;
|
|
}
|
|
.related-content-now-playing {
|
|
font-weight: bold;
|
|
}
|
|
.related-content-now-playing .related-content-title {
|
|
-webkit-line-clamp: unset;
|
|
overflow: visible;
|
|
}
|
|
.related-content-row-prev {
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.ring-progress {
|
|
font-size: 0.8em;
|
|
color: var(--text-muted, #999);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.ring-loops-badge {
|
|
font-size: 0.75em;
|
|
font-weight: bold;
|
|
padding: 1px 6px;
|
|
border-radius: 10px;
|
|
background-color: var(--blue-color, #5871ad);
|
|
color: white;
|
|
}
|
|
.ring-mod-badge {
|
|
font-size: 0.65em;
|
|
font-weight: bold;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
padding: 1px 5px;
|
|
border-radius: 10px;
|
|
background-color: #48bb78;
|
|
color: white;
|
|
}
|
|
|
|
.watch-direction-label {
|
|
display: grid;
|
|
grid-template-columns: auto auto;
|
|
gap: 6px;
|
|
align-items: center;
|
|
font-size: 0.85em;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.watch-direction-label input {
|
|
display: none;
|
|
}
|
|
|
|
.watch-direction-label input:checked + .autoplay-slider {
|
|
background: var(--blue-color, #98b6fa);
|
|
}
|
|
|
|
.watch-direction-label input:checked + .autoplay-slider::after {
|
|
transform: translateX(16px);
|
|
}
|
|
|
|
.direction-label-text {
|
|
font-size: 0.85em;
|
|
color: var(--text-muted, #999);
|
|
}
|
|
|
|
.related-content-index {
|
|
font-size: 0.75em;
|
|
color: var(--text-muted, #999);
|
|
text-align: center;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
|
|
.related-content-item {
|
|
display: grid;
|
|
grid-template-columns: 58px 1fr;
|
|
gap: 10px;
|
|
padding: 6px 4px;
|
|
text-decoration: none;
|
|
color: inherit;
|
|
border-radius: 4px;
|
|
align-items: center;
|
|
min-width: 0;
|
|
}
|
|
|
|
.related-content-item img {
|
|
max-width: 58px;
|
|
max-height: 58px;
|
|
width: auto;
|
|
height: auto;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.related-content-no-thumb {
|
|
display: block;
|
|
width: 58px;
|
|
height: 58px;
|
|
border-radius: 4px;
|
|
background: var(--bg-secondary, #e8e8e8);
|
|
}
|
|
|
|
.related-content-title {
|
|
font-size: 0.82em;
|
|
line-height: 1.3;
|
|
text-align: left;
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 2;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Watch mode: audio container with album art */
|
|
.watch-audio-container {
|
|
position: relative;
|
|
text-align: center;
|
|
}
|
|
|
|
.watch-audio-container .audio-cover {
|
|
max-height: 42vh;
|
|
width: auto;
|
|
max-width: 100%;
|
|
display: block;
|
|
}
|
|
|
|
.watch-audio-container audio {
|
|
width: 100%;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
/* Watch countdown overlay — compact bottom bar with frosted glass */
|
|
.watch-countdown {
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
background: rgba(255, 255, 255, 0.75);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
display: grid;
|
|
grid-template-columns: 60px 1fr auto auto;
|
|
gap: 10px;
|
|
padding: 10px 14px;
|
|
align-items: center;
|
|
text-align: left;
|
|
z-index: 30;
|
|
border-top: 1px solid var(--border-color, #dee2e6);
|
|
}
|
|
|
|
[data-theme="dark"] .watch-countdown {
|
|
background: rgba(13, 17, 23, 0.80);
|
|
border-top: 1px solid var(--border-color, #7ab9ff);
|
|
}
|
|
|
|
.countdown-thumb {
|
|
grid-column: 1;
|
|
width: 60px;
|
|
height: auto;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.countdown-text {
|
|
grid-column: 2;
|
|
color: var(--text-primary, #333);
|
|
display: grid;
|
|
gap: 2px;
|
|
}
|
|
|
|
#countdown-title {
|
|
font-size: 0.85rem;
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
#countdown-number {
|
|
font-size: 1.5rem;
|
|
font-weight: bold;
|
|
color: var(--blue-color, #98b6fa);
|
|
}
|
|
|
|
.watch-countdown .mps-button {
|
|
padding: 6px 14px;
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
#countdown-play-now {
|
|
grid-column: 3;
|
|
}
|
|
|
|
#countdown-cancel {
|
|
grid-column: 4;
|
|
}
|
|
|
|
/* Static content countdown: flows in-place, not overlaid */
|
|
.watch-countdown-static {
|
|
position: relative;
|
|
border-top: none;
|
|
border: 1px solid var(--border-color, #dee2e6);
|
|
border-radius: 6px;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
/* Queue UI */
|
|
#watch-queue {
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
#watch-queue h4 {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.queue-item {
|
|
display: grid;
|
|
grid-template-columns: 1fr auto;
|
|
gap: 8px;
|
|
align-items: center;
|
|
padding: 6px 0;
|
|
border-bottom: 1px solid var(--border-color, #ddd);
|
|
}
|
|
|
|
.queue-item-title {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.queue-remove-btn {
|
|
background: none;
|
|
border: none;
|
|
color: var(--text-secondary, #666);
|
|
cursor: pointer;
|
|
font-size: 1.2rem;
|
|
padding: 0 4px;
|
|
}
|
|
|
|
.queue-remove-btn:hover {
|
|
color: var(--text-primary, #333);
|
|
}
|
|
|
|
/* Queue add button inside related content row */
|
|
.queue-add-btn {
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
font-size: 1.1rem;
|
|
padding: 4px;
|
|
color: var(--text-primary, #333);
|
|
border-radius: 50%;
|
|
width: 28px;
|
|
height: 28px;
|
|
display: grid;
|
|
place-items: center;
|
|
transition: background 0.15s, color 0.15s;
|
|
}
|
|
|
|
.queue-add-btn:hover {
|
|
background: var(--bg-secondary, rgba(0, 0, 0, 0.08));
|
|
color: var(--text-primary, #333);
|
|
}
|
|
|
|
/* Footer */
|
|
.mps-footer {
|
|
background-color: var(--bg-secondary, #f8f9fa);
|
|
border-top: 2px solid var(--border-color, #dee2e6);
|
|
margin-top: 40px;
|
|
padding: 40px 40px 24px;
|
|
}
|
|
|
|
.mps-footer-grid {
|
|
max-width: 100%;
|
|
margin: 0 auto 32px;
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: 28px;
|
|
}
|
|
|
|
.mps-footer-brand {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.mps-footer-logo {
|
|
font-size: 1.4em;
|
|
font-weight: 550;
|
|
color: var(--text-primary, #333);
|
|
text-decoration: none;
|
|
}
|
|
|
|
.mps-footer-logo:hover {
|
|
color: var(--blue-color, #5871ad);
|
|
}
|
|
|
|
.mps-footer-tagline {
|
|
color: var(--text-muted, #777);
|
|
font-size: 14px;
|
|
max-width: 320px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.mps-footer-group {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
.mps-footer-group-title {
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
color: var(--text-primary, #333);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.mps-footer-links {
|
|
display: grid;
|
|
gap: 8px;
|
|
}
|
|
|
|
.mps-footer-links a {
|
|
color: var(--text-muted, #777);
|
|
font-size: 14px;
|
|
font-weight: 400;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.mps-footer-links a:hover {
|
|
color: var(--green-color, #a3c765);
|
|
}
|
|
|
|
.mps-footer-ctas {
|
|
max-width: 100%;
|
|
margin: 0 auto 24px;
|
|
display: grid;
|
|
grid-template-columns: auto auto;
|
|
justify-content: start;
|
|
gap: 12px;
|
|
padding: 20px 0;
|
|
border-top: 1px solid var(--border-color, #dee2e6);
|
|
border-bottom: 1px solid var(--border-color, #dee2e6);
|
|
}
|
|
|
|
.mps-footer-ctas a.mps-button {
|
|
min-width: 160px;
|
|
font-size: 14px;
|
|
padding-top: 10px;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
.mps-footer-bottom {
|
|
text-align: center;
|
|
color: var(--text-muted, #999);
|
|
font-size: 12px;
|
|
max-width: 100%;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.mps-footer-bottom a {
|
|
color: var(--text-muted, #999);
|
|
text-decoration: underline;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.mps-footer-bottom a:hover {
|
|
color: var(--green-color, #a3c765);
|
|
}
|
|
|
|
@media (min-width: 800px) {
|
|
.mps-footer-grid {
|
|
grid-template-columns: 2fr 1fr 1fr 1fr;
|
|
gap: 32px;
|
|
}
|
|
}
|