/* [project]/app/admin/admin.css [app-client] (css) */
.admin-page {
  --admin-green: #00843d;
  --admin-green-dark: #006b32;
  --admin-orange: #f58220;
  --admin-ink: #18352a;
  --admin-muted: #63736b;
  --admin-border: #dce7df;
  --admin-surface: #fff;
  --admin-background: #f4f8f4;
  width: 100%;
  min-height: 0;
  color: var(--admin-ink);
  font-family: var(--font-normal), sans-serif;
  background: var(--admin-background);
  flex-direction: column;
  flex: 1;
  gap: .85rem;
  margin: 0;
  padding: .75rem;
  display: flex;
  overflow: hidden;
}

#Layout:has(.admin-page) {
  background: #f4f8f4;
  grid-template-rows: minmax(0, 1fr) auto;
  grid-template-areas: none;
  height: 100dvh;
  min-height: 0;
}

#Layout:has(.admin-page) > #Footer {
  line-height: 1rem;
}

.admin-main {
  flex-direction: column;
  flex: 1;
  gap: .85rem;
  min-width: 0;
  min-height: 0;
  display: flex;
}

.admin-password-field {
  flex-direction: column;
  gap: .25rem;
  width: min(100%, 24rem);
  display: flex;
}

.admin-access {
  background: var(--admin-background, #f4f8f4);
  min-height: 100%;
  color: var(--admin-ink, #18352a);
  font-family: var(--font-normal), sans-serif;
  place-items: center;
  padding: 1rem;
  display: grid;
}

.admin-access-form {
  border: 1px solid var(--admin-border, #dce7df);
  background: #fff;
  border-radius: .8rem;
  flex-direction: column;
  gap: .75rem;
  width: min(100%, 24rem);
  padding: 1.5rem;
  display: flex;
  box-shadow: 0 .2rem .65rem #18352a1a;
}

.admin-access-form h1 {
  color: var(--admin-green-dark, #006b32);
  margin: 0;
}

.admin-access-form-field {
  flex-direction: column;
  gap: .75rem;
  display: flex;
}

.admin-access-form input {
  width: 100%;
  font: inherit;
  border: 1px solid #bdcdc2;
  border-radius: .45rem;
  padding: .5rem .6rem;
}

.admin-access-form button {
  background: var(--admin-green, #00843d);
  color: #fff;
  min-height: 2.5rem;
  font: inherit;
  cursor: pointer;
  border: 0;
  border-radius: .45rem;
}

.admin-access-form p {
  color: #922b21;
  margin: 0;
}

.admin-page, .assignment-list, .locations-editor {
  scrollbar-color: var(--admin-green) #e3ece5;
  scrollbar-width: thin;
}

.admin-page::-webkit-scrollbar {
  width: .7rem;
}

.assignment-list::-webkit-scrollbar {
  width: .7rem;
}

.locations-editor::-webkit-scrollbar {
  width: .7rem;
}

.admin-page::-webkit-scrollbar-track {
  background: #e3ece5;
  border-radius: 1rem;
}

.assignment-list::-webkit-scrollbar-track {
  background: #e3ece5;
  border-radius: 1rem;
}

.locations-editor::-webkit-scrollbar-track {
  background: #e3ece5;
  border-radius: 1rem;
}

.admin-page::-webkit-scrollbar-thumb {
  background: var(--admin-green);
  border: 2px solid #e3ece5;
  border-radius: 1rem;
}

.assignment-list::-webkit-scrollbar-thumb {
  background: var(--admin-green);
  border: 2px solid #e3ece5;
  border-radius: 1rem;
}

.locations-editor::-webkit-scrollbar-thumb {
  background: var(--admin-green);
  border: 2px solid #e3ece5;
  border-radius: 1rem;
}

.admin-page::-webkit-scrollbar-thumb:hover {
  background: var(--admin-orange);
}

.assignment-list::-webkit-scrollbar-thumb:hover {
  background: var(--admin-orange);
}

.locations-editor::-webkit-scrollbar-thumb:hover {
  background: var(--admin-orange);
}

.assignment-list {
  overscroll-behavior: contain;
  flex-direction: column;
  flex: 1;
  gap: .6rem;
  min-width: 0;
  min-height: 0;
  padding: .15rem .3rem .75rem .15rem;
  display: flex;
  overflow: hidden auto;
}

.locations-editor {
  flex: 1;
  min-width: 0;
  min-height: 0;
  padding: .15rem .3rem .75rem .15rem;
  overflow: auto;
}

.locations-heading {
  justify-content: space-between;
  align-items: center;
  gap: .75rem;
  margin-bottom: .65rem;
  display: flex;
}

.locations-heading h2 {
  color: var(--admin-green-dark);
  margin: 0;
}

.location-list {
  flex-direction: column;
  display: flex;
}

.location-card, .location-add-card {
  break-inside: avoid;
  width: 100%;
  margin: 0 0 .9rem;
}

.location-card {
  vertical-align: top;
  display: flex;
}

.location-add-card {
  display: block;
}

.location-card {
  border: 1px solid var(--admin-border);
  background: var(--admin-surface);
  border-radius: .8rem;
  flex-direction: column;
  gap: .55rem;
  min-width: 0;
  padding: .7rem;
  display: flex;
  position: relative;
  box-shadow: 0 .2rem .55rem #18352a1f;
}

.location-card-invalid {
  border-color: #c0392b;
}

.location-card-heading, .location-question-answer-heading {
  align-items: center;
  gap: .25rem;
  display: flex;
}

.location-card-heading h3 {
  min-width: 0;
  color: var(--admin-green-dark);
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
  flex: 1;
  margin: 0;
  overflow: hidden;
}

.location-card-title {
  cursor: pointer;
}

.location-card-title:focus-visible {
  outline: 2px solid var(--admin-orange);
  outline-offset: .2rem;
}

.location-card-content {
  flex-direction: column;
  gap: .55rem;
  display: flex;
}

.location-card-actions {
  display: flex;
}

.location-card-actions button, .location-card-actions a, .location-question-answer-heading button {
  width: 1.75rem;
  min-width: 1.75rem;
  height: 1.75rem;
  min-height: 1.75rem;
  color: var(--admin-green-dark);
  box-shadow: none;
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  display: grid;
}

.location-card-actions a {
  color: var(--admin-green-dark);
  text-decoration: none;
}

.location-card-actions a:focus-visible {
  outline: 2px solid var(--admin-orange);
  outline-offset: .15rem;
}

.location-game-link svg {
  fill: currentColor;
  width: 1rem;
  height: 1rem;
}

.location-card-actions button:disabled, .location-question-answer-heading button:disabled {
  opacity: .45;
  cursor: not-allowed;
}

.location-card-actions .location-remove-button, .location-question-answer-heading button:last-child {
  color: #922b21;
}

.location-confirm-overlay {
  z-index: 120;
  background: #22222280;
  place-items: center;
  padding: 1rem;
  display: grid;
  position: fixed;
  inset: 0;
}

.location-confirm-modal {
  background: #fff;
  border-radius: 1rem;
  width: min(100%, 24rem);
  padding: 1.1rem;
  box-shadow: 0 .8rem 2rem #18352a33;
}

.location-confirm-modal h2 {
  color: var(--admin-green-dark);
  margin: 0 0 .5rem;
  font-size: 1.2rem;
}

.location-confirm-modal p {
  color: var(--admin-ink);
  margin: 0;
}

.location-confirm-actions {
  flex-wrap: nowrap;
  justify-content: center;
  gap: .6rem;
  margin-top: 1rem;
  display: flex;
}

.location-confirm-actions button {
  border: 1px solid var(--admin-border);
  min-height: 2.5rem;
  color: var(--admin-ink);
  font: inherit;
  cursor: pointer;
  background: #f4f8f4;
  border-radius: .6rem;
  padding: .45rem .85rem;
}

.location-confirm-actions .location-confirm-delete {
  color: #fff;
  background: #922b21;
  border-color: #922b21;
}

.location-confirm-actions .location-confirm-download {
  border-color: var(--admin-green);
  background: var(--admin-green);
  color: #fff;
}

.location-confirm-actions button:disabled {
  opacity: .65;
  cursor: wait;
}

.location-top-row {
  align-items: flex-start;
  gap: .85rem;
  display: flex;
}

.location-main-fields {
  flex-direction: column;
  flex: 1;
  gap: .45rem;
  min-width: 0;
  display: flex;
}

.location-picture-panel {
  flex: none;
  justify-content: center;
  align-items: center;
  display: flex;
}

.location-picture-trigger {
  border: 1px solid var(--admin-border);
  width: 8rem;
  height: 8rem;
  color: var(--admin-green-dark);
  cursor: pointer;
  background: #f7faf7;
  border-radius: .9rem;
  place-items: center;
  padding: 0;
  display: grid;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px #18352a08;
}

.location-picture-trigger img, .print-location-picture img {
  object-fit: contain;
  width: 100%;
  height: 100%;
  display: block;
}

.location-picture-placeholder {
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  display: grid;
}

.location-picture-placeholder svg {
  fill: currentColor;
  width: 100%;
  height: 100%;
}

.picture-upload-preview {
  border: 1px solid var(--admin-border);
  background: #f7faf7;
  border-radius: .75rem;
  justify-content: center;
  align-items: center;
  min-height: 8rem;
  max-height: 18rem;
  display: flex;
  overflow: hidden;
}

.picture-upload-preview img {
  object-fit: contain;
  max-width: 100%;
  max-height: 18rem;
  display: block;
}

.picture-camera-preview {
  flex-direction: column;
  gap: .6rem;
  display: flex;
}

.picture-camera-preview video {
  object-fit: contain;
  background: #111;
  border-radius: .75rem;
  width: 100%;
  max-height: 60dvh;
  display: block;
}

.picture-upload-actions {
  justify-content: space-between;
  gap: .75rem;
  display: flex;
}

.picture-upload-actions button {
  border: 1px solid var(--admin-border);
  background: var(--admin-green);
  color: #fff;
  min-height: 2.5rem;
  font: inherit;
  cursor: pointer;
  border-radius: .75rem;
  justify-content: center;
  align-items: center;
  padding: .5rem .9rem;
  display: inline-flex;
}

.picture-upload-actions button:disabled {
  opacity: .65;
  cursor: wait;
}

.picture-upload-actions .picture-delete-button {
  background: #922b21;
  border-color: #922b2166;
}

.location-fields {
  grid-template-columns: minmax(0, 2fr) minmax(6rem, .8fr);
  gap: .45rem;
  display: grid;
}

.location-field, .location-assignment-type {
  flex-direction: column;
  gap: .2rem;
  min-width: 0;
  display: flex;
}

.location-field input, .location-field textarea, .location-assignment-type select {
  width: 100%;
  min-width: 0;
  color: var(--admin-ink);
  font: inherit;
  background: #fff;
  border: 1px solid #bdcdc2;
  border-radius: .45rem;
  padding: .4rem .55rem;
}

.location-field textarea {
  resize: vertical;
  min-height: 3.2rem;
}

.auto-activation-toggle {
  width: auto;
  color: var(--admin-ink);
  cursor: pointer;
  justify-content: flex-start;
  align-self: flex-start;
  align-items: center;
  gap: 1rem;
  margin: 0;
  display: flex;
}

.auto-activation-toggle input {
  box-sizing: border-box;
  width: 1rem;
  height: 1rem;
  accent-color: var(--admin-green-dark);
  background: none;
  border: 0;
  border-radius: 0;
  flex: 0 0 1rem;
  margin: 0;
  padding: 0;
}

.location-assignment {
  border-top: 1px solid var(--admin-border);
  flex-direction: column;
  gap: .5rem;
  padding-top: .55rem;
  display: flex;
}

.location-question-editor {
  flex-direction: column;
  gap: .45rem;
  display: flex;
}

.location-question-editor h4 {
  color: var(--admin-green-dark);
  margin: 0;
}

.location-question-editor-invalid h4 {
  color: #922b21;
}

.location-question-answer {
  border: 1px solid var(--admin-border);
  border-radius: .5rem;
  flex-direction: column;
  gap: .4rem;
  min-width: 0;
  padding: .5rem;
  display: flex;
}

.location-question-answer-heading strong {
  flex: 1;
}

.location-add-card, .question-add-answer {
  color: var(--admin-green);
  box-shadow: none;
  cursor: pointer;
  background: none;
  border: 2px dashed #bdcdc2;
  border-radius: .45rem;
}

.location-add-card {
  min-height: 5rem;
  font-size: 2rem;
  font-weight: 700;
}

.location-add-card:hover, .location-add-card:focus-visible, .question-add-answer:hover, .question-add-answer:focus-visible {
  border-color: var(--admin-green);
  background: #edf5ef73;
}

.admin-main h1 {
  text-align: center;
  font-family: var(--font-header), sans-serif;
  color: var(--admin-green-dark);
  font-weight: 700;
}

.admin-sidebar {
  border: 1px solid var(--admin-border);
  border-top: .25rem solid var(--admin-orange);
  background: var(--admin-surface);
  border-radius: .8rem;
  flex-direction: column;
  flex: none;
  display: flex;
  overflow: hidden;
  box-shadow: 0 .25rem .9rem #18352a14;
}

.admin-menu-header {
  justify-content: space-between;
  align-items: center;
  min-height: 2.8rem;
  padding: 0 .75rem;
  display: flex;
}

.admin-menu-title {
  color: var(--admin-green-dark);
  font-family: var(--font-header), sans-serif;
  font-size: 1.1rem;
  font-weight: 700;
}

.admin-menu-toggle {
  width: 2.5rem;
  min-width: 2.5rem;
  height: 2.5rem;
  min-height: 2.5rem;
  color: var(--admin-green-dark);
  box-shadow: none;
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: .5rem;
  place-items: center;
  padding: .55rem;
  display: grid;
}

.admin-menu-toggle:hover {
  background: #edf5ef;
}

.admin-menu-toggle svg {
  fill: currentColor;
  width: 1.4rem;
  height: 1.4rem;
}

.admin-menu-links {
  flex-direction: column;
  gap: .2rem;
  padding: 0 .5rem .5rem;
  display: none;
}

.admin-sidebar.menu-open .admin-menu-links {
  display: flex;
}

.admin-menu-links button {
  min-height: 2.5rem;
  color: var(--admin-ink);
  box-shadow: none;
  font-family: var(--font-normal), sans-serif;
  text-align: left;
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: .45rem;
  padding: .55rem .75rem;
  font-size: .95rem;
  font-weight: 650;
  transition: background-color .16s, color .16s;
}

.admin-menu-links button:hover, .admin-menu-links button:focus-visible {
  color: var(--admin-green-dark);
  background: #edf5ef;
}

.admin-menu-divider {
  border: 0;
  border-top: 1px solid var(--admin-border);
  width: 100%;
  margin: .25rem 0;
}

.save-feedback {
  color: var(--admin-green-dark);
  text-align: center;
  margin: 0;
}

.save-feedback-error {
  color: #922b21;
}

.location-actions {
  justify-content: flex-end;
  gap: .5rem;
  display: flex;
}

.assignment-box.add-assignment-box {
  min-height: 9rem;
  box-shadow: none;
  background: none;
  border: 1px dashed #9bb9a4;
  border-radius: .9rem;
  place-items: stretch stretch;
  padding: 0;
  display: grid;
}

.add-assignment {
  border-radius: inherit;
  width: 100%;
  height: 100%;
  min-height: 9rem;
  color: var(--admin-green);
  box-shadow: none;
  cursor: pointer;
  background: none;
  border: 0;
  place-items: center;
  padding: 0;
  font-size: 3rem;
  font-weight: 700;
  line-height: 1;
  transition: background-color .16s, color .16s;
  display: grid;
}

.add-assignment:hover {
  color: var(--admin-green-dark);
  background: #00843d0f;
}

.assignment-box.add-assignment-box:hover {
  border-color: #6f9b7c;
}

.assignment-box {
  border: 1px solid var(--admin-border);
  background: var(--admin-surface);
  border-radius: .8rem;
  min-width: 0;
  padding: .65rem 2.4rem .65rem .65rem;
  position: relative;
  box-shadow: 0 .2rem .65rem #18352a12;
}

.assignment-form, .frm-BeepAssignment, .frm-CompassAssignment, .frm-DirectionAssignment, .frm-DistanceAssignment, .frm-MapAssignment, .frm-QuestionAssignment, .frm-StaticAssignment {
  flex-direction: column;
  align-items: stretch;
  gap: .45rem;
  display: flex;
}

.assignment-header {
  grid-template-columns: minmax(6rem, .7fr) minmax(0, 1.3fr);
  align-items: end;
  gap: .6rem;
  display: grid;
}

.assignment-header-field {
  flex-direction: column;
  gap: .25rem;
  min-width: 0;
  display: flex;
}

.assignment-header .assignment-code {
  text-align: left;
}

.assignment-header .assignment-type {
  min-width: 0;
}

.admin-main label {
  font-family: var(--font-normal), sans-serif;
  text-align: left;
  color: var(--admin-ink);
  font-size: .9rem;
  font-weight: 700;
}

.admin-main input, .admin-main select {
  font-family: var(--font-normal), sans-serif;
  color: var(--admin-ink);
  background: #fff;
  border: 1px solid #bdcdc2;
  border-radius: .45rem;
  width: 100%;
  padding: .4rem .6rem;
  font-size: 1rem;
}

.admin-main input::placeholder {
  color: #7a8980;
}

.admin-main input.input-invalid, .admin-main select.input-invalid, .admin-main textarea.input-invalid {
  background: snow;
  border-color: #c0392b;
}

.validation-summary {
  color: #76261e;
  background: snow;
  border: 1px solid #c0392b;
  border-radius: .6rem;
  margin: 0 0 .75rem;
  padding: .75rem 1rem;
}

.validation-summary h2 {
  margin: 0 0 .4rem;
  font-size: 1rem;
}

.validation-summary ul {
  margin: 0;
  padding-left: 1.25rem;
}

.frm-Coordinate {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  align-items: end;
  gap: .35rem;
  display: grid;
}

.coord-field {
  flex-direction: column;
  gap: .25rem;
  min-width: 0;
  display: flex;
}

.coord-field label {
  font-style: italic;
  font-weight: 400;
}

.coordinate-map-button {
  width: 2.75rem;
  min-width: 2.75rem;
  height: 2.75rem;
  min-height: 2.75rem;
  color: var(--admin-green-dark);
  box-shadow: none;
  cursor: pointer;
  background: #fff;
  border: 0;
  border-radius: .45rem;
  place-items: center;
  padding: .6rem;
  transition: background-color .16s;
  display: grid;
}

.coordinate-map-button:hover {
  background: #edf5ef;
}

.coordinate-map-button:focus-visible {
  outline: 2px solid var(--admin-green);
  outline-offset: 2px;
}

.coordinate-map-button svg {
  fill: currentColor;
  width: 1.35rem;
  height: 1.35rem;
}

.frm-StaticAssignment p, .frm-QuestionAssignment p {
  color: #555;
  text-align: left;
}

.question-field, .question-answer-fields > div {
  flex-direction: column;
  gap: .25rem;
  min-width: 0;
  display: flex;
}

.question-answers {
  flex-direction: column;
  gap: .45rem;
  display: flex;
}

.question-answers h2 {
  color: var(--admin-green-dark);
  text-align: left;
  margin: 0;
  font-size: 1rem;
}

.question-answer {
  border: 1px solid var(--admin-border);
  border-radius: .6rem;
  flex-direction: column;
  gap: .45rem;
  min-width: 0;
  margin: 0;
  padding: 2.15rem .6rem .6rem;
  display: flex;
  position: relative;
}

.question-answer legend {
  color: var(--admin-green-dark);
  padding: 0 .25rem;
  font-weight: 700;
}

.question-answer-fields {
  grid-template-columns: minmax(0, 1fr);
  gap: .45rem;
  display: grid;
}

.question-answer-fields > div:first-child {
  transform: translateY(-1rem);
}

.question-answer-actions {
  align-items: center;
  gap: 0;
  display: flex;
  position: absolute;
  top: -1.675rem;
  right: .35rem;
}

.question-answer-actions button {
  background: var(--admin-surface);
  width: 1.75rem;
  min-width: 1.75rem;
  height: 1.75rem;
  min-height: 1.75rem;
  color: var(--admin-green-dark);
  box-shadow: none;
  cursor: pointer;
  border: 0;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  display: grid;
}

.question-answer-actions button:hover:not(:disabled) {
  background: #edf5ef;
}

.question-answer-actions button:disabled {
  opacity: .5;
  cursor: not-allowed;
}

.question-answer-actions .question-answer-remove {
  color: #922b21;
}

.question-answer-actions .question-answer-remove:hover:not(:disabled) {
  background: #c0392b1a;
}

.question-answer-actions svg {
  fill: currentColor;
  width: 1rem;
  height: 1rem;
}

.question-add-answer {
  place-items: center;
  width: 100%;
  min-width: 0;
  min-height: 2.25rem;
  padding: .4rem;
  display: grid;
}

.question-add-answer svg {
  fill: currentColor;
  width: 1rem;
  height: 1rem;
}

.admin-location-content {
  flex-direction: column;
  gap: .6rem;
  min-width: 0;
  height: 100%;
  display: flex;
}

.location-map-toolbar {
  justify-content: space-between;
  align-items: center;
  display: flex;
}

.location-map-toolbar p {
  text-align: left;
}

.location-map-icons {
  gap: .35rem;
  margin-left: auto;
  margin-right: .5rem;
  display: flex;
}

.location-map-icon-button {
  border: 1px solid var(--admin-border);
  background: var(--admin-surface);
  color: var(--admin-green-dark);
  cursor: pointer;
  border-radius: .45rem;
  justify-content: center;
  align-items: center;
  padding: .4rem;
  display: inline-flex;
}

.location-map-icon-button svg {
  fill: currentColor;
  width: 1.3rem;
  height: 1.3rem;
}

.location-map-icon-button[aria-pressed="true"] {
  background: var(--admin-green-dark);
  color: #fff;
}

.location-map-icon-button:hover, .location-map-icon-button:focus-visible {
  background: #edf5ef;
}

.location-map-icon-button[aria-pressed="true"]:hover, .location-map-icon-button[aria-pressed="true"]:focus-visible {
  background: var(--admin-green-dark);
}

.admin-location-map {
  flex: 1;
  width: 100%;
  min-height: 12rem;
}

.admin-location-coordinates {
  flex: none;
  justify-content: center;
  gap: 1rem;
  display: flex;
}

.location-modal-overlay {
  z-index: 100;
  background: #18352a80;
  place-items: center;
  padding: 1rem;
  display: grid;
  position: fixed;
  inset: 0;
}

.location-modal {
  border: 1px solid var(--admin-border);
  background: var(--admin-surface);
  border-radius: 1rem;
  flex-direction: column;
  width: 100%;
  max-width: 48rem;
  height: min(82vh, 42rem);
  display: flex;
  overflow: hidden;
  box-shadow: 0 .8rem 2rem #18352a40;
}

.location-modal-header {
  border-bottom: 1px solid var(--admin-border);
  flex: none;
  justify-content: space-between;
  align-items: center;
  padding: .65rem 1rem;
  display: flex;
}

.location-modal-header h2 {
  color: var(--admin-green-dark);
  text-align: left;
  margin: 0;
}

.location-modal-body {
  flex-direction: column;
  flex: 1;
  min-height: 0;
  padding: .75rem;
  display: flex;
}

.location-modal-body > * {
  height: 100%;
}

.signal-measurement-modal {
  max-width: 36rem;
  height: auto;
  max-height: 82vh;
}

.signal-measurements {
  overflow: auto;
}

.signal-measurements > p {
  text-align: left;
  margin-bottom: .75rem;
}

.signal-measurement-section + .signal-measurement-section {
  margin-top: 1rem;
}

.signal-measurement-section h3 {
  color: var(--admin-green-dark);
  text-align: left;
  margin-bottom: .35rem;
  font-size: 1rem;
}

.signal-measurement-section p {
  text-align: left;
}

.signal-measurement-values {
  grid-template-columns: 1fr auto;
  gap: .2rem 1rem;
  display: grid;
}

.signal-measurement-values dd {
  text-align: right;
}

.signal-measurement-actions {
  justify-content: flex-end;
  gap: .6rem;
  margin-top: 1rem;
  display: flex;
}

.frm-remove {
  color: #c0392b;
  width: 1.75rem;
  min-width: 1.75rem;
  height: 1.75rem;
  min-height: 1.75rem;
  box-shadow: none;
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  transition: all .3s ease-in-out;
  display: grid;
  position: absolute;
  top: .5rem;
  right: .5rem;
}

.frm-remove:hover {
  color: #922b21;
  background: #c0392b1a;
}

.frm-remove svg {
  fill: currentColor;
  width: 1rem;
  height: 1rem;
}

.upload-modal-overlay {
  z-index: 100;
  background: #22222280;
  place-items: center;
  padding: 1rem;
  display: grid;
  position: fixed;
  inset: 0;
}

.upload-modal {
  background: #fff;
  border-radius: 1rem;
  flex-direction: column;
  width: 100%;
  max-width: 32rem;
  max-height: 85vh;
  display: flex;
  overflow: hidden;
  box-shadow: 0 .8rem 2rem #18352a33;
}

.upload-modal-header {
  border-bottom: 1px solid #e2e2e2;
  justify-content: space-between;
  align-items: center;
  padding: .75rem 1rem;
  display: flex;
}

.upload-modal-header h2 {
  text-align: left;
  color: #222;
  margin: 0;
  font-size: 1.28rem;
}

.modal-close {
  color: #666;
  width: 2rem;
  min-width: 2rem;
  height: 2rem;
  min-height: 2rem;
  box-shadow: none;
  cursor: pointer;
  background: none;
  border: 0;
  border-radius: 50%;
  place-items: center;
  padding: 0;
  transition: all .3s ease-in-out;
  display: grid;
}

.modal-close:hover {
  color: #222;
  background: #22222214;
}

.modal-close svg {
  fill: currentColor;
  width: 1.1rem;
  height: 1.1rem;
}

.upload-modal-body {
  flex-direction: column;
  gap: .75rem;
  padding: 1rem;
  display: flex;
  overflow: auto;
}

.upload-dropzone {
  cursor: pointer;
  background: #f7f9fc;
  border: 2px dashed #c9c9c9;
  border-radius: 1rem;
  flex-direction: column;
  align-items: center;
  gap: .5rem;
  padding: 2rem 1rem;
  transition: all .3s ease-in-out;
  display: flex;
}

.upload-dropzone:hover, .upload-dropzone.dragging {
  border-color: var(--admin-green);
  background: #00843d0f;
}

.upload-dropzone p {
  text-align: center;
  color: #222;
  margin: 0;
}

.upload-icon {
  width: 2.5rem;
  height: 2.5rem;
  fill: var(--admin-green);
}

.upload-filename {
  color: var(--admin-green-dark);
  font-size: .85rem;
}

.upload-file-input {
  display: none;
}

.upload-error {
  background: #c0392b14;
  border: 1px solid #e8b7b3;
  border-radius: .5rem;
  padding: .75rem;
}

.upload-error pre {
  text-align: left;
  white-space: pre-wrap;
  color: #922b21;
  margin: 0;
  font-size: .85rem;
}

@media (min-width: 680px) {
  .admin-page {
    gap: .75rem;
    padding: .75rem 1rem;
  }

  .admin-menu-toggle {
    display: none;
  }

  .admin-menu-header {
    min-height: 2.5rem;
    padding: 0 .85rem;
  }

  .admin-menu-links, .admin-sidebar.menu-open .admin-menu-links {
    flex-flow: wrap;
    align-items: center;
    gap: .25rem;
    padding: 0 .55rem .5rem;
    display: flex;
  }

  .admin-menu-links button {
    min-height: 2.25rem;
    padding: .45rem .7rem;
  }

  .admin-menu-divider {
    border-top: 0;
    border-left: 1px solid var(--admin-border);
    width: auto;
    height: 1.5rem;
    margin: 0 .2rem;
  }
}

@media (min-width: 900px) and (orientation: landscape) {
  .admin-page {
    background: var(--admin-surface);
    border-radius: 1rem;
    width: 100%;
    max-width: 72rem;
    margin-inline: auto;
    padding: .9rem clamp(1rem, 2vw, 2rem);
    overflow: hidden auto;
    box-shadow: 0 .75rem 2.25rem #18352a24;
  }

  .admin-main {
    flex: none;
    min-height: auto;
  }

  .locations-editor {
    flex: none;
    overflow: visible;
  }

  .assignment-list {
    columns: 20rem;
    column-fill: balance;
    flex: none;
    column-gap: .65rem;
    height: auto;
    min-height: auto;
    display: block;
    overflow: visible;
  }

  .assignment-box {
    break-inside: avoid;
    margin-bottom: .65rem;
  }

  .upload-modal, .location-modal {
    border-radius: 1rem;
    width: 94vw;
    max-width: none;
    height: 92vh;
    max-height: 92vh;
  }

  .upload-modal-overlay, .location-modal-overlay {
    padding: 2vh 3vw;
  }

  .admin-location-map {
    min-height: 0;
  }
}

@media (max-width: 679px) {
  .assignment-header {
    grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
  }
}

.print-export {
  z-index: 1200;
  color: #111;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  background: #e9eee9;
  padding: 1rem;
  font-family: Arial, sans-serif;
  position: fixed;
  inset: 0;
  overflow: auto;
}

.print-toolbar {
  background: #fff;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  max-width: 210mm;
  margin: 0 auto 1rem;
  padding: 1rem;
  display: flex;
}

.print-toolbar h1, .print-toolbar p {
  margin: 0 0 .35rem;
}

.print-toolbar p {
  color: #444;
  font-size: .9rem;
}

.print-toolbar-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .5rem;
  display: flex;
}

.print-toolbar-actions button {
  min-height: 2.5rem;
  padding: .5rem .8rem;
}

.print-error {
  color: #922b21;
  white-space: pre-line;
  background: #fff2f0;
  max-width: 210mm;
  margin: 0 auto 1rem;
  padding: .75rem;
}

.print-page {
  background: #fff;
  width: 210mm;
  height: 297mm;
  margin: 0 auto 1rem;
  position: relative;
  overflow: hidden;
  box-shadow: 0 1px 8px #0003;
}

.print-poster {
  padding: 14mm;
}

.print-logo {
  width: 42mm;
  height: auto;
  display: block;
}

.print-poster-center {
  flex-direction: column;
  align-items: center;
  gap: 8mm;
  width: 100%;
  display: flex;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -43%);
}

.print-qr {
  width: 74mm;
  height: 74mm;
  display: block;
}

.print-code {
  overflow-wrap: anywhere;
  text-align: center;
  letter-spacing: .08em;
  max-width: 170mm;
  margin: 0;
  font-size: 24pt;
  font-weight: 700;
}

.print-index {
  flex-direction: column;
  padding: 12mm;
  display: flex;
}

.print-index-header {
  border-bottom: 1px solid #555;
  justify-content: space-between;
  align-items: baseline;
  display: flex;
}

.print-index-header h1 {
  margin: 0 0 6mm;
  font-size: 20pt;
}

.print-index-header p {
  margin: 0;
  font-size: 10pt;
}

.print-placement-grid {
  flex: 1;
  grid-template-rows: repeat(2, minmax(0, 1fr));
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6mm;
  padding: 6mm 0;
  display: grid;
}

.print-placement-card {
  break-inside: avoid;
  border: 1px solid #777;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  padding: 4mm;
  display: flex;
}

.print-placement-card h2 {
  overflow-wrap: anywhere;
  margin: 0 0 2mm;
  font-size: 16pt;
}

.print-description {
  overflow-wrap: anywhere;
  margin: 0 0 3mm;
  font-size: 10pt;
}

.print-location-picture {
  background: #f2f6f2;
  border: 1px solid #d4d9d4;
  border-radius: 2mm;
  width: 100%;
  height: 26mm;
  margin: 0 0 3mm;
  overflow: hidden;
}

.print-map {
  background: #e6e6e6;
  flex: 1;
  height: 100%;
  min-height: 0;
  position: relative;
  overflow: hidden;
}

.print-map .leaflet-container {
  width: 100%;
  height: 100%;
}

.print-coordinate {
  color: #333;
  margin: 2mm 0 0;
  font-size: 8pt;
}

.print-coordinate a {
  color: inherit;
  text-decoration: none;
}

@media print {
  @page {
    size: A4 portrait;
    margin: 0;
  }

  html, body {
    background: #fff !important;
    width: 210mm !important;
    height: auto !important;
    margin: 0 !important;
    overflow: visible !important;
  }

  #Layout:has(.print-export) {
    width: 210mm;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
    overflow: visible !important;
  }

  #Layout:has(.print-export) > :not(.print-export) {
    display: none !important;
  }

  .print-export {
    background: #fff;
    width: 210mm;
    margin: 0;
    padding: 0;
    overflow: visible;
    display: block !important;
    position: static !important;
  }

  .print-toolbar, .print-error {
    display: none !important;
  }

  .print-page {
    width: 210mm;
    height: 297mm;
    box-shadow: none;
    break-after: page;
    page-break-after: always;
    margin: 0;
  }

  .print-page:last-child {
    break-after: auto;
    page-break-after: auto;
  }
}

/*# sourceMappingURL=app_admin_admin_1jsm9-k.css.map*/