* { margin: 0; padding: 0; }

:root {
    --background-color: white;
} 
   
.dark-theme {
    --background-color: black;
}

body {
    background-color: #ffffff;
    overflow: hidden;
    margin: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    height: 100vh;
    height: 100dvh;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
}

body.dark-theme {
    background-color: #000000;
}

a.title {
    text-decoration: none;
    color: #ffffff;
}

h1 {
    text-align: center;
    font-weight: 800;
}

h2 {
    text-align: left;
    font-weight: 800;
}

.splash h3 {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
    text-align: center;
    font-size: x-large;
    font-weight: bolder;
    padding-right: 25px;
}

.splash-text h4 {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
    text-align: center;
    padding-left: 25px;
    padding-right: 25px;
    font-size: large;
    font-weight: 400;
    padding-bottom: 20px;
}

.settings-feedback h4 {
    padding-bottom: 7px;
}

.splash {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border: 0px solid red;
    height: 100vh; /*Ensure it takes the full viewport height */
}

.splash-content-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    margin: 0 auto; /* Center the content */
    padding-bottom: 100px;
}

.splash h3 {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
    text-align: center;
    font-size: x-large;
    font-weight: bolder;
    padding-right: 8px;
}

.splash-text {
    text-align: center;
    align-content: center;
    display: flex;
    flex-direction: column;
    margin: auto;
}   

.splash-title-row {
    display: flex;
    flex-direction: row;
    justify-content: center;
    text-align: center;
    padding: 20px;
}

.splash-title {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif; 
    font-size: large;
    letter-spacing: .05cap;
    color: black;
    font-weight: bold;
    text-align: left;
    text-decoration: none;
}

.splash-title-release {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
    font-size: medium;
    font-style: italic;
    color: black;
    font-weight: lighter;
    text-align: left;
    padding: 8px 0 0 0px;
    float: left;
}

.splash-elem {
    /* used for hiding/showing splash */
}

.game-elem {
    /* used for hiding/showing game */
    touch-action: none;
}

.game {
    display: flex;
    flex-direction: column;
    width: 100%;
    flex: 1;
    min-height: 0;
}

.game-header {
    width: 100vw;
    height: 35px;
    background: #123652;
    padding: 0px;
    top: 0px;
    position: sticky;
    display: inline-flex;
    flex-direction: row;
    border: 0px solid red;
}

.game-title {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif; 
    font-size: large;
    letter-spacing: .1cap;
    color: white;
    font-weight: bold;
    text-align: left;
    padding: 5px 0px 0px 8px;
    float: left;
    text-decoration: none;
}

.game-title-release {
    font-family: 'Open Sans', 'Helvetica Neue', sans-serif;
    font-size: 1em;
    /* font-style: italic; */
    color: white;
    font-weight: lighter;
    text-align: left;
    padding: 8px 0 6px 6px;
    float: left;
    text-decoration: none;
}

.game-clock {
    margin-left: auto;
    margin-right: auto;
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    /* padding: 2px 2px 2px 2px; */
    justify-content: center;
}

.game-timer {
    color: #FFFFFF;
    letter-spacing: .1em;
    font-family: Verdana, Geneva, Tahoma, sans-serif; 
    font-size: small;
    font-weight: 100;
    max-width: 70px;
    border: 0px solid red;
}

.game-timer-pause-button {
    border-radius: 7px;
    background-color:transparent;
    margin-right: 30px;
    border: none;
    border: 0px solid red;
    max-width: 25px;

}
.paused-button {
    border-radius: 7px;
    background-color: #FFFFFF;
    margin-right: 30px;
    border: 2px solid #496D89;
    width: 25px;
    align-items: center;
}

.pause-icon {
    height: 20px;
    width: 20px;
    padding: 5px 0px 0px 0px;
}

.game-text {
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    padding: 3px;
    font-size: medium;
    text-align: center;
}

.game-icons {
    float: right;
    display: inline-flex;
    flex-direction: row;
    padding: 5px 8px 0px 0px;
    /* margin-right: auto; */
}

.puzzircle-logo {
    height: 85px;
    width: 85px;
    background-image: url("./assets/icons/puzzircle.svg");
}

