Files
Luncher/client/src/components/modals/SpinWheelModal.scss
T
mates f042a0b831
CI / Generate TypeScript types (push) Successful in 10s
CI / Server unit tests (push) Successful in 26s
CI / Build server (push) Successful in 28s
CI / Build client (push) Successful in 42s
CI / Playwright E2E tests (push) Successful in 1m54s
CI / Build and push Docker image (push) Successful in 45s
CI / Notify (push) Successful in 2s
feat: nový vzhled Hatsune Miku
2026-10-26 08:45:35 +01:00

4181 lines
89 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Barvy výsečí — jednoduchý styl odvozuje odstíny od primární barvy,
// styl Umamusume je přebíjí vlastní paletou (viz níže)
:root {
--wheel-c0: var(--luncher-primary);
--wheel-c1: #0ea5e9;
--wheel-c2: #f59e0b;
--wheel-c3: #8b5cf6;
--wheel-c4: #ec4899;
--wheel-c5: #14b8a6;
--wheel-label: #ffffff;
--wheel-rim: var(--luncher-text);
--wheel-hub: var(--luncher-bg-card);
}
.spin-wheel-modal {
.spin-steps {
display: flex;
gap: 8px;
margin-bottom: 12px;
font-size: 0.85rem;
font-weight: 700;
span {
padding: 4px 12px;
border-radius: 999px;
background: var(--luncher-bg-hover);
color: var(--luncher-text-muted);
&.active {
background: var(--luncher-primary);
color: #fff;
}
&.done {
background: var(--luncher-primary-light);
color: var(--luncher-primary);
}
}
}
.spin-source-info {
align-self: center;
margin-left: 4px;
color: var(--luncher-text-muted);
font-weight: 600;
}
.spin-steps {
flex-wrap: wrap;
}
// Přepínač zdroje jako segmentovaná „pilulka"
.spin-source {
display: inline-flex;
gap: 2px;
padding: 3px;
border-radius: 999px;
background: var(--luncher-bg-hover);
> .btn {
padding: 6px 16px;
font-size: 0.9rem;
border: none !important;
border-radius: 999px !important;
box-shadow: none !important;
margin: 0 !important;
transform: none !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--luncher-text-secondary);
&:hover {
background: var(--luncher-bg-card);
color: var(--luncher-primary);
}
}
}
.spin-layout {
display: grid;
grid-template-columns: minmax(0, 1fr) 240px;
gap: 20px;
align-items: start;
@media (max-width: 768px) {
grid-template-columns: minmax(0, 1fr);
}
}
.spin-wheel-column {
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
min-width: 0;
}
.spin-empty {
width: 100%;
max-width: 380px;
aspect-ratio: 1;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 24px;
border: 2px dashed var(--luncher-border);
border-radius: 50%;
color: var(--luncher-text-muted);
}
.spin-result {
min-height: 1.6em;
font-size: 1.15rem;
text-align: center;
opacity: 0;
transform: translateY(6px);
transition: opacity 0.3s ease, transform 0.3s ease;
&.visible {
opacity: 1;
transform: none;
}
small {
color: var(--luncher-text-muted);
}
}
.spin-actions {
display: flex;
flex-wrap: wrap;
gap: 8px;
justify-content: center;
}
.spin-button {
min-width: 160px;
}
.spin-options {
border: 1px solid var(--luncher-border);
border-radius: var(--luncher-radius);
background: var(--luncher-bg);
max-height: 440px;
display: flex;
flex-direction: column;
min-width: 0;
ul {
list-style: none;
margin: 0;
padding: 4px;
overflow-y: auto;
}
li {
display: flex;
align-items: center;
gap: 8px;
padding: 4px 6px;
border-radius: var(--luncher-radius-sm);
font-size: 0.85rem;
&:hover {
background: var(--luncher-bg-hover);
}
}
}
.spin-options-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 10px;
border-bottom: 1px solid var(--luncher-border);
font-weight: 700;
font-size: 0.85rem;
}
.spin-restore {
background: none;
border: none;
color: var(--luncher-primary);
font-size: 0.8rem;
font-weight: 600;
padding: 0;
}
.spin-dot {
flex: none;
width: 10px;
height: 10px;
border-radius: 50%;
}
.spin-option-label {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.spin-option-kind {
color: var(--luncher-text-muted);
font-size: 0.7rem;
}
.spin-remove {
flex: none;
background: none;
border: none;
color: var(--luncher-text-muted);
padding: 2px 6px;
border-radius: 4px;
&:hover:not(:disabled) {
color: var(--luncher-danger);
background: var(--luncher-bg-hover);
}
}
}
.spin-wheel {
position: relative;
width: 100%;
max-width: 380px;
aspect-ratio: 1;
}
.spin-wheel-svg {
width: 100%;
height: 100%;
display: block;
filter: drop-shadow(0 6px 12px rgb(0 0 0 / 0.18));
}
.spin-wheel-pointer {
position: absolute;
top: -6px;
left: 50%;
transform: translateX(-50%);
z-index: 2;
width: 0;
height: 0;
border-left: 14px solid transparent;
border-right: 14px solid transparent;
border-top: 26px solid var(--luncher-danger);
filter: drop-shadow(0 2px 2px rgb(0 0 0 / 0.3));
}
.spin-wheel-rim {
fill: var(--wheel-rim);
}
.spin-wheel-hub {
fill: var(--wheel-hub);
stroke: var(--wheel-rim);
stroke-width: 4;
}
.spin-seg {
stroke: var(--wheel-hub);
stroke-width: 1.5;
}
.spin-seg-label {
fill: var(--wheel-label);
font-weight: 700;
pointer-events: none;
paint-order: stroke;
stroke: rgb(0 0 0 / 0.25);
stroke-width: 2px;
}
@for $i from 0 through 5 {
.spin-seg-#{$i} {
fill: var(--wheel-c#{$i});
background: var(--wheel-c#{$i});
}
}
@media (prefers-reduced-motion: reduce) {
.spin-wheel-svg {
transition-duration: 0.6s !important;
}
}
.spin-wheel-modal .modal-header {
gap: 12px;
flex-wrap: wrap;
.modal-title {
flex: 1;
min-width: 0;
h2 {
margin: 0;
}
}
}
// ============================================
// STYL UMAMUSUME kola štěstí (dle stylu zvoleného v nastavení).
// Trávník dostihové dráhy, růžové a nebeské akcenty, zlaté lemy,
// zaoblené tučné písmo a „herní" tlačítka s vystouplým spodkem.
// ============================================
.spin-wheel-modal.spin-theme-umamusume {
--uma-font: 'M PLUS Rounded 1c', 'Nunito', 'Inter', sans-serif;
--uma-turf: #5cc23d;
--uma-turf-deep: #2e9a3a;
--uma-turf-shadow: #1f7a2c;
--uma-pink: #ff6fa3;
--uma-pink-deep: #e84d86;
--uma-gold: #ffc531;
--uma-panel: #f4fbef;
--uma-border: #c6ebb2;
--uma-text: #1d3322;
--wheel-c0: var(--uma-turf);
--wheel-c1: var(--uma-pink);
--wheel-c2: #43b8f0;
--wheel-c3: #f2a91a;
--wheel-c4: #a078f0;
--wheel-c5: #ff8a3d;
--wheel-rim: var(--uma-gold);
--wheel-hub: #ffffff;
font-family: var(--uma-font);
.modal-content {
border: 4px solid var(--uma-border);
border-radius: 22px;
overflow: hidden;
background-color: #fff;
background-image: repeating-linear-gradient(135deg, rgb(92 194 61 / 0.06) 0 16px, transparent 16px 32px);
color: var(--uma-text);
}
.modal-header {
background:
repeating-linear-gradient(115deg, rgb(255 255 255 / 0.13) 0 12px, transparent 12px 24px),
linear-gradient(90deg, var(--uma-turf-deep), var(--uma-turf));
border-bottom: 4px solid var(--uma-gold);
h2 {
color: #fff;
font-family: var(--uma-font);
font-weight: 800;
text-shadow: 0 2px 0 var(--uma-turf-shadow);
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 3px dashed var(--uma-border);
}
.spin-steps span {
font-family: var(--uma-font);
background: #e7f3e0;
color: #7c9a82;
clip-path: polygon(8px 0, 100% 0, calc(100% - 8px) 100%, 0 100%);
border-radius: 0;
padding: 4px 18px;
&.active {
background: linear-gradient(90deg, var(--uma-pink-deep), var(--uma-pink));
color: #fff;
}
&.done {
background: var(--uma-turf);
color: #fff;
}
}
.btn {
font-family: var(--uma-font);
font-weight: 800;
border-radius: 999px;
transition: transform 0.08s ease, box-shadow 0.08s ease, background 0.2s ease;
&:active:not(:disabled) {
transform: translateY(3px);
box-shadow: 0 1px 0 var(--uma-btn-shadow, transparent);
}
}
.btn-primary {
--uma-btn-shadow: var(--uma-turf-shadow);
background: linear-gradient(180deg, #7ad85a, var(--uma-turf-deep));
box-shadow: 0 4px 0 var(--uma-turf-shadow);
color: #fff;
text-shadow: 0 1px 0 rgb(0 0 0 / 0.2);
&:disabled {
background: #b9cbbd;
box-shadow: 0 4px 0 #97aa9b;
}
}
.spin-button {
--uma-btn-shadow: #b8335f;
background: linear-gradient(180deg, #ff8db5, var(--uma-pink-deep));
box-shadow: 0 5px 0 #b8335f;
font-size: 1.15rem;
padding: 12px 36px;
}
.btn-outline-primary {
--uma-btn-shadow: var(--uma-border);
background: #fff;
border: 2px solid var(--uma-turf);
color: var(--uma-turf-deep);
box-shadow: 0 4px 0 var(--uma-border);
&:hover {
background: #eaf8e2;
color: var(--uma-turf-deep);
}
}
.btn-secondary {
--uma-btn-shadow: #d4ddd6;
background: #fff;
border: 2px solid #d4ddd6;
color: var(--uma-text);
box-shadow: 0 4px 0 #d4ddd6;
}
.spin-source {
background: #e7f3e0;
> .btn-primary {
background: linear-gradient(180deg, #7ad85a, var(--uma-turf-deep));
box-shadow: 0 2px 0 var(--uma-turf-shadow) !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--uma-turf-deep);
&:hover {
background: #fff;
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--uma-pink-deep);
}
}
.spin-options {
background: var(--uma-panel);
border: 3px solid var(--uma-border);
border-radius: 16px;
li:hover {
background: #fff0f6;
}
}
.spin-options-header {
border-bottom: 3px solid var(--uma-border);
color: var(--uma-turf-deep);
}
.spin-empty {
border-color: var(--uma-border);
}
.spin-wheel-pointer {
border-top-color: var(--uma-pink-deep);
}
.spin-seg {
stroke: #fff;
stroke-width: 2.5;
}
.spin-seg-label {
font-family: var(--uma-font);
font-weight: 800;
}
}
// Tmavý režim — noční dostih pod reflektory
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-umamusume {
--uma-panel: #19223d;
--uma-border: #2c3a66;
--uma-text: #f3f6ff;
--wheel-hub: #19223d;
.modal-content {
background-color: #10172b;
background-image: repeating-linear-gradient(135deg, rgb(255 255 255 / 0.03) 0 16px, transparent 16px 32px);
}
.spin-steps span:not(.active):not(.done) {
background: #222d4f;
color: #7d89ad;
}
.btn-outline-primary, .btn-secondary {
background: #19223d;
color: #f3f6ff;
}
.spin-source {
background: #222d4f;
> .btn-outline-primary {
background: transparent;
color: #b8c2e0;
&:hover {
background: #19223d;
color: #fff;
}
}
}
.spin-options li:hover {
background: #2a2344;
}
}
// ============================================
// STYL MY LITTLE PONY kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách Mane 6, duhový lem Rainbow Dash, fialová Twilight
// a růžová Pinkie Pie, kulatá „bonbonová" tlačítka.
// ============================================
.spin-wheel-modal.spin-theme-mlp {
--mlp-font: 'Fredoka', 'Nunito', 'Inter', sans-serif;
--mlp-twilight: #8e4fd1;
--mlp-twilight-deep: #6a35b0;
--mlp-twilight-shadow: #4b2287;
--mlp-pinkie: #f06aa6;
--mlp-pinkie-deep: #d6417f;
--mlp-panel: #faf5ff;
--mlp-border: #e5d4f7;
--mlp-text: #2e1f47;
// Mane 6: Twilight, Pinkie, Rainbow Dash, Applejack, Fluttershy, Rarity
--wheel-c0: #9b5fe0;
--wheel-c1: #f06aa6;
--wheel-c2: #1e98d3;
--wheel-c3: #f37033;
--wheel-c4: #e3b829;
--wheel-c5: #5b4fc9;
--wheel-rim: #ec3d8f;
--wheel-hub: #ffffff;
font-family: var(--mlp-font);
.modal-content {
border: 4px solid var(--mlp-border);
border-radius: 26px;
overflow: hidden;
background-color: #fff;
background-image:
radial-gradient(circle at 20% 30%, rgb(142 79 209 / 0.10) 0 2px, transparent 3px),
radial-gradient(circle at 70% 80%, rgb(240 106 166 / 0.10) 0 2px, transparent 3px);
background-size: 120px 120px, 170px 170px;
color: var(--mlp-text);
}
.modal-header {
background:
linear-gradient(90deg, #ee4144 0 16.6%, #f37033 16.6% 33.3%, #fdf6af 33.3% 50%, #62bc4d 50% 66.6%, #1e98d3 66.6% 83.3%, #672f89 83.3% 100%) bottom / 100% 5px no-repeat,
linear-gradient(90deg, var(--mlp-twilight-deep), var(--mlp-twilight) 60%, var(--mlp-pinkie));
border-bottom: none;
h2 {
color: #fff;
font-family: var(--mlp-font);
font-weight: 700;
text-shadow: 0 2px 0 var(--mlp-twilight-shadow);
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 3px dotted var(--mlp-border);
}
.spin-steps span {
font-family: var(--mlp-font);
background: #f1e6fc;
color: #9a8ab3;
border-radius: 999px;
padding: 4px 16px;
&.active {
background: linear-gradient(90deg, var(--mlp-twilight-deep), var(--mlp-pinkie));
color: #fff;
}
&.done {
background: var(--mlp-twilight);
color: #fff;
}
}
.btn {
font-family: var(--mlp-font);
font-weight: 600;
border-radius: 999px;
transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.2s ease;
&:active:not(:disabled) {
transform: translateY(3px);
box-shadow: 0 1px 0 var(--mlp-btn-shadow, transparent);
}
}
.btn-primary {
--mlp-btn-shadow: var(--mlp-twilight-shadow);
background: linear-gradient(180deg, #b07ae6, var(--mlp-twilight-deep));
border: none;
box-shadow: 0 4px 0 var(--mlp-twilight-shadow);
color: #fff;
text-shadow: 0 1px 0 rgb(0 0 0 / 0.2);
&:disabled {
background: #c9bdd9;
box-shadow: 0 4px 0 #a99cbc;
}
}
.spin-button {
--mlp-btn-shadow: #a52c63;
background: linear-gradient(180deg, #ff94c4, var(--mlp-pinkie-deep));
box-shadow: 0 5px 0 #a52c63, 0 0 18px rgb(240 106 166 / 0.45);
font-size: 1.15rem;
padding: 12px 36px;
}
.btn-outline-primary {
--mlp-btn-shadow: var(--mlp-border);
background: #fff;
border: 2px solid var(--mlp-twilight);
color: var(--mlp-twilight-deep);
box-shadow: 0 4px 0 var(--mlp-border);
&:hover {
background: #f1e6fc;
color: var(--mlp-twilight-deep);
}
}
.btn-secondary {
--mlp-btn-shadow: var(--mlp-border);
background: #fff;
border: 2px solid var(--mlp-border);
color: var(--mlp-text);
box-shadow: 0 4px 0 var(--mlp-border);
}
.spin-source {
background: #f1e6fc;
> .btn-primary {
background: linear-gradient(180deg, #b07ae6, var(--mlp-twilight-deep));
box-shadow: 0 2px 0 var(--mlp-twilight-shadow) !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--mlp-twilight-deep);
&:hover {
background: #fff;
}
}
}
.spin-result {
font-weight: 700;
strong {
color: var(--mlp-pinkie-deep);
}
}
.spin-options {
background: var(--mlp-panel);
border: 3px solid var(--mlp-border);
border-radius: 18px;
li:hover {
background: #fff0f7;
}
}
.spin-options-header {
border-bottom: 3px solid var(--mlp-border);
color: var(--mlp-twilight-deep);
}
.spin-empty {
border-color: var(--mlp-border);
}
.spin-wheel-pointer {
border-top-color: var(--mlp-pinkie-deep);
}
.spin-seg {
stroke: #fff;
stroke-width: 2.5;
}
.spin-seg-label {
font-family: var(--mlp-font);
font-weight: 700;
}
}
// Tmavý režim — noční obloha princezny Luny
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-mlp {
--mlp-panel: #1d1745;
--mlp-border: #362c6e;
--mlp-text: #f2edff;
--wheel-hub: #1d1745;
.modal-content {
background-color: #120e2e;
background-image:
radial-gradient(circle at 20% 30%, rgb(255 255 255 / 0.5) 0 1.5px, transparent 2.5px),
radial-gradient(circle at 70% 80%, rgb(183 198 255 / 0.35) 0 1px, transparent 2px);
}
.spin-steps span:not(.active):not(.done) {
background: #282058;
color: #8a7fb5;
}
.btn-outline-primary, .btn-secondary {
background: #1d1745;
color: #f2edff;
}
.spin-source {
background: #282058;
> .btn-outline-primary {
background: transparent;
color: #c2b6e6;
&:hover {
background: #1d1745;
color: #fff;
}
}
}
.spin-options li:hover {
background: #2e2160;
}
}
// ============================================
// STYL HELL GIRL kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách soumraku a pekla, rudá nit jako lem,
// černá tuš, papír washi a ostrá tlačítka s písmem mincho.
// ============================================
.spin-wheel-modal.spin-theme-hellgirl {
--hg-font: 'Shippori Mincho', 'Noto Serif JP', 'Georgia', serif;
--hg-crimson: #a3122a;
--hg-crimson-deep: #7a0c1f;
--hg-crimson-shadow: #4a0612;
--hg-panel: #fffbf5;
--hg-border: #dccbbb;
--hg-text: #1c1012;
--wheel-c0: #a3122a;
--wheel-c1: #1f1416;
--wheel-c2: #c8452a;
--wheel-c3: #4b1a4f;
--wheel-c4: #6e0b1a;
--wheel-c5: #9a6b1f;
--wheel-rim: #c8102e;
--wheel-hub: #12070a;
font-family: var(--hg-font);
.modal-content {
border: 1px solid var(--hg-crimson);
border-radius: 6px;
overflow: hidden;
background: linear-gradient(180deg, #f3d9cc, #f4ece0 220px);
color: var(--hg-text);
}
.modal-header {
background:
linear-gradient(90deg, transparent, #c8102e 12%, #e8344f 50%, #c8102e 88%, transparent) bottom / 100% 2px no-repeat,
linear-gradient(90deg, #1e0a1c, #4a0f2a 35%, #8e0f24 70%, #c8452a);
border-bottom: none;
h2 {
color: #fff4ee;
font-family: var(--hg-font);
font-weight: 800;
letter-spacing: 0.5px;
text-shadow: 0 0 10px rgb(232 52 79 / 0.5);
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 1px solid var(--hg-border);
}
.spin-steps span {
font-family: var(--hg-font);
background: #eadfd2;
color: #8c7672;
border-radius: 2px;
padding: 4px 16px;
&.active {
background: linear-gradient(90deg, #1c0a10, var(--hg-crimson-deep));
color: #fff4ee;
}
&.done {
background: var(--hg-crimson);
color: #fff4ee;
}
}
.btn {
font-family: var(--hg-font);
font-weight: 700;
border-radius: 2px;
transition: transform 0.12s ease, box-shadow 0.2s ease, background 0.2s ease;
&:active:not(:disabled) {
transform: translateY(1px);
}
}
.btn-primary {
background: linear-gradient(180deg, #c01733, var(--hg-crimson-deep));
border: 1px solid var(--hg-crimson-shadow);
color: #fff4ee;
box-shadow: inset 0 0 0 2px rgb(255 255 255 / 0.12);
&:disabled {
background: #b9a3a0;
border-color: #9c8582;
box-shadow: none;
}
}
// Tlačítko roztočení — černá deska s rudou září
.spin-button {
background: linear-gradient(180deg, #2a1216, #12070a);
border: 1px solid #c8102e;
box-shadow: 0 0 0 3px rgb(200 16 46 / 0.25), 0 0 18px rgb(200 16 46 / 0.45);
letter-spacing: 1px;
font-size: 1.15rem;
padding: 12px 36px;
&:hover:not(:disabled) {
background: linear-gradient(180deg, #3a1219, #1c0a10);
box-shadow: 0 0 0 3px rgb(200 16 46 / 0.4), 0 0 24px rgb(200 16 46 / 0.65);
}
}
.btn-outline-primary {
background: transparent;
border: 1px solid var(--hg-crimson);
color: var(--hg-crimson);
&:hover {
background: var(--hg-crimson);
color: #fff4ee;
}
}
.btn-secondary {
background: var(--hg-panel);
border: 1px solid var(--hg-border);
color: var(--hg-text);
}
.spin-source {
background: #eadfd2;
> .btn-primary {
background: linear-gradient(180deg, #c01733, var(--hg-crimson-deep));
}
> .btn-outline-primary {
background: transparent;
color: var(--hg-crimson-deep);
&:hover {
background: var(--hg-panel);
}
}
}
.spin-result {
font-weight: 700;
strong {
color: var(--hg-crimson);
}
}
.spin-options {
background: var(--hg-panel);
border: 1px solid var(--hg-border);
border-top: 3px solid var(--hg-crimson);
border-radius: 3px;
li:hover {
background: #f8e6e2;
}
}
.spin-options-header {
border-bottom: 1px solid var(--hg-border);
color: var(--hg-crimson-deep);
}
.spin-empty {
border-color: var(--hg-border);
}
.spin-wheel-pointer {
border-top-color: #c8102e;
filter: drop-shadow(0 0 4px rgb(200 16 46 / 0.7));
}
.spin-wheel-rim {
filter: drop-shadow(0 0 6px rgb(200 16 46 / 0.6));
}
.spin-seg {
stroke: #12070a;
stroke-width: 2;
}
.spin-seg-label {
font-family: var(--hg-font);
font-weight: 700;
}
}
// Tmavý režim — půlnoc Pekelné korespondence
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-hellgirl {
--hg-crimson: #e0334f;
--hg-crimson-deep: #b81c38;
--hg-panel: #170c0f;
--hg-border: #3d1c22;
--hg-text: #f3e6e2;
--wheel-c1: #2e1a1e;
.modal-content {
background:
radial-gradient(ellipse 120% 45% at 50% 115%, rgb(140 12 36 / 0.35), transparent 70%),
linear-gradient(180deg, #1c0a12, #0c0608 260px);
}
.spin-steps span:not(.active):not(.done) {
background: #221216;
color: #8a6c6a;
}
.btn-outline-primary, .btn-secondary {
background: #170c0f;
color: #f3e6e2;
}
.spin-source {
background: #221216;
> .btn-outline-primary {
background: transparent;
color: #c9aeaa;
&:hover {
background: #170c0f;
color: #fff;
}
}
}
.spin-options li:hover {
background: #2a1218;
}
}
// ============================================
// STYL K-ON! kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách členek Houkago Tea Time, tmavě modré školní sako,
// notový sešit a tlačítko roztočení jako kytara Gitah (cherry sunburst).
// ============================================
.spin-wheel-modal.spin-theme-kon {
--kon-font: 'Zen Maru Gothic', 'M PLUS Rounded 1c', 'Nunito', sans-serif;
--kon-blazer: #27315f;
--kon-blazer-light: #3a4782;
--kon-blazer-shadow: #171d3d;
--kon-cherry: #c43358;
--kon-cherry-deep: #a3234a;
--kon-sunburst: #f2a33a;
--kon-panel: #fffaf0;
--kon-border: #e6d8c0;
--kon-text: #222849;
// Yui, Mio, Ritsu, Azusa, Ui a tmavě modrá školní
--wheel-c0: #d43f62;
--wheel-c1: #3d6fc4;
--wheel-c2: #f2b81d;
--wheel-c3: #8a6bc7;
--wheel-c4: #e46f9a;
--wheel-c5: #27315f;
--wheel-rim: #27315f;
--wheel-hub: #fffaf0;
font-family: var(--kon-font);
.modal-content {
border: 3px solid var(--kon-border);
border-radius: 22px;
overflow: hidden;
background:
repeating-linear-gradient(180deg, transparent 0 27px, rgb(61 111 196 / 0.07) 27px 28px),
var(--kon-panel);
color: var(--kon-text);
}
.modal-header {
background:
linear-gradient(90deg, #d43f62 0 20%, #3d6fc4 20% 40%, #f2b81d 40% 60%, #e8cf7a 60% 80%, #8a6bc7 80% 100%) bottom / 100% 4px no-repeat,
linear-gradient(90deg, var(--kon-blazer-shadow), var(--kon-blazer) 40%, var(--kon-blazer-light));
border-bottom: none;
h2 {
color: #fff;
font-family: var(--kon-font);
font-weight: 900;
text-shadow: 0 2px 0 var(--kon-blazer-shadow);
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 2px dashed var(--kon-border);
}
.spin-steps span {
font-family: var(--kon-font);
background: #f3e8d4;
color: #8a8aa3;
border-radius: 10px;
padding: 4px 16px;
&.active {
background: var(--kon-blazer);
color: #fff;
}
&.done {
background: var(--kon-cherry);
color: #fff;
}
}
.btn {
font-family: var(--kon-font);
font-weight: 700;
border-radius: 10px;
transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.2s ease;
&:active:not(:disabled) {
transform: translateY(3px);
box-shadow: 0 1px 0 var(--kon-btn-shadow, transparent);
}
}
.btn-primary {
--kon-btn-shadow: var(--kon-blazer);
background: linear-gradient(180deg, #e0567a, var(--kon-cherry-deep));
border: none;
box-shadow: 0 4px 0 var(--kon-blazer);
color: #fff;
text-shadow: 0 1px 0 rgb(0 0 0 / 0.2);
&:disabled {
background: #c8c3cf;
box-shadow: 0 4px 0 #a5a1b0;
}
}
// Tlačítko roztočení — lak kytary Gitah (jantarový střed, třešňové okraje)
.spin-button {
--kon-btn-shadow: var(--kon-blazer);
background: radial-gradient(ellipse 70% 130% at 50% 45%, #ffd27a, var(--kon-sunburst) 25%, var(--kon-cherry) 65%, #6e1530);
box-shadow: 0 5px 0 var(--kon-blazer), 0 0 18px rgb(242 163 58 / 0.45);
font-size: 1.15rem;
padding: 12px 36px;
}
.btn-outline-primary {
--kon-btn-shadow: var(--kon-border);
background: #fff;
border: 2px solid var(--kon-blazer);
color: var(--kon-blazer);
box-shadow: 0 4px 0 var(--kon-border);
&:hover {
background: var(--kon-blazer);
color: #fff;
}
}
.btn-secondary {
--kon-btn-shadow: var(--kon-border);
background: #fff;
border: 2px solid var(--kon-border);
color: var(--kon-text);
box-shadow: 0 4px 0 var(--kon-border);
}
.spin-source {
background: #f3e8d4;
> .btn-primary {
background: linear-gradient(180deg, #e0567a, var(--kon-cherry-deep));
box-shadow: 0 2px 0 var(--kon-blazer) !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--kon-blazer);
&:hover {
background: #fff;
}
}
}
.spin-result {
font-weight: 700;
strong {
color: var(--kon-cherry);
}
}
.spin-options {
background: var(--kon-panel);
border: 2px solid var(--kon-border);
border-radius: 16px;
li:hover {
background: #fdeee0;
}
}
.spin-options-header {
border-bottom: 2px solid var(--kon-border);
color: var(--kon-blazer);
}
.spin-empty {
border-color: var(--kon-border);
}
// Ukazatel jako trsátko
.spin-wheel-pointer {
border-top-color: var(--kon-cherry);
filter: drop-shadow(0 2px 0 var(--kon-blazer));
}
.spin-seg {
stroke: #fffaf0;
stroke-width: 2.5;
}
.spin-seg-label {
font-family: var(--kon-font);
font-weight: 700;
}
}
// Tmavý režim — večerní koncert pod reflektory
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-kon {
--kon-cherry: #ff7a9a;
--kon-panel: #171c42;
--kon-border: #2c3566;
--kon-text: #f1f0ff;
--wheel-c5: #4a5ab0;
--wheel-rim: #8fb2ff;
--wheel-hub: #171c42;
.modal-content {
background:
radial-gradient(ellipse 45% 60% at 10% -10%, rgb(255 122 154 / 0.18), transparent 70%),
radial-gradient(ellipse 45% 60% at 90% -10%, rgb(255 209 102 / 0.14), transparent 70%),
#0e1230;
}
.spin-steps span:not(.active):not(.done) {
background: #212858;
color: #8085b3;
}
.btn-outline-primary, .btn-secondary {
background: #171c42;
color: #f1f0ff;
}
.btn-outline-primary {
border-color: #8fb2ff;
&:hover {
background: #2b367a;
}
}
.spin-source {
background: #212858;
> .btn-outline-primary {
background: transparent;
color: #bfc2e6;
&:hover {
background: #171c42;
color: #fff;
}
}
}
.spin-options-header {
color: #c9d6ff;
}
.spin-options li:hover {
background: #232a5c;
}
}
// ============================================
// STYL BOCCHI THE ROCK! kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách Kessoku Band, černé linky a tvrdé stíny jako na flyeru
// z live house STARRY, střed kola jako žlutá kostička z vlasů Bocchi.
// ============================================
.spin-wheel-modal.spin-theme-bocchi {
--bocchi-font: 'M PLUS Rounded 1c', 'Nunito', sans-serif;
--bocchi-display: 'Dela Gothic One', 'M PLUS Rounded 1c', sans-serif;
--bocchi-pink: #cc3570;
--bocchi-pink-deep: #a8245a;
--bocchi-ink: #1d1a22;
--bocchi-line: #1d1a22;
--bocchi-panel: #ffffff;
--bocchi-text: #1d1a22;
// Bocchi, Nijika, Ryo, Kita, Les Paul a světle růžová
--wheel-c0: #e0457b;
--wheel-c1: #e8b400;
--wheel-c2: #3a63c9;
--wheel-c3: #d93a30;
--wheel-c4: #2b2530;
--wheel-c5: #f07fa8;
--wheel-rim: #1d1a22;
--wheel-hub: #ffcf33;
font-family: var(--bocchi-font);
.modal-content {
border: 3px solid var(--bocchi-line);
border-radius: 12px;
overflow: hidden;
background:
radial-gradient(circle, rgb(224 69 123 / 0.12) 0 1.4px, transparent 1.9px) 0 0 / 12px 12px,
#fff6f9;
color: var(--bocchi-text);
}
.modal-header {
background:
linear-gradient(90deg, #e0457b 0 25%, #ffcf33 25% 50%, #3a63c9 50% 75%, #d93a30 75% 100%) bottom / 100% 5px no-repeat,
#0f0d12;
border-bottom: none;
h2 {
color: #fff;
font-family: var(--bocchi-display);
font-weight: 400;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 2px solid var(--bocchi-line);
}
.spin-steps span {
font-family: var(--bocchi-font);
font-weight: 800;
background: #f3e7ed;
color: #8f8597;
border: 2px solid transparent;
border-radius: 6px;
padding: 4px 16px;
&.active {
background: #ffcf33;
color: var(--bocchi-ink);
border-color: var(--bocchi-ink);
box-shadow: 3px 3px 0 var(--bocchi-pink);
}
&.done {
background: var(--bocchi-ink);
color: #fff;
}
}
.btn {
font-family: var(--bocchi-font);
font-weight: 800;
border-radius: 6px;
transition: transform 0.1s ease, box-shadow 0.1s ease, background 0.2s ease;
&:active:not(:disabled) {
transform: translate(3px, 3px);
box-shadow: none;
}
}
.btn-primary {
background: var(--bocchi-pink);
border: 2px solid var(--bocchi-ink);
box-shadow: 3px 3px 0 var(--bocchi-ink);
color: #fff;
&:disabled {
background: #cfc6d3;
border-color: #8f8597;
box-shadow: 3px 3px 0 #8f8597;
}
}
// Tlačítko roztočení — žlutá samolepka s růžovým a černým stínem
.spin-button {
font-family: var(--bocchi-display);
font-weight: 400;
background: #ffcf33;
color: var(--bocchi-ink);
border: 3px solid var(--bocchi-ink);
box-shadow: 4px 4px 0 var(--bocchi-pink), 7px 7px 0 var(--bocchi-ink);
font-size: 1.15rem;
padding: 12px 36px;
&:hover:not(:disabled) {
background: #ffd94f;
color: var(--bocchi-ink);
}
}
.btn-outline-primary {
background: #fff;
border: 2px solid var(--bocchi-line);
color: var(--bocchi-pink);
box-shadow: 3px 3px 0 var(--bocchi-ink);
&:hover {
background: #ffe4ee;
color: var(--bocchi-pink-deep);
}
}
.btn-secondary {
background: #fff;
border: 2px solid var(--bocchi-line);
color: var(--bocchi-text);
box-shadow: 3px 3px 0 var(--bocchi-ink);
}
.spin-source {
background: #f3e7ed;
> .btn-primary {
background: var(--bocchi-pink);
box-shadow: none !important;
}
> .btn-outline-primary {
background: transparent;
box-shadow: none;
color: var(--bocchi-ink);
&:hover {
background: #fff;
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--bocchi-pink);
}
}
.spin-options {
background: var(--bocchi-panel);
border: 2px solid var(--bocchi-line);
border-radius: 10px;
box-shadow: 4px 4px 0 var(--bocchi-ink);
li:hover {
background: #fff0f5;
}
}
.spin-options-header {
border-bottom: 2px solid var(--bocchi-line);
color: var(--bocchi-ink);
}
.spin-empty {
border-color: var(--bocchi-line);
}
.spin-wheel-pointer {
border-top-color: var(--bocchi-pink);
filter: drop-shadow(2px 2px 0 var(--bocchi-ink));
}
.spin-seg {
stroke: #1d1a22;
stroke-width: 2.5;
}
.spin-seg-label {
font-family: var(--bocchi-font);
font-weight: 800;
}
}
// Tmavý režim — koncert v live house STARRY
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-bocchi {
--bocchi-pink: #ff6fa0;
--bocchi-pink-deep: #e0457b;
--bocchi-line: #5a4d66;
--bocchi-panel: #1d1a24;
--bocchi-text: #f5eff8;
--wheel-c4: #4a3f58;
.modal-content {
background:
radial-gradient(circle, rgb(255 111 160 / 0.10) 0 1.4px, transparent 1.9px) 0 0 / 12px 12px,
radial-gradient(ellipse 40% 55% at 15% -10%, rgb(255 111 160 / 0.22), transparent 70%),
radial-gradient(ellipse 40% 55% at 85% -10%, rgb(125 156 255 / 0.20), transparent 70%),
#121016;
}
.spin-steps span:not(.active):not(.done) {
background: #282231;
color: #8f8499;
}
.spin-steps span.done {
background: #3a3246;
}
.btn-primary {
color: #1d1a22;
}
.btn-outline-primary, .btn-secondary {
background: #1d1a24;
color: #f5eff8;
box-shadow: 3px 3px 0 #8c2350;
}
.spin-source {
background: #282231;
> .btn-outline-primary {
background: transparent;
box-shadow: none;
color: #c9bfd2;
&:hover {
background: #1d1a24;
color: #fff;
}
}
}
.spin-options {
box-shadow: 4px 4px 0 #8c2350;
}
.spin-options-header {
color: #ffcf33;
}
.spin-options li:hover {
background: #2e2236;
}
}
// ============================================
// STYL NEON GENESIS EVANGELION kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách NERV a Evangelionů (oranžová, rudá, Unit-01 fialová a zelená,
// Unit-00 modrá), ostré hrany a výstražné pruhy, střed kola jako jádro Anděla.
// ============================================
.spin-wheel-modal.spin-theme-evangelion {
--eva-font: 'Barlow Condensed', 'Arial Narrow', sans-serif;
--eva-display: 'Shippori Mincho', 'Noto Serif JP', serif;
--eva-orange: #f26b00;
--eva-orange-text: #b84d00;
--eva-red: #d81e1e;
--eva-line: #c9c6bd;
--eva-panel: #ffffff;
--eva-text: #111214;
// NERV oranžová, Unit-01 fialová a zelená, Unit-02 rudá, Unit-00 modrá a černá velína
--wheel-c0: #f26b00;
--wheel-c1: #5b2a86;
--wheel-c2: #d81e1e;
--wheel-c3: #3f8a2a;
--wheel-c4: #2f6fb3;
--wheel-c5: #111214;
--wheel-rim: #111214;
--wheel-hub: #d81e1e;
font-family: var(--eva-font);
.modal-content {
border: 1px solid var(--eva-orange);
border-radius: 0;
overflow: hidden;
background: #f1efe9;
color: var(--eva-text);
}
.modal-header {
background:
repeating-linear-gradient(-45deg, #f26b00 0 10px, #111214 10px 20px) bottom / 100% 5px no-repeat,
#0d0e10;
border-bottom: none;
border-radius: 0;
h2 {
color: #fff;
font-family: var(--eva-display);
font-weight: 800;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 1px solid var(--eva-line);
}
.spin-steps span {
font-family: var(--eva-font);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
background: #e3e0d8;
color: #75777e;
border-radius: 0;
padding: 4px 16px;
&.active {
background: var(--eva-orange);
color: #000;
}
&.done {
background: #111214;
color: #fff;
}
}
.btn {
font-family: var(--eva-font);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
border-radius: 0;
}
.btn-primary {
background: var(--eva-orange);
border: 1px solid var(--eva-orange);
color: #000;
&:hover:not(:disabled) {
background: #ff8a1f;
border-color: #ff8a1f;
color: #000;
}
&:disabled {
background: #c9c6bd;
border-color: #c9c6bd;
color: #5f6168;
}
}
// Tlačítko roztočení — aktivační spínač s výstražnými pruhy kolem
.spin-button {
font-size: 1.2rem;
letter-spacing: 0.2em;
padding: 12px 36px;
box-shadow: 0 0 0 3px #111214;
&:hover:not(:disabled) {
box-shadow: 0 0 0 3px #111214, 0 0 0 4px var(--eva-red), 0 0 16px rgb(216 30 30 / 0.5);
}
&:active:not(:disabled) {
background: var(--eva-red);
border-color: var(--eva-red);
color: #fff;
}
}
.btn-outline-primary {
background: transparent;
border: 1px solid var(--eva-orange);
color: var(--eva-orange-text);
&:hover {
background: var(--eva-orange);
color: #000;
}
}
.btn-secondary {
background: #2b2d31;
border: 1px solid #2b2d31;
color: #fff;
}
.spin-source {
background: #e3e0d8;
border-radius: 0;
> .btn {
border-radius: 0 !important;
}
> .btn-primary {
box-shadow: none !important;
}
> .btn-outline-primary {
border-color: transparent;
color: var(--eva-text);
&:hover {
background: #fff;
color: var(--eva-text);
}
}
}
.spin-result {
font-weight: 700;
letter-spacing: 0.03em;
strong {
color: var(--eva-orange-text);
}
}
.spin-options {
background: var(--eva-panel);
border: 1px solid var(--eva-line);
border-top: 3px solid var(--eva-orange);
border-radius: 0;
li:hover {
background: #fff3e6;
}
}
.spin-options-header {
border-bottom: 1px solid var(--eva-line);
color: var(--eva-orange-text);
text-transform: uppercase;
letter-spacing: 0.1em;
}
.spin-empty {
border-color: var(--eva-line);
border-radius: 0;
}
.spin-wheel-pointer {
border-top-color: var(--eva-red);
filter: drop-shadow(0 0 4px rgb(216 30 30 / 0.6));
}
.spin-seg {
stroke: #111214;
stroke-width: 2;
}
.spin-seg-label {
font-family: var(--eva-font);
font-weight: 700;
letter-spacing: 0.04em;
}
}
// Tmavý režim — velín Central Dogma
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-evangelion {
--eva-orange: #ff8a1f;
--eva-orange-text: #ff8a1f;
--eva-red: #ff3b3b;
--eva-line: #4a2c10;
--eva-panel: #111317;
--eva-text: #f2efe6;
--wheel-c5: #2b2d31;
--wheel-rim: #000000;
.modal-content {
background:
repeating-linear-gradient(0deg, rgb(255 255 255 / 0.025) 0 1px, transparent 1px 3px),
radial-gradient(ellipse 70% 45% at 50% 110%, rgb(216 30 30 / 0.18), transparent 70%),
#08090b;
box-shadow: 0 0 30px rgb(255 138 31 / 0.18);
}
.spin-steps span:not(.active):not(.done) {
background: #1a1d22;
color: #8a8780;
}
.spin-steps span.done {
background: #2b2d31;
}
.btn-primary:disabled {
background: #2b2d31;
border-color: #2b2d31;
color: #8a8780;
}
.btn-secondary {
background: #1f2227;
border-color: #3a3c41;
}
.spin-source {
background: #1a1d22;
> .btn-outline-primary:hover {
background: #111317;
color: #fff;
}
}
.spin-options li:hover {
background: #1f1408;
}
}
// ============================================
// STYL YURU CAMP△ kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách lesa, podzimního listí, jezera a šál Rin a Nadeshiko,
// okraj jako dřevěná obruč a střed jako žhavé uhlíky táboráku.
// ============================================
.spin-wheel-modal.spin-theme-yurucamp {
--yc-font: 'Zen Maru Gothic', 'M PLUS Rounded 1c', sans-serif;
--yc-display: 'Kiwi Maru', 'Zen Maru Gothic', 'M PLUS Rounded 1c', sans-serif;
--yc-ember: #b5542a;
--yc-ember-bright: #e8833a;
--yc-forest: #3f6b4a;
--yc-line: #e2d5bd;
--yc-panel: #fffdf8;
--yc-text: #3a2e25;
--yc-kraft: #f3e3c3;
// Les, podzimní oranžová, javor, jezero Motosu, dřevo a růžová Nadeshiko
--wheel-c0: #3f6b4a;
--wheel-c1: #e8833a;
--wheel-c2: #c8553d;
--wheel-c3: #3b6fa8;
--wheel-c4: #8a5a3b;
--wheel-c5: #d9739b;
--wheel-rim: #5a3a24;
--wheel-hub: #f2b84b;
font-family: var(--yc-font);
.modal-content {
border: 1px solid var(--yc-line);
border-radius: 20px;
overflow: hidden;
background: linear-gradient(180deg, #eef5f8 0, #fbf6ec 160px);
color: var(--yc-text);
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 60'%3E%3Cpath d='M0 60L88 13Q96 8 104 9H136Q144 8 152 13L240 60Z' fill='%233e5374'/%3E%3Cpath d='M88 13Q96 8 104 9H136Q144 8 152 13L141 21L132 16L124 23L114 16L106 22L97 18Z' fill='%23e6edf5'/%3E%3C/svg%3E") right 60px bottom / auto 70% no-repeat,
linear-gradient(180deg, #24314a, #2b3a55);
border-bottom: 3px solid var(--yc-ember-bright);
h2 {
color: #fdf8ef;
font-family: var(--yc-display);
font-weight: 500;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 2px dashed var(--yc-line);
}
.spin-steps span {
font-family: var(--yc-font);
font-weight: 700;
background: #efe6d5;
color: #8f8275;
border-radius: 999px;
padding: 4px 16px;
&.active {
background: var(--yc-forest);
color: #fff;
}
&.done {
background: var(--yc-kraft);
color: #5a3a24;
}
}
.btn {
font-family: var(--yc-font);
font-weight: 700;
border-radius: 999px;
}
.btn-primary {
background: linear-gradient(180deg, var(--yc-ember-bright), var(--yc-ember));
border: none;
color: #fff;
box-shadow: 0 3px 0 #7a3518;
&:hover:not(:disabled) {
background: linear-gradient(180deg, #f39a4f, #c45f2e);
color: #fff;
box-shadow: 0 3px 0 #7a3518, 0 0 14px rgb(232 131 58 / 0.55);
}
&:disabled {
background: #d9cfc2;
color: #8f8275;
box-shadow: none;
}
}
// Tlačítko roztočení — rozhořívající se táborák
.spin-button {
font-family: var(--yc-display);
font-weight: 500;
font-size: 1.2rem;
padding: 12px 38px;
}
.btn-outline-primary {
background: var(--yc-panel);
border: 2px solid var(--yc-ember-bright);
color: var(--yc-ember);
&:hover {
background: #fbe7d6;
color: var(--yc-ember);
}
}
.btn-secondary {
background: var(--yc-forest);
border: none;
color: #fff;
}
.spin-source {
background: #efe6d5;
> .btn-primary {
background: var(--yc-forest);
box-shadow: none !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--yc-text);
&:hover {
background: var(--yc-panel);
}
}
}
.spin-result {
font-weight: 700;
strong {
color: var(--yc-ember);
}
}
.spin-options {
background: var(--yc-panel);
border: 1px solid var(--yc-line);
border-radius: 16px;
li:hover {
background: #f8efe0;
}
}
.spin-options-header {
border-bottom: 2px dashed var(--yc-line);
color: var(--yc-forest);
}
.spin-empty {
border-color: var(--yc-line);
}
.spin-wheel-pointer {
border-top-color: var(--yc-ember);
filter: drop-shadow(0 2px 1px rgb(90 58 36 / 0.4));
}
.spin-seg {
stroke: #fffdf8;
stroke-width: 2;
}
.spin-seg-label {
font-family: var(--yc-font);
font-weight: 700;
}
}
// Tmavý režim — noc u táboráku
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-yurucamp {
--yc-ember: #ff9a52;
--yc-ember-bright: #ffb36b;
--yc-forest: #2f5a3c;
--yc-line: #2f3a4f;
--yc-panel: #19223a;
--yc-text: #f3ece0;
--yc-kraft: #2e2519;
--wheel-c0: #2f5a3c;
--wheel-rim: #3a2618;
.modal-content {
background:
radial-gradient(1.2px 1.2px at 24px 38px, rgb(255 255 255 / 0.85), transparent) 0 0 / 180px 180px,
radial-gradient(1px 1px at 120px 100px, rgb(255 255 255 / 0.6), transparent) 0 0 / 180px 180px,
radial-gradient(ellipse 70% 45% at 50% 115%, rgb(255 140 60 / 0.25), transparent 70%),
#10172a;
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 60'%3E%3Cpath d='M0 60L88 13Q96 8 104 9H136Q144 8 152 13L240 60Z' fill='%23172038'/%3E%3Cpath d='M88 13Q96 8 104 9H136Q144 8 152 13L141 21L132 16L124 23L114 16L106 22L97 18Z' fill='%23aebbd0'/%3E%3C/svg%3E") right 60px bottom / auto 70% no-repeat,
#0b1120;
}
.spin-steps span:not(.active):not(.done) {
background: #222d48;
color: #9189a0;
}
.spin-steps span.done {
color: #ffb36b;
}
.btn-primary {
color: #2a1608;
&:hover:not(:disabled) {
color: #2a1608;
}
&:disabled {
background: #2f3a4f;
color: #9189a0;
}
}
.btn-outline-primary:hover {
background: #3a2618;
}
.spin-source {
background: #222d48;
}
.spin-options li:hover {
background: #222d48;
}
.spin-options-header {
color: #7fc28c;
}
.spin-seg {
stroke: #10172a;
}
}
// ============================================
// STYL SPY × FAMILY kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v retro barvách Forgerových (petrolejová, korálová, hořčicová,
// růžová Anya, námořnická, olivová), krémové linky a střed jako hvězda Stella.
// ============================================
.spin-wheel-modal.spin-theme-spyfamily {
--sxf-font: 'Nunito', sans-serif;
--sxf-display: 'Playfair Display', Georgia, serif;
--sxf-typewriter: 'Courier Prime', 'Courier New', monospace;
--sxf-teal: #1e6f6c;
--sxf-teal-deep: #155452;
--sxf-coral: #d9483b;
--sxf-line: #e3d7bf;
--sxf-panel: #fffcf5;
--sxf-text: #2b2620;
--sxf-cream-line: #f7f0e1;
--wheel-c0: #1e6f6c;
--wheel-c1: #d9483b;
--wheel-c2: #e2a93b;
--wheel-c3: #e98aa8;
--wheel-c4: #22303c;
--wheel-c5: #6b8f4e;
--wheel-rim: #22303c;
--wheel-hub: #c9a44c;
font-family: var(--sxf-font);
.modal-content {
border: 1px solid var(--sxf-line);
border-radius: 14px;
overflow: hidden;
background: #f7f0e1;
color: var(--sxf-text);
}
.modal-header {
background:
linear-gradient(var(--sxf-coral), var(--sxf-coral)) left bottom / 100% 3px no-repeat,
linear-gradient(var(--sxf-cream-line), var(--sxf-cream-line)) left bottom 5px / 100% 2px no-repeat,
#22303c;
border-bottom: none;
h2 {
color: #fbf6ea;
font-family: var(--sxf-display);
font-weight: 800;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 1px solid var(--sxf-line);
}
.spin-steps span {
font-family: var(--sxf-typewriter);
font-weight: 700;
background: #efe6d3;
color: #8c8274;
border-radius: 4px;
padding: 4px 16px;
&.active {
background: var(--sxf-teal);
color: #fffcf5;
}
&.done {
background: #f2e2b9;
color: #2b2418;
}
}
.btn {
font-family: var(--sxf-font);
font-weight: 800;
border-radius: 4px;
}
.btn-primary {
background: var(--sxf-teal);
border: 1px solid var(--sxf-teal-deep);
color: #fffcf5;
box-shadow: inset 0 0 0 2px rgb(255 252 245 / 0.25), 0 2px 0 var(--sxf-teal-deep);
&:hover:not(:disabled) {
background: var(--sxf-teal-deep);
color: #fffcf5;
}
&:disabled {
background: #d6ccbb;
border-color: #d6ccbb;
color: #8c8274;
box-shadow: none;
}
}
// Tlačítko roztočení — korálové jako Yořiny růže
.spin-button {
font-family: var(--sxf-display);
font-style: italic;
font-size: 1.25rem;
padding: 10px 38px;
background: var(--sxf-coral);
border-color: #a8332a;
box-shadow: inset 0 0 0 2px rgb(255 252 245 / 0.3), 0 3px 0 #a8332a;
&:hover:not(:disabled) {
background: #c23a2e;
}
}
.btn-outline-primary {
background: var(--sxf-panel);
border: 2px solid var(--sxf-teal);
color: var(--sxf-teal);
&:hover {
background: #dcefeb;
color: var(--sxf-teal);
}
}
.btn-secondary {
background: #22303c;
border: 1px solid #22303c;
color: #fbf6ea;
}
.spin-source {
background: #efe6d3;
border-radius: 6px;
> .btn {
border-radius: 4px !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--sxf-text);
&:hover {
background: var(--sxf-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--sxf-coral);
}
}
.spin-options {
background: var(--sxf-panel);
border: 1px solid var(--sxf-line);
border-radius: 10px;
li:hover {
background: #f6ecd8;
}
}
.spin-options-header {
border-bottom: 2px solid var(--sxf-coral);
color: var(--sxf-teal);
font-family: var(--sxf-typewriter);
}
.spin-empty {
border-color: var(--sxf-line);
}
.spin-wheel-pointer {
border-top-color: var(--sxf-coral);
filter: drop-shadow(0 2px 1px rgb(34 48 60 / 0.4));
}
.spin-seg {
stroke: #f7f0e1;
stroke-width: 2.5;
}
.spin-seg-label {
font-family: var(--sxf-font);
font-weight: 800;
}
}
// Tmavý režim — noční mise Thorn Princess
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-spyfamily {
--sxf-teal: #4fb3ac;
--sxf-teal-deep: #3a8f89;
--sxf-coral: #e0475a;
--sxf-line: #3a2a34;
--sxf-panel: #1f1720;
--sxf-text: #f4ece2;
--sxf-cream-line: #d8b866;
--wheel-c0: #2f8f89;
--wheel-c1: #b3263a;
--wheel-c4: #3c2a3e;
--wheel-rim: #0c080c;
--wheel-hub: #d8b866;
.modal-content {
background:
radial-gradient(ellipse 60% 45% at 85% -5%, rgb(224 71 90 / 0.18), transparent 70%),
#140e14;
}
.modal-header {
background-color: #0c080c;
}
.spin-steps span:not(.active):not(.done) {
background: #2a1f2b;
color: #968a90;
}
.spin-steps span.done {
background: #2e2418;
color: #d8b866;
}
.btn-primary {
background: #d8b866;
border-color: #a88a3f;
color: #1c1410;
box-shadow: inset 0 0 0 2px rgb(255 255 255 / 0.2), 0 2px 0 #7f682f;
&:hover:not(:disabled) {
background: #e8cc82;
color: #1c1410;
}
&:disabled {
background: #3a2e34;
border-color: #3a2e34;
color: #968a90;
}
}
.spin-button {
background: var(--sxf-coral);
border-color: #8f1d2c;
color: #fffcf5;
box-shadow: inset 0 0 0 2px rgb(255 252 245 / 0.25), 0 3px 0 #8f1d2c;
&:hover:not(:disabled) {
background: #c93a4d;
color: #fffcf5;
}
}
.btn-outline-primary {
border-color: #d8b866;
color: #d8b866;
&:hover {
background: #34281c;
color: #e8cc82;
}
}
.btn-secondary {
background: #2a1f2b;
border-color: #3a2a34;
}
.spin-source {
background: #2a1f2b;
}
.spin-options li:hover {
background: #2a1f2b;
}
.spin-options-header {
color: #d8b866;
}
.spin-seg {
stroke: #140e14;
}
}
// ============================================
// STYL APOTHECARY DIARIES kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách vnitřního paláce (rumělka, nefrit, zlato, inkoust,
// fialová Jinshiho, švestkový květ), zlaté linky a střed jako zlatá pečeť.
// ============================================
.spin-wheel-modal.spin-theme-apothecary {
--apo-font: 'Nunito', sans-serif;
--apo-display: 'Shippori Mincho', 'Noto Serif JP', serif;
--apo-vermilion: #a8322a;
--apo-vermilion-deep: #84241d;
--apo-jade: #2f7d62;
--apo-gold: #c9a24a;
--apo-line: #e0d4bb;
--apo-panel: #fffcf4;
--apo-text: #24201c;
--wheel-c0: #a8322a;
--wheel-c1: #2f7d62;
--wheel-c2: #c9a24a;
--wheel-c3: #24201c;
--wheel-c4: #6b5aa6;
--wheel-c5: #c76a86;
--wheel-rim: #3a1f14;
--wheel-hub: #d9b65e;
font-family: var(--apo-font);
.modal-content {
border: 1px solid var(--apo-gold);
border-radius: 10px;
overflow: hidden;
background: #f5efe1;
color: var(--apo-text);
}
.modal-header {
background:
linear-gradient(var(--apo-gold), var(--apo-gold)) left bottom / 100% 2px no-repeat,
linear-gradient(var(--apo-gold), var(--apo-gold)) left bottom 4px / 100% 1px no-repeat,
#24201c;
border-bottom: none;
h2 {
color: #fdf6e6;
font-family: var(--apo-display);
font-weight: 800;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 3px double var(--apo-gold);
}
.spin-steps span {
font-family: var(--apo-display);
font-weight: 800;
background: #ece3d0;
color: #8b7f70;
border-radius: 3px;
padding: 4px 16px;
&.active {
background: var(--apo-vermilion);
color: #fdf6e6;
box-shadow: inset 0 0 0 2px rgb(201 162 74 / 0.6);
}
&.done {
background: var(--apo-jade);
color: #fff;
}
}
.btn {
font-family: var(--apo-font);
font-weight: 800;
border-radius: 3px;
}
.btn-primary {
background: var(--apo-vermilion);
border: 1px solid var(--apo-vermilion-deep);
color: #fdf6e6;
box-shadow: inset 0 0 0 2px rgb(201 162 74 / 0.55);
&:hover:not(:disabled) {
background: var(--apo-vermilion-deep);
color: #fdf6e6;
box-shadow: inset 0 0 0 2px var(--apo-gold), 0 0 12px rgb(201 162 74 / 0.45);
}
&:disabled {
background: #d8cfbf;
border-color: #d8cfbf;
color: #8b7f70;
box-shadow: none;
}
}
// Tlačítko roztočení — zlatá pečeť
.spin-button {
font-family: var(--apo-display);
font-size: 1.2rem;
padding: 10px 38px;
}
.btn-outline-primary {
background: var(--apo-panel);
border: 1px solid var(--apo-gold);
color: var(--apo-vermilion);
&:hover {
background: #f6e2dc;
color: var(--apo-vermilion);
}
}
.btn-secondary {
background: var(--apo-jade);
border: 1px solid #22604a;
color: #fff;
}
.spin-source {
background: #ece3d0;
border-radius: 4px;
> .btn {
border-radius: 3px !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--apo-text);
&:hover {
background: var(--apo-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--apo-vermilion);
}
}
.spin-options {
background: var(--apo-panel);
border: 1px solid var(--apo-line);
border-radius: 8px;
li:hover {
background: #f4ead6;
}
}
.spin-options-header {
border-bottom: 3px double var(--apo-gold);
color: var(--apo-vermilion);
font-family: var(--apo-display);
}
.spin-empty {
border-color: var(--apo-line);
}
.spin-wheel-pointer {
border-top-color: var(--apo-vermilion);
filter: drop-shadow(0 2px 1px rgb(58 31 20 / 0.4));
}
.spin-seg {
stroke: #d9b65e;
stroke-width: 2;
}
.spin-seg-label {
font-family: var(--apo-display);
font-weight: 800;
}
}
// Tmavý režim — noc v paláci pod lampiony
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-apothecary {
--apo-vermilion: #d6503f;
--apo-vermilion-deep: #b53b2d;
--apo-jade: #3f9474;
--apo-gold: #d9b65e;
--apo-line: #3a2e2a;
--apo-panel: #1e1a22;
--apo-text: #f2eadb;
--wheel-c0: #b53b2d;
--wheel-c3: #3a3036;
--wheel-rim: #0e0c10;
.modal-content {
background:
radial-gradient(circle at 8% 0%, rgb(214 80 63 / 0.22), transparent 35%),
radial-gradient(circle at 92% 0%, rgb(232 165 74 / 0.16), transparent 32%),
#14121a;
}
.modal-header {
background-color: #0e0c10;
}
.spin-steps span:not(.active):not(.done) {
background: #29232d;
color: #948a80;
}
.btn-primary:disabled {
background: #3a3036;
border-color: #3a3036;
color: #948a80;
}
.btn-outline-primary {
color: #e8a54a;
&:hover {
background: #3a2618;
color: #f2bd6a;
}
}
.spin-source {
background: #29232d;
}
.spin-options li:hover {
background: #29232d;
}
.spin-options-header {
color: #d9b65e;
}
}
// ============================================
// STYL FRIEREN kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách družiny a krajiny (fialová Fern, levandule, Himmelova
// modř, zlato, louka, růžová), zlaté linky a střed jako magický kruh.
// ============================================
.spin-wheel-modal.spin-theme-frieren {
--fr-font: 'Nunito', sans-serif;
--fr-display: 'Cormorant Garamond', Georgia, serif;
--fr-violet: #5b4a9e;
--fr-violet-deep: #463882;
--fr-lavender: #8e7cc3;
--fr-gold: #bf9b4a;
--fr-line: #dcd8ea;
--fr-panel: #ffffff;
--fr-text: #2e2a3d;
--wheel-c0: #5b4a9e;
--wheel-c1: #8e7cc3;
--wheel-c2: #5b8fc7;
--wheel-c3: #bf9b4a;
--wheel-c4: #6f9f6a;
--wheel-c5: #c76a96;
--wheel-rim: #3d3466;
--wheel-hub: #e9c86a;
font-family: var(--fr-font);
.modal-content {
border: 1px solid var(--fr-line);
border-radius: 18px;
overflow: hidden;
background: linear-gradient(180deg, #e6ecf7 0, #f6f5fb 180px);
color: var(--fr-text);
}
.modal-header {
background:
linear-gradient(var(--fr-gold), var(--fr-gold)) left bottom / 100% 1px no-repeat,
linear-gradient(90deg, #3d3466, #4b4380);
border-bottom: none;
h2 {
color: #f6f3ff;
font-family: var(--fr-display);
font-weight: 700;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 1px solid var(--fr-line);
}
.spin-steps span {
font-family: var(--fr-display);
font-weight: 700;
font-size: 1.05rem;
background: #ebe8f3;
color: #8a869b;
border-radius: 999px;
padding: 2px 16px;
&.active {
background: var(--fr-violet);
color: #fff;
box-shadow: 0 0 10px rgb(142 124 195 / 0.5);
}
&.done {
background: #e4def6;
color: var(--fr-violet-deep);
}
}
.btn {
font-family: var(--fr-font);
font-weight: 800;
border-radius: 999px;
}
.btn-primary {
background: linear-gradient(135deg, var(--fr-violet), var(--fr-lavender));
border: none;
color: #fff;
box-shadow: 0 3px 10px rgb(91 74 158 / 0.25);
&:hover:not(:disabled) {
background: linear-gradient(135deg, var(--fr-violet-deep), var(--fr-violet));
color: #fff;
box-shadow: 0 0 0 3px rgb(191 155 74 / 0.35), 0 0 18px rgb(142 124 195 / 0.55);
}
&:disabled {
background: #d9d6e4;
color: #8a869b;
box-shadow: none;
}
}
// Tlačítko roztočení — seslání kouzla
.spin-button {
font-family: var(--fr-display);
font-weight: 700;
font-size: 1.35rem;
padding: 8px 40px;
}
.btn-outline-primary {
background: var(--fr-panel);
border: 1px solid var(--fr-lavender);
color: var(--fr-violet);
&:hover {
background: #ebe6f7;
color: var(--fr-violet);
}
}
.btn-secondary {
background: #6f7a92;
border: none;
color: #fff;
}
.spin-source {
background: #ebe8f3;
> .btn-outline-primary {
background: transparent;
color: var(--fr-text);
&:hover {
background: var(--fr-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--fr-violet);
}
}
.spin-options {
background: var(--fr-panel);
border: 1px solid var(--fr-line);
border-radius: 14px;
li:hover {
background: #f1eef9;
}
}
.spin-options-header {
border-bottom: 1px solid var(--fr-gold);
color: var(--fr-violet);
font-family: var(--fr-display);
font-size: 1.05rem;
}
.spin-empty {
border-color: var(--fr-line);
}
.spin-wheel-pointer {
border-top-color: var(--fr-gold);
filter: drop-shadow(0 0 4px rgb(233 200 106 / 0.7));
}
.spin-seg {
stroke: #e9c86a;
stroke-width: 1.5;
}
.spin-seg-label {
font-family: var(--fr-font);
font-weight: 800;
}
}
// Tmavý režim — noc pod hvězdami
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-frieren {
--fr-violet: #b3a3ea;
--fr-violet-deep: #9a88dc;
--fr-gold: #dcc07a;
--fr-line: #2e2b45;
--fr-panel: #1b1a2b;
--fr-text: #eeebf7;
--wheel-c0: #45397a;
--wheel-rim: #0c0b16;
.modal-content {
background:
radial-gradient(1.2px 1.2px at 30px 40px, rgb(255 255 255 / 0.85), transparent) 0 0 / 200px 200px,
radial-gradient(1px 1px at 140px 110px, rgb(220 210 255 / 0.7), transparent) 0 0 / 200px 200px,
radial-gradient(circle at 88% 8%, rgb(255 244 210 / 0.16) 0 24px, transparent 90px),
#11101d;
}
.modal-header {
background:
linear-gradient(var(--fr-gold), var(--fr-gold)) left bottom / 100% 1px no-repeat,
#0c0b16;
}
.spin-steps span:not(.active):not(.done) {
background: #242238;
color: #8f8ba5;
}
.spin-steps span.active {
color: #17142a;
}
.spin-steps span.done {
background: #2b2646;
color: #c8bbf2;
}
.btn-primary {
background: linear-gradient(135deg, #8e7cc3, #b3a3ea);
color: #17142a;
&:hover:not(:disabled) {
background: linear-gradient(135deg, #a593dc, #c8bbf2);
color: #17142a;
}
&:disabled {
background: #2e2b45;
color: #8f8ba5;
}
}
.btn-outline-primary:hover {
background: #2b2646;
}
.btn-secondary {
background: #2e2b45;
}
.spin-source {
background: #242238;
}
.spin-options li:hover {
background: #242238;
}
.spin-options-header {
color: #dcc07a;
}
}
// ============================================
// STYL MY LITTLE PONY (G5) kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách Mane 5 a Misty, bílé linky a střed jako sluníčko Sunny.
// ============================================
.spin-wheel-modal.spin-theme-mlpg5 {
--g5-font: 'Nunito', sans-serif;
--g5-display: 'Baloo 2', 'Nunito', sans-serif;
--g5-sunny: #f08a3c;
--g5-sunny-deep: #c85a14;
--g5-pipp: #ee5fa8;
--g5-hitch: #2fa89c;
--g5-line: #f3dccb;
--g5-panel: #ffffff;
--g5-text: #2b2440;
--wheel-c0: #f08a3c;
--wheel-c1: #ee5fa8;
--wheel-c2: #9b6fe0;
--wheel-c3: #5a7bd8;
--wheel-c4: #2fa89c;
--wheel-c5: #6fb1d6;
--wheel-rim: #1f8f9a;
--wheel-hub: #ffd23f;
font-family: var(--g5-font);
.modal-content {
border: none;
border-radius: 26px;
overflow: hidden;
background: linear-gradient(180deg, #e2f6f6 0, #fff8f1 200px);
color: var(--g5-text);
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='12'%3E%3Cpath d='M0 12V6Q20 0 40 6T80 6V12Z' fill='%23e2f6f6'/%3E%3C/svg%3E") left bottom / 80px 12px repeat-x,
linear-gradient(120deg, #1f8f9a, #2fa89c);
border-bottom: none;
padding-bottom: calc(var(--bs-modal-header-padding-y, 1rem) + 10px);
h2 {
color: #fff;
font-family: var(--g5-display);
font-weight: 800;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 2px solid var(--g5-line);
}
.spin-steps span {
font-family: var(--g5-display);
font-weight: 800;
background: #f3ece6;
color: #908aa3;
border-radius: 999px;
padding: 2px 16px;
&.active {
background: linear-gradient(120deg, var(--g5-sunny), var(--g5-pipp));
color: #fff;
}
&.done {
background: var(--g5-hitch);
color: #fff;
}
}
.btn {
font-family: var(--g5-font);
font-weight: 800;
border-radius: 999px;
}
.btn-primary {
background: linear-gradient(120deg, var(--g5-sunny), var(--g5-pipp));
border: none;
color: #fff;
text-shadow: 0 1px 0 rgb(0 0 0 / 0.15);
box-shadow: 0 4px 0 #c43d82;
&:hover:not(:disabled) {
background: linear-gradient(120deg, var(--g5-sunny), var(--g5-pipp));
color: #fff;
filter: brightness(1.07) saturate(1.1);
}
&:active:not(:disabled) {
transform: translateY(3px);
box-shadow: 0 1px 0 #c43d82;
}
&:disabled {
background: #e3dde9;
color: #908aa3;
text-shadow: none;
box-shadow: 0 4px 0 #cbc4d6;
}
}
// Tlačítko roztočení — velká buclatá pilulka
.spin-button {
font-family: var(--g5-display);
font-size: 1.35rem;
padding: 8px 40px 4px;
box-shadow: 0 5px 0 #c43d82, 0 10px 20px -6px rgb(238 95 168 / 0.6);
}
.btn-outline-primary {
background: var(--g5-panel);
border: 2px solid var(--g5-pipp);
color: var(--g5-sunny-deep);
&:hover {
background: #ffeadb;
color: var(--g5-sunny-deep);
}
}
.btn-secondary {
background: var(--g5-hitch);
border: none;
color: #fff;
box-shadow: 0 4px 0 #1e7a70;
}
.spin-source {
background: #f3ece6;
> .btn-primary {
box-shadow: none !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--g5-text);
&:hover {
background: var(--g5-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--g5-sunny-deep);
}
}
.spin-options {
background: var(--g5-panel);
border: 1px solid var(--g5-line);
border-radius: 20px;
li:hover {
background: #fff1e5;
}
}
.spin-options-header {
border-bottom: 2px solid var(--g5-line);
color: var(--g5-pipp);
font-family: var(--g5-display);
}
.spin-empty {
border-color: var(--g5-line);
}
.spin-wheel-pointer {
border-top-color: var(--g5-pipp);
filter: drop-shadow(0 3px 2px rgb(196 61 130 / 0.45));
}
.spin-seg {
stroke: #fff;
stroke-width: 3;
}
.spin-seg-label {
font-family: var(--g5-display);
font-weight: 800;
}
}
// Tmavý režim — noční Bridlewood
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-mlpg5 {
--g5-sunny: #ffa560;
--g5-sunny-deep: #ff9a4d;
--g5-pipp: #ff7cbb;
--g5-hitch: #1f8f86;
--g5-line: #2c3650;
--g5-panel: #1a2233;
--g5-text: #f1eefa;
--wheel-rim: #0c3a42;
.modal-content {
background:
radial-gradient(circle at 12% 20%, rgb(79 209 194 / 0.14) 0 40px, transparent 110px),
radial-gradient(circle at 88% 70%, rgb(184 148 242 / 0.16) 0 50px, transparent 130px),
#0f1724;
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='12'%3E%3Cpath d='M0 12V6Q20 0 40 6T80 6V12Z' fill='%230f1724'/%3E%3C/svg%3E") left bottom / 80px 12px repeat-x,
linear-gradient(120deg, #0c3a42, #12505a);
}
.spin-steps span:not(.active):not(.done) {
background: #222c40;
color: #8e89a6;
}
.btn-primary:disabled {
background: #2c3650;
color: #8e89a6;
box-shadow: 0 4px 0 #1f273a;
}
.btn-outline-primary:hover {
background: #3a2a26;
}
.btn-secondary {
box-shadow: 0 4px 0 #125a54;
}
.spin-source {
background: #222c40;
}
.spin-options li:hover {
background: #222c40;
}
.spin-seg {
stroke: #0f1724;
}
}
// ============================================
// STYL AGGRETSUKO kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách kanceláře (rezavá Retsuko, ocelově modrá, lepicí
// papírek, razítko, růžová Tsunoda, šedá Haida), střed jako razítko hanko.
// V rage mode černé kolo s rudými výsečemi.
// ============================================
.spin-wheel-modal.spin-theme-aggretsuko {
--agg-font: 'Nunito', sans-serif;
--agg-display: 'M PLUS Rounded 1c', 'Nunito', sans-serif;
--agg-metal: 'Metal Mania', 'M PLUS Rounded 1c', sans-serif;
--agg-retsuko: #d9673a;
--agg-retsuko-deep: #b4481f;
--agg-office: #4a5d7a;
--agg-line: #ecdccb;
--agg-panel: #ffffff;
--agg-text: #2f2a2a;
--wheel-c0: #d9673a;
--wheel-c1: #4a5d7a;
--wheel-c2: #e8b923;
--wheel-c3: #c8102e;
--wheel-c4: #e08aa6;
--wheel-c5: #6b6f7a;
--wheel-rim: #394a63;
--wheel-hub: #fff4e8;
font-family: var(--agg-font);
.modal-content {
border: 1px solid var(--agg-line);
border-radius: 16px;
overflow: hidden;
background:
linear-gradient(rgb(74 93 122 / 0.07) 1px, transparent 1px) 0 0 / 100% 26px,
linear-gradient(90deg, rgb(74 93 122 / 0.07) 1px, transparent 1px) 0 0 / 104px 100%,
#fbf6ef;
color: var(--agg-text);
}
.modal-header {
background:
linear-gradient(var(--agg-retsuko), var(--agg-retsuko)) left bottom / 100% 4px no-repeat,
var(--agg-office);
border-bottom: none;
h2 {
color: #fff;
font-family: var(--agg-display);
font-weight: 800;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 1px solid var(--agg-line);
}
.spin-steps span {
font-family: var(--agg-display);
font-weight: 800;
background: #f1e8de;
color: #8f8584;
border-radius: 6px;
padding: 4px 16px;
&.active {
background: var(--agg-retsuko);
color: #fff;
}
&.done {
background: #ffe873;
color: #3a3220;
}
}
.btn {
font-family: var(--agg-font);
font-weight: 800;
border-radius: 6px;
}
.btn-primary {
background: var(--agg-retsuko);
border: 1px solid var(--agg-retsuko-deep);
color: #fff;
box-shadow: 0 2px 0 var(--agg-retsuko-deep);
&:hover:not(:disabled) {
background: var(--agg-retsuko-deep);
color: #fff;
}
&:disabled {
background: #e4dcd4;
border-color: #e4dcd4;
color: #8f8584;
box-shadow: none;
}
}
// Tlačítko roztočení — Retsuko se chystá zařvat
.spin-button {
font-family: var(--agg-display);
font-size: 1.2rem;
padding: 10px 38px;
&:hover:not(:disabled) {
background: #c8102e;
border-color: #8f0a20;
animation: agg-rage 0.35s ease-in-out;
}
}
.btn-outline-primary {
background: var(--agg-panel);
border: 1px solid var(--agg-retsuko);
color: var(--agg-retsuko-deep);
&:hover {
background: #fde6d8;
color: var(--agg-retsuko-deep);
}
}
.btn-secondary {
background: var(--agg-office);
border: 1px solid #394a63;
color: #fff;
}
.spin-source {
background: #f1e8de;
border-radius: 8px;
> .btn {
border-radius: 6px !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--agg-text);
&:hover {
background: var(--agg-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--agg-retsuko-deep);
}
}
.spin-options {
background: var(--agg-panel);
border: 1px solid var(--agg-line);
border-radius: 12px;
li:hover {
background: #fff1e4;
}
}
.spin-options-header {
border-bottom: 2px solid var(--agg-retsuko);
color: var(--agg-office);
font-family: var(--agg-display);
}
.spin-empty {
border-color: var(--agg-line);
}
.spin-wheel-pointer {
border-top-color: #c8102e;
filter: drop-shadow(0 2px 1px rgb(0 0 0 / 0.3));
}
.spin-wheel-hub {
stroke: #c8102e;
}
.spin-seg {
stroke: #fff;
stroke-width: 2;
}
.spin-seg-label {
font-family: var(--agg-display);
font-weight: 800;
}
}
// Rage mode — karaoke box
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-aggretsuko {
--agg-retsuko: #ff4a3d;
--agg-retsuko-deep: #c8102e;
--agg-line: #3a1c20;
--agg-panel: #171314;
--agg-text: #f2ecea;
--wheel-c0: #c8102e;
--wheel-c1: #5c2a30;
--wheel-c2: #ff4a3d;
--wheel-c3: #3a1c20;
--wheel-c4: #8f0a20;
--wheel-c5: #6b4a4e;
--wheel-rim: #ff2e3f;
--wheel-hub: #000000;
.modal-content {
border-color: #ff2e3f;
background:
radial-gradient(ellipse 50% 40% at 50% -10%, rgb(255 46 63 / 0.3), transparent 70%),
#0d0b0c;
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='8'%3E%3Cpath d='M0 7L4 1L8 7L12 1L16 7' fill='none' stroke='%23ff2e3f' stroke-width='2'/%3E%3C/svg%3E") left bottom / 16px 8px repeat-x,
#000;
padding-bottom: calc(var(--bs-modal-header-padding-y, 1rem) + 6px);
h2 {
font-family: var(--agg-metal);
font-weight: 400;
letter-spacing: 0.03em;
text-shadow: 0 0 10px rgb(255 46 63 / 0.8);
}
}
.spin-steps span:not(.active):not(.done) {
background: #221a1b;
color: #8f8584;
}
.spin-steps span.active {
background: #c8102e;
}
.spin-steps span.done {
background: #2a0f12;
color: #ff4a3d;
}
.btn-primary {
background: #c8102e;
border-color: #ff2e3f;
box-shadow: 0 0 12px rgb(255 46 63 / 0.45);
&:hover:not(:disabled) {
background: #e0283f;
}
&:disabled {
background: #2a1f20;
border-color: #2a1f20;
color: #8f8584;
box-shadow: none;
}
}
.spin-button {
font-family: var(--agg-metal);
font-weight: 400;
font-size: 1.4rem;
letter-spacing: 0.04em;
}
.btn-outline-primary:hover {
background: #3a1416;
}
.btn-secondary {
background: #241c1d;
border-color: #3a2a2c;
}
.spin-source {
background: #221a1b;
}
.spin-options li:hover {
background: #221a1b;
}
.spin-options-header {
color: #ff4a3d;
font-family: var(--agg-metal);
font-weight: 400;
letter-spacing: 0.03em;
}
.spin-wheel-hub {
stroke: #ff2e3f;
}
.spin-seg {
stroke: #ff2e3f;
stroke-width: 1.5;
}
}
// ============================================
// STYL SUMIKKO GURASHI kola štěstí (dle stylu zvoleného v nastavení).
// Pastelové výseče v barvách postaviček s hnědými popisky a linkami,
// střed jako tapioková perlička.
// ============================================
.spin-wheel-modal.spin-theme-sumikko {
--sk-font: 'Zen Maru Gothic', 'M PLUS Rounded 1c', sans-serif;
--sk-display: 'Klee One', 'Zen Maru Gothic', sans-serif;
--sk-brown: #8b5e3c;
--sk-brown-deep: #6b4428;
--sk-ink: #5a4636;
--sk-line: #e8dcc8;
--sk-panel: #fffdf8;
--wheel-c0: #b9dba3;
--wheel-c1: #ecd5b8;
--wheel-c2: #b6d9ea;
--wheel-c3: #f6c6d2;
--wheel-c4: #f2dc8f;
--wheel-c5: #d4c6e8;
--wheel-label: #5a4636;
--wheel-rim: #8b5e3c;
--wheel-hub: #5a4636;
font-family: var(--sk-font);
.modal-content {
border: 2px solid var(--sk-line);
border-radius: 22px;
overflow: hidden;
background: #f8f3e8;
color: var(--sk-ink);
}
.modal-header {
background:
repeating-linear-gradient(90deg, rgb(139 94 60 / 0.4) 0 8px, transparent 8px 14px) left bottom / 100% 2px no-repeat,
#f3e6cf;
border-bottom: none;
h2 {
color: var(--sk-ink);
font-family: var(--sk-display);
font-weight: 600;
}
}
.modal-footer {
border-top: 2px dashed var(--sk-line);
}
.spin-steps span {
font-family: var(--sk-display);
font-weight: 600;
background: #efe6d8;
color: #a8988a;
border-radius: 12px;
padding: 2px 16px;
&.active {
background: var(--sk-brown);
color: #fffaf0;
}
&.done {
background: #b9dba3;
color: #2f3a2a;
}
}
.btn {
font-family: var(--sk-font);
font-weight: 700;
border-radius: 12px;
}
.btn-primary {
background: var(--sk-brown);
border: none;
color: #fffaf0;
box-shadow: 0 3px 0 var(--sk-brown-deep);
&:hover:not(:disabled) {
background: #9c6c48;
color: #fffaf0;
}
&:disabled {
background: #e4dbcf;
color: #a8988a;
box-shadow: none;
}
}
.spin-button {
font-family: var(--sk-display);
font-weight: 600;
font-size: 1.25rem;
padding: 8px 38px;
}
.btn-outline-primary {
background: var(--sk-panel);
border: 2px solid #c9a07a;
color: var(--sk-brown);
&:hover {
background: #f5e9d8;
color: var(--sk-brown);
}
}
.btn-secondary {
background: #a8cf8e;
border: none;
color: #2f3a2a;
box-shadow: 0 3px 0 #86ad6c;
}
.spin-source {
background: #efe6d8;
> .btn-primary {
box-shadow: none !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--sk-ink);
&:hover {
background: var(--sk-panel);
}
}
}
.spin-result {
font-weight: 700;
strong {
color: var(--sk-brown);
}
}
.spin-options {
background: var(--sk-panel);
border: 2px solid var(--sk-line);
border-radius: 16px;
li:hover {
background: #f7efe2;
}
}
.spin-options-header {
border-bottom: 2px dashed var(--sk-line);
color: var(--sk-brown);
font-family: var(--sk-display);
}
.spin-empty {
border-color: var(--sk-line);
}
.spin-wheel-pointer {
border-top-color: var(--sk-brown);
}
.spin-seg {
stroke: var(--sk-brown);
stroke-width: 1.5;
}
.spin-seg-label {
font-family: var(--sk-display);
font-weight: 600;
}
}
// Tmavý režim — večer v koutku pod dekou
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-sumikko {
--sk-brown: #e0b48a;
--sk-brown-deep: #a87a50;
--sk-ink: #f3e8d8;
--sk-line: #3a302a;
--sk-panel: #26201d;
--wheel-rim: #e0b48a;
--wheel-hub: #e0b48a;
.modal-content {
background:
radial-gradient(circle at 0% 0%, rgb(255 210 150 / 0.14), transparent 45%),
#1d1816;
}
.modal-header {
background:
repeating-linear-gradient(90deg, rgb(224 180 138 / 0.4) 0 8px, transparent 8px 14px) left bottom / 100% 2px no-repeat,
#2f2620;
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
}
}
.spin-steps span:not(.active):not(.done) {
background: #2f2824;
color: #93877a;
}
.spin-steps span.active {
color: #2a1f18;
}
.btn-primary {
color: #2a1f18;
&:hover:not(:disabled) {
background: #ecc8a4;
color: #2a1f18;
}
&:disabled {
background: #3a302a;
color: #93877a;
}
}
.btn-outline-primary:hover {
background: #3a2e26;
}
.spin-source {
background: #2f2824;
}
.spin-options li:hover {
background: #2f2824;
}
}
// ============================================
// STYL GUDETAMA kola štěstí (dle stylu zvoleného v nastavení).
// Kolo leží na litinové pánvi: výseče v barvách snídaně (žloutek, bílek,
// slanina, toust, sójová omáčka, nori), střed jako žloutek.
// ============================================
.spin-wheel-modal.spin-theme-gudetama {
--gt-font: 'Nunito', sans-serif;
--gt-display: 'Fredoka', 'Nunito', sans-serif;
--gt-yolk: #ffd23f;
--gt-yolk-shadow: #d99a00;
--gt-ink: #4a3520;
--gt-line: #efe3c4;
--gt-panel: #ffffff;
--wheel-c0: #ffd23f;
--wheel-c1: #f5e6b8;
--wheel-c2: #f2a7a0;
--wheel-c3: #e8c08a;
--wheel-c4: #c9a07a;
--wheel-c5: #b8d48f;
--wheel-label: #4a3520;
--wheel-rim: #2b2725;
--wheel-hub: #ffd23f;
font-family: var(--gt-font);
.modal-content {
border: 2px solid var(--gt-line);
border-radius: 24px;
overflow: hidden;
background:
linear-gradient(rgb(74 53 32 / 0.05) 1.5px, transparent 1.5px) 0 0 / 46px 46px,
linear-gradient(90deg, rgb(74 53 32 / 0.05) 1.5px, transparent 1.5px) 0 0 / 46px 46px,
#fbf8f1;
color: var(--gt-ink);
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='10'%3E%3Cpath d='M0 3Q12 0 24 3T48 3V7Q36 10 24 7T0 7Z' fill='%23f2a7a0'/%3E%3Cpath d='M0 5Q12 2 24 5T48 5' stroke='%23c8553d' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") left bottom / 48px 10px repeat-x,
linear-gradient(180deg, #ffdc5c, var(--gt-yolk));
border-bottom: none;
padding-bottom: calc(var(--bs-modal-header-padding-y, 1rem) + 8px);
h2 {
color: var(--gt-ink);
font-family: var(--gt-display);
font-weight: 600;
}
}
.modal-footer {
border-top: 2px solid var(--gt-line);
}
.spin-steps span {
font-family: var(--gt-display);
font-weight: 600;
background: #f5ecd6;
color: #a3927c;
border-radius: 999px;
padding: 2px 16px;
// Text na žloutku je vždy tmavý (i v tmavém režimu)
&.active {
background: var(--gt-yolk);
color: #4a3520;
box-shadow: 0 3px 0 var(--gt-yolk-shadow);
}
&.done {
background: #fffdf5;
color: #a8650a;
box-shadow: inset 0 0 0 2px var(--gt-yolk);
}
}
.btn {
font-family: var(--gt-font);
font-weight: 800;
border-radius: 999px;
transition: transform 0.5s ease, box-shadow 0.5s ease, background 0.5s ease;
}
.btn-primary {
background: var(--gt-yolk);
border: none;
color: #4a3520;
box-shadow: 0 4px 0 var(--gt-yolk-shadow);
&:hover:not(:disabled) {
background: #ffdc5c;
color: #4a3520;
}
&:disabled {
background: #efe6cf;
color: #a3927c;
box-shadow: none;
}
}
// Tlačítko roztočení — „…tak jo, no"
.spin-button {
font-family: var(--gt-display);
font-weight: 600;
font-size: 1.3rem;
padding: 8px 40px;
}
.btn-outline-primary {
background: var(--gt-panel);
border: 2px solid #f5b301;
color: #a8650a;
&:hover {
background: #fff3c4;
color: #a8650a;
}
}
.btn-secondary {
background: #6b4a2e;
border: none;
color: #fffdf5;
box-shadow: 0 4px 0 #4a3220;
}
.spin-source {
background: #f5ecd6;
> .btn-primary {
box-shadow: none !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--gt-ink);
&:hover {
background: var(--gt-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: #a8650a;
}
}
.spin-options {
background: var(--gt-panel);
border: 2px solid var(--gt-line);
border-radius: 18px;
li:hover {
background: #fff8dc;
}
}
.spin-options-header {
border-bottom: 2px solid #f5dc8a;
color: #a8650a;
font-family: var(--gt-display);
}
.spin-empty {
border-color: var(--gt-line);
}
.spin-wheel-pointer {
border-top-color: #c8553d;
}
.spin-wheel-hub {
stroke: #fffdf5;
}
.spin-seg {
stroke: #2b2725;
stroke-width: 1.5;
}
.spin-seg-label {
font-family: var(--gt-display);
font-weight: 600;
}
}
// Tmavý režim — litinová pánev
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-gudetama {
--gt-ink: #f5ead2;
--gt-line: #3a332e;
--gt-panel: #211d1a;
--wheel-rim: #3a3430;
.modal-content {
background:
radial-gradient(circle at 50% 50%, rgb(255 210 63 / 0.08) 0 120px, transparent 300px),
#141210;
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='10'%3E%3Cpath d='M0 3Q12 0 24 3T48 3V7Q36 10 24 7T0 7Z' fill='%23f2a7a0'/%3E%3Cpath d='M0 5Q12 2 24 5T48 5' stroke='%23c8553d' stroke-width='1.5' fill='none'/%3E%3C/svg%3E") left bottom / 48px 10px repeat-x,
#0e0d0c;
h2 {
color: #ffd23f;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
}
}
.spin-steps span:not(.active):not(.done) {
background: #2b2622;
color: #968a7a;
}
.spin-steps span.done {
background: #2b2622;
color: #ffd23f;
}
.btn-primary:disabled {
background: #3a332e;
color: #968a7a;
}
.btn-outline-primary {
color: #ffd23f;
&:hover {
background: #3a3018;
color: #ffe17a;
}
}
.spin-source {
background: #2b2622;
}
.spin-options li:hover {
background: #2b2622;
}
.spin-options-header {
color: #ffd23f;
border-bottom-color: #4a3d1c;
}
.spin-result strong {
color: #ffd23f;
}
}
// ============================================
// STYL HATSUNE MIKU kola štěstí (dle stylu zvoleného v nastavení).
// Výseče v barvách Vocaloidů (Miku, Luka, Rin, Kaito, Meiko, šedá rukávů),
// bílé linky a střed jako reproduktor s tyrkysovým lemem.
// ============================================
.spin-wheel-modal.spin-theme-miku {
--miku-font: 'Nunito', sans-serif;
--miku-display: 'Exo 2', 'Nunito', sans-serif;
--miku-teal: #39c5bb;
--miku-teal-deep: #138f87;
--miku-teal-ink: #137a7f;
--miku-pink: #e12885;
--miku-grey: #3a3f44;
--miku-line: #d8e3e6;
--miku-panel: #ffffff;
--miku-text: #263036;
--wheel-c0: #2fb3a9;
--wheel-c1: #e12885;
--wheel-c2: #5a6268;
--wheel-c3: #e0a000;
--wheel-c4: #3a6fd8;
--wheel-c5: #c8302c;
--wheel-rim: #3a3f44;
--wheel-hub: #2b2f33;
font-family: var(--miku-font);
.modal-content {
border: 1px solid var(--miku-line);
border-radius: 16px;
overflow: hidden;
background:
linear-gradient(90deg, rgb(57 197 187 / 0.12) 1px, transparent 1px) 0 0 / 88px 100%,
repeating-linear-gradient(180deg, #f6fafb 0 22px, #edf3f5 22px 44px);
color: var(--miku-text);
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='98' height='10'%3E%3Crect width='98' height='10' fill='%23ffffff'/%3E%3Cpath d='M14 0V10M28 0V10M42 0V10M56 0V10M70 0V10M84 0V10M98 0V10' stroke='%239aa3a8'/%3E%3Cpath d='M10 0h8v6h-8zM24 0h8v6h-8zM52 0h8v6h-8zM66 0h8v6h-8zM80 0h8v6h-8z' fill='%232b2f33'/%3E%3C/svg%3E") left bottom / 98px 10px repeat-x,
linear-gradient(var(--miku-teal), var(--miku-teal)) left bottom 10px / 100% 3px no-repeat,
linear-gradient(180deg, #454b51, var(--miku-grey));
border-bottom: none;
padding-bottom: calc(var(--bs-modal-header-padding-y, 1rem) + 13px);
h2 {
color: #fff;
font-family: var(--miku-display);
font-weight: 700;
}
.btn-close {
filter: invert(1) grayscale(1) brightness(2);
opacity: 0.9;
}
}
.modal-footer {
border-top: 1px solid var(--miku-line);
}
.spin-steps span {
font-family: var(--miku-display);
font-weight: 700;
background: #e3eaed;
color: #8a979e;
border-radius: 6px;
padding: 3px 16px;
&.active {
background: var(--miku-teal-deep);
color: #fff;
box-shadow: 0 0 10px rgb(57 197 187 / 0.5);
}
&.done {
background: var(--miku-pink);
color: #fff;
}
}
.btn {
font-family: var(--miku-font);
font-weight: 800;
border-radius: 6px;
}
.btn-primary {
background: linear-gradient(180deg, #23a99f, var(--miku-teal-deep));
border: 1px solid #0e7a73;
color: #fff;
&:hover:not(:disabled) {
background: linear-gradient(180deg, #2fb3a9, #179a91);
color: #fff;
box-shadow: 0 0 0 3px rgb(57 197 187 / 0.3), 0 0 16px rgb(57 197 187 / 0.55);
}
&:disabled {
background: #cfd8dc;
border-color: #cfd8dc;
color: #8a979e;
}
}
// Tlačítko roztočení — „play"
.spin-button {
font-family: var(--miku-display);
font-weight: 800;
font-size: 1.25rem;
letter-spacing: 0.04em;
padding: 10px 38px;
&::before {
content: '▶ ';
font-size: 0.8em;
}
}
.btn-outline-primary {
background: var(--miku-panel);
border: 1px solid var(--miku-teal);
color: var(--miku-teal-ink);
&:hover {
background: #e0f6f4;
color: var(--miku-teal-ink);
}
}
.btn-secondary {
background: var(--miku-pink);
border: 1px solid #b81e6c;
color: #fff;
}
.spin-source {
background: #e3eaed;
border-radius: 8px;
> .btn {
border-radius: 6px !important;
}
> .btn-outline-primary {
background: transparent;
color: var(--miku-text);
&:hover {
background: var(--miku-panel);
}
}
}
.spin-result {
font-weight: 800;
strong {
color: var(--miku-teal-ink);
}
}
.spin-options {
background: var(--miku-panel);
border: 1px solid var(--miku-line);
border-radius: 12px;
li:hover {
background: #eef8f7;
}
}
.spin-options-header {
border-bottom: 2px solid var(--miku-teal);
color: var(--miku-teal-ink);
font-family: var(--miku-display);
}
.spin-empty {
border-color: var(--miku-line);
}
.spin-wheel-pointer {
border-top-color: var(--miku-pink);
filter: drop-shadow(0 0 4px rgb(225 40 133 / 0.6));
}
.spin-wheel-hub {
stroke: var(--miku-teal);
}
.spin-seg {
stroke: #fff;
stroke-width: 2;
}
.spin-seg-label {
font-family: var(--miku-display);
font-weight: 700;
}
}
// Tmavý režim — koncert
[data-bs-theme="dark"] .spin-wheel-modal.spin-theme-miku {
--miku-teal-ink: #5fd6cd;
--miku-line: #23303a;
--miku-panel: #14191d;
--miku-text: #eef4f6;
--wheel-c2: #3a4248;
--wheel-rim: #050607;
--wheel-hub: #050607;
.modal-content {
border-color: #23303a;
background:
linear-gradient(115deg, transparent 38%, rgb(57 197 187 / 0.10) 46%, transparent 54%),
linear-gradient(-115deg, transparent 38%, rgb(225 40 133 / 0.09) 46%, transparent 54%),
#0b0d10;
box-shadow: 0 0 30px rgb(57 197 187 / 0.2);
}
.modal-header {
background:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='98' height='10'%3E%3Crect width='98' height='10' fill='%23ffffff'/%3E%3Cpath d='M14 0V10M28 0V10M42 0V10M56 0V10M70 0V10M84 0V10M98 0V10' stroke='%239aa3a8'/%3E%3Cpath d='M10 0h8v6h-8zM24 0h8v6h-8zM52 0h8v6h-8zM66 0h8v6h-8zM80 0h8v6h-8z' fill='%232b2f33'/%3E%3C/svg%3E") left bottom / 98px 10px repeat-x,
linear-gradient(var(--miku-teal), var(--miku-teal)) left bottom 10px / 100% 2px no-repeat,
#101417;
}
.spin-steps span:not(.active):not(.done) {
background: #1b2328;
color: #82919a;
}
.btn-primary:disabled {
background: #23303a;
border-color: #23303a;
color: #82919a;
}
.btn-outline-primary:hover {
background: #12302e;
}
.spin-source {
background: #1b2328;
}
.spin-options li:hover {
background: #1b2328;
}
.spin-seg {
stroke: #0b0d10;
}
}
// Ikona kola se při najetí pootočí
.spin-wheel-icon {
transition: transform 0.4s ease !important;
&:hover {
transform: rotate(180deg) scale(1.15) !important;
}
}