/* Matches the town login screen (SplashScreenPanel + LoginPanel): the marina photo
   under a dark wash, the white logo, a translucent navy card with white text, white
   fields, and the navy button with the help link beside it. */
:root { --navy: rgb(23 44 79); --err: #ffd2d2; }
* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100vh; }
body { font: 16px/1.5 "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; color: #fff;
       background: var(--navy) url(/images/background.webp) center center / cover no-repeat fixed; }
.page { min-height: 100vh; display: flex; flex-direction: column; align-items: center; padding: 50px 16px;
        background-color: rgb(0 0 0 / 40%); }
.brand { display: block; margin-bottom: 2rem; }
.brand img { display: block; width: 300px; height: 100px; max-width: 100%; object-fit: contain; }
.card { width: 100%; max-width: 432px; padding: 20px; border-radius: 8px; text-align: left;
        background: rgb(29 57 101 / 30%); border: 1px solid rgb(0 0 0 / 10%);
        box-shadow: 0 4px 30px rgb(0 0 0 / 20%); backdrop-filter: blur(6.5px); -webkit-backdrop-filter: blur(6.5px); }
h1 { font-size: 1.5em; font-weight: 400; margin: 0 0 16px; color: #fff; text-shadow: 1px 1px #444; }
p, a { color: #fff; text-shadow: 1px 1px #444; }
label { display: block; font-size: 16px; margin: 12px 0 6px; }
input { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 3px; font: inherit; color: #222; background: #fff; }
input:focus { outline: 2px solid #9ec5ff; outline-offset: 1px; }
.actions { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 12px; }
button { min-width: 148px; padding: 8px 24px; border: 1px solid var(--navy); border-radius: 3px; background: var(--navy);
         color: #fff; font: inherit; letter-spacing: .5px; cursor: pointer; }
button:hover { filter: brightness(1.15); }
.msg { color: var(--err); min-height: 1.5em; margin: 6px 0 0; }
.who { margin: -8px 0 4px; opacity: .9; }
.small { text-align: center; font-size: 14px; }
.towns { list-style: none; padding: 0; margin: 16px 0 0; }
.towns li a { display: block; padding: 12px; margin-bottom: 8px; border: 1px solid rgb(255 255 255 / 35%); border-radius: 6px;
              background: rgb(255 255 255 / 8%); text-decoration: none; font-weight: 600; }
.towns li a:hover { background: rgb(255 255 255 / 16%); }
@media (max-width: 767px) { .page { padding-top: 20px; } }
/* Busy: the same cue the town login's Log In button gives while it waits. */
button:disabled { cursor: progress; filter: none; opacity: .85; }
button.busy { position: relative; color: transparent; }
button.busy::after { content: ""; position: absolute; inset: 0; margin: auto; width: 18px; height: 18px;
                     border: 2px solid rgb(255 255 255 / 40%); border-top-color: #fff; border-radius: 50%;
                     animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { button.busy::after { animation-duration: 2s; } }