.puzzircle-logo {
    height: 85px;
    width: 85px;
    background-image: url("./assets/icons/puzzircle.svg");
}

.help-icon {
    height: 25px;
    width: 25px;
    background-image: url("./assets/icons/help.svg");
    color: white;
    margin-right: 2px;
}

.settings-icon {
    height: 25px;
    width: 25px;
    background-image: url("./assets/icons/settings.svg");
    color: white;
    margin-left: 2px;
}

.share-icon {
    height: 25px;
    width: 25px;
    background-image: url("./assets/icons/share.svg");
    color: white;
    margin: 2px;
}

.game-panel {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 10px 0px;
}

.game-theme {
    margin-left: auto;
    margin-right: auto;
    padding: 8px 0;
    color: #123652;
    font-style: italic;
    font-weight: 600;
    font-size: large;
}

.found-block {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    border: 0px solid red;
}

.found-row {
    margin: 3px auto 3px auto;
    width: 195px;
    display: block;
    border: 0px solid red;
}

.dot {
    height: 22px;
    width: 22px;
    border-radius: 50%;
    display: inline-block;
    padding: 3px;
    margin: 1px;
    font-size: x-large;
    font-weight: bold;
    font-family: monospace;
    border: 2px solid #D4BA6A;
}

.dot-blank {
    background-color: #FFEAAA;
    color: #123652;
}
    
.dot-guessed {
    background-color: #496D89;
    /* background-color: #565695; */
    color: #FFEAAA;
}

.dot-missed {
    background-color: #565695;
    color: #FFEAAA;
}

.splash-puzzle {
    display: block;
    margin: auto;
    width: 100px;
    border: 0px solid red;
}

.help-puzzle {
 padding-top: 10px;
}

.ring-0-fill {
    fill: #718EA4;
}

.ring-0 {
    stroke: #718EA4;
    fill: none;
}

.ring-1 {
    stroke: #496D89;
    fill: none;
}

.ring-2 {
    stroke: #29506D;
    fill: none;
}

.ring-3 {
    stroke: #123652;
    fill: none;
}

.ring-4 {
    stroke: #042037;
    fill: none;
}

.ring-border {
    stroke: #D4BA6A;
    stroke-width: .5;
}

.ring-target {
    fill: #FFEAAA;
}

.ring-target-border {
    stroke: #D4BA6A;
    stroke-width: .5;
    fill: none;
}

.ring-target-border-center {
    stroke: #D4BA6A;
    stroke-width: .5;
    /* fill: #D4BA6A; */
    fill: #7C8B96;
} 

.puzzle-container {
    position: relative;
    width: min(100%, calc(100dvh - 35px - 120px));
    max-width: 550px;
    aspect-ratio: 1;
    margin-left: auto;
    margin-right: auto;
    flex-shrink: 0;
}

.puzzle-glass {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 4;
    pointer-events: auto;
}

svg {
    width: 100%;
    height: 100%;
}

svg text {
    font-size: 6px;
    font-weight: lighter;
    font-family: monospace;
    fill:white;
    dominant-baseline: central;
    text-anchor: middle;
    vertical-align: middle;
    border: 0px solid red;
}

.selected {
    font-size: 6.5px;
    font-weight: lighter;
    font-family: monospace;
    dominant-baseline: central;
    text-anchor: middle;
    vertical-align: middle;
    border: 0px solid red;
    fill: #123652;
    font-weight: bold;
}

.block-display {
    display: block;
}

.transparent {
    opacity: 0;
}

/* The Modal (background) */
.modal {
    display: none; /* Hidden by default */
    position: fixed; /* Stay in place */
    z-index: 5; /* Sit on top */
    left: 0;
    top: 0;
    width: 100%; /* Full width */
    height: 100%; /* Full height */
    overflow: auto; /* Enable scroll if needed */
    background-color: rgb(0,0,0); /* Fallback color */
    background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}

.modal-footer {
    padding-top: 5px;
    font-size: small;
}

.modal-header {
    padding-bottom: 10px;
}

.modal-title {
    /* text-align: left; */
    font-weight: 700;
    font-size: x-large;
}

/* Modal Content/Box */
.modal-content {
    background-color: #fefefe;
    margin: 10% auto;
    padding: 15px 15px 15px 15px;
    border: 0px solid #888;
    width: 75%; /* Could be more or less, depending on screen size */
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    max-width: 400px;
}

.modal-content ul {
    padding-left: 10px;
}

.modal-content li {
    margin: 5px 0;
}

.modal-content h3 {
    padding-top: 10px;
    text-align: left;
}
.modal-content h4 {
    padding-top: 5px;
    margin-top: 5px;
    text-align: left;
}

.modal-content p {
    padding-top: 15px;
    padding-bottom: 10px;    
}

.modal a {
    font-size: small;
}

.modal-body {
    padding-top: 10px;
    padding-bottom: 10px;
    font-size: small;
}

/* The Close Button */
.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
}

.close:hover,
.close:focus {
color: black;
text-decoration: none;
cursor: pointer;
}

.expand {
    animation-name: grow-shrink;
    animation-duration: .75s;
    animation-iteration-count: 1;
    animation-fill-mode: forwards;
}

@keyframes grow-shrink {
    40% { 
        transform: scale(1.25);
    }
    80% { 
        transform: scale(1.00); 
    }
}

.status-block {
    /* margin-left: 10px; */
    margin-left: 12px;
    margin-right: auto;
    text-align: left;
    align-content: left;
    border: 0px solid red;
}

.status-block-row {
    position: static;
    /* padding: 3px; */
    display: flex;
    flex-direction: row;
    align-items: center;
    border: 0px solid red;
}

.rotations-section {
    display: none;
    flex-direction: row;
    justify-content: center;
}

.status-label {
    color: #123652;
    font-size: small;
    font-weight: 600;
    border: 0px solid red;
    min-width: 75px;
}

.status-value {
    color: #123652;
    background-color: transparent;
    font-family: Verdana, Geneva, Tahoma, sans-serif; 
    font-weight: 100;
    font-size: small;
    border: 0px solid red;
}

.blink {
    animation: blinker 2s linear infinite;
}
  
@keyframes blinker {
50% {
    /* opacity: 0; */
    color: rgba(0, 0, 0, 0);
}
}

.pause-body {
    display: flex;
    flex-direction: column;
    margin: auto;
    justify-content: center;
    align-items: center;
    min-height: 475px;
}

.spacer {
    min-height: 200px;
}

.pause-text {
    font-size: large;
    padding-top: 20px;
    padding-bottom: 20px;
}

.footer {
    padding: 4px;
    font-size: x-small;
    text-align: center;
    font-family: Verdana, Geneva, Tahoma, sans-serif;
    margin-top: auto;
}

.loader-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    align-content: center;
}

.loader {
    display: flex;
    position: static;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    margin: 50%;
    /* position: relative; */
    height: 50%;
    /* padding: 50%; */
    border: 0px solid red;
}

.lds-ring {
    color: #123652;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.lds-ring,
.lds-ring div {
    box-sizing: border-box;
}
.lds-ring {
    /* display: inline-block; */
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    width: 80px;
    height: 80px;
}

.lds-ring div {
    box-sizing: border-box;
    display: block;
    position: absolute;
    width: 64px;
    height: 64px;
    margin: 8px;
    border: 6px solid currentColor;
    border-radius: 50%;
    animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
    border-color: currentColor transparent transparent transparent;
}
.lds-ring div:nth-child(1) {
    animation-delay: -0.45s;
}
.lds-ring div:nth-child(2) {
    animation-delay: -0.3s;
}
.lds-ring div:nth-child(3) {
    animation-delay: -0.15s;
}

@keyframes lds-ring {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
} 

.buttons {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    /* padding: 5px; */
    align-items: center;
    justify-content: left;
}

button {
    background-color: #a6a4a4;
    border: 2px solid #123652;
    color: #123652;
    padding: 2px 0 ;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    width: 150px;   
    height: 40px;
    border-radius: 40px;
}

.button-primary {
    background-color: #123652;
    color: white;
    border: none;
}

.button-share {
    display: flex;
    vertical-align: middle;
    min-width: fit-content;
    text-align: left; 
    padding: 10px 0px 10px 40px;
}

.share-class {
    top: 0px;
}

.share-svg {
    padding: 5px 5px 5px 10px;
    width: 20px;
}

.settings-difficulty h3 {
    margin-top: 5px;
    padding: 6px;
}

.settings-difficulty {
    margin-top: 5px;
    padding: 6px;
    /* width: 300px; */
}

.settings-difficulty-option {
    border-radius: 10px;
    border: 0px solid #FFFFFF;
    padding: 10px;
    /* width: 300px; */
}

.settings-difficulty-option-selected {
    border-radius: 10px;
    border: 3px solid #496D89;
    max-width: 200px;
}

.settings-feedback {
    margin-left: 6px;
    padding: 6px;
    display: none;
    font-size: small;
}

.google-analytics {
    margin-left: 6px;
    padding: 6px;
    display: none;
    font-size: small;
}

.pointer {
    scale: .04;
    fill: #ffffff;
    stroke-width: 20px;
}

.pointer-border {
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke: #000000;
    stroke-width: 23.967712;
}

.stats {
    padding-top: 5px;
    padding-bottom: 5px;
}

.stats h4 {
    padding-bottom: 5px;
}

.stats-block {
    display: flex;
    padding-left: 5px;
    padding-right: 10px; 
}

.stats-label {
    font-size: 1em;
    font-weight: 400;
    text-align: left;
    padding-top: 4px;
    padding-bottom: 4px;
}

.stats-label-small {
    font-size: .9em;
    font-weight: 400;
    text-align: left;
    padding-top: 4px;
    padding-bottom: 4px;
}

.stats-value {
    font-size: 1em;
    font-weight: 800;
    text-align: left;
    padding-top: 4px;
    padding-bottom: 4px;;
    width: 95px;
}

.stats-value-small {
    font-size: .9em;
    font-weight: 800;
    text-align: left;
    padding-top: 4px;
    padding-bottom: 4px;;
    width: 95px;
}

.snackbar-container {
    position: fixed;
    left: 0;    
    right: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
}

  /* The snackbar - position it at the bottom and in the middle of the screen */
#snackbar {
    visibility: hidden; /* Hidden by default. Visible on click */
    /* min-width: 250px; Set a default minimum width */
    /* margin-left: -125px; Divide value of min-width by 2 */
    background-color: #496D89; /* Black background color */
    color: #FFEAAA; /* White text color */
    text-align: center; /* Centered text */
    border-radius: 2px; /* Rounded borders */
    padding: 10px; /* Padding */
    position: fixed; /* Sit on top of the screen */
    z-index: 3; /* Add a z-index if needed */
    /* left: 50%; Center the snackbar */
    /* bottom: 10%; 30px from the bottom */
    top: 205px;
}

/* Show the snackbar when clicking on a button (class added with JavaScript) */
#snackbar.show {
    visibility: visible; /* Show the snackbar */
    /* Add animation: Take 0.5 seconds to fade in and out the snackbar.
    However, delay the fade out process for 2.5 seconds */
    -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
    animation: fadein 0.5s, fadeout 0.5s 2.5s;
}
  
/* Animations to fade the snackbar in and out */
@-webkit-keyframes fadein {
from {top: 125px; opacity: 0;}
to {top: 205px; opacity: 1;}
}

@keyframes fadein {
from {top: 125px; opacity: 0;}
to {top: 205px; opacity: 1;}
}

@-webkit-keyframes fadeout {
from {top: 205px; opacity: 1;}
to {top: 125px; opacity: 0;}
}

@keyframes fadeout {
from {top: 205px; opacity: 1;}
to {top: 125px; opacity: 0;}
}

.debug-text-light {
font-size: 1px;
font-weight: 100 ;
font-family: monospace;
text-align: center;
fill: #FFFFFF;
border: 0px solid red;
}

.debug-text-dark {
font-size: 2px;
font-weight: 100 ;
font-family: monospace;
text-align: center;
fill: #000000;
border: 0px solid red;
}

.hidden {
    display: none;
}

.game-content-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}  