/* Shared contrast rules. Loaded after the screen styles so link history never
   turns text on a button into the browser's default purple. */
:root{
  --danger:#ff8585;
  --link:#8dd8ff;
  --link-visited:#d3bbf3;
  --link-hover:#fff0a5;
  --focus:#ffc56b;
}

/* Links on the dark game surface. Keep visited links distinct and readable. */
a:link{color:var(--link)}
a:visited{color:var(--link-visited)}
a:hover{color:var(--link-hover)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}

/* Buttons are also anchors in map, onsen, and installation flows. */
.btn,.btn:link,.btn:visited{color:#f2f8f1}
.btn:hover,.btn:focus-visible{color:#ffffff;background:#2a5b51;border-color:#8bcba9}
.btn.primary,.btn.primary:link,.btn.primary:visited{color:#ffffff;background:#256044;border-color:#8fc9a4}
.btn.primary:hover,.btn.primary:focus-visible{background:#337a55;border-color:#b7e0c6}
.btn.ghost,.btn.ghost:link,.btn.ghost:visited{color:#c9dfd6;background:#12292b;border-color:#648579}
.btn.ghost:hover,.btn.ghost:focus-visible{color:#ffffff;background:#21423e;border-color:#9ac7b4}
.btn.danger,.btn.danger:link,.btn.danger:visited{color:#fff6f1;background:#782d2d;border-color:#dc8881}
.btn.danger:hover,.btn.danger:focus-visible{background:#963d38;border-color:#f1aaa1}
.btn small{color:#d3e5dd}
.btn.primary small,.btn.danger small{color:#fff6ed}

/* A disabled control must remain legible without depending on opacity. */
.btn:disabled,.btn[disabled]{opacity:1;color:#c4d4cc;background:#283d39;border-color:#70877c;cursor:not-allowed;pointer-events:none}
.btn:disabled small,.btn[disabled] small{color:#c4d4cc}
.btn.install-entry,.btn.observation-entry{
  color:#214534;background:#fff6df;border-color:#a58148;
}
.btn.install-entry:hover,.btn.observation-entry:hover{
  color:#173b2c;background:#f5eacb;border-color:#6b653a;
}
.btn.install-entry small,.btn.observation-entry small{color:#405a4e}
.mt-item.locked,.gitem.locked{opacity:1;color:#c4d4cc;background:#283d39;border-color:#70877c}
.mt-item.locked .stars.d5{color:#ff9b9b}
.mt-item.locked .meta,.gitem.locked .nm small,.gitem.locked .num{color:#c4d4cc}
.bg.off{opacity:1;filter:grayscale(1);color:#c4d4cc}

/* The paper surfaces use dark text and their own link palette. Nested .sub,
   tags and controls must inherit this palette rather than the dark-game one. */
body.school-mode main,.field-school,.field-figure,.learning-block,
.explanation-four,.judgment-summary,.gear-category-nav,.gear-item-row,
.room-category-card,.adventure-scene,.packing-board,.resume-card,
.trip-diary,.trip-empty,.discovery-card,.favorite-scene,.observation-entry,
.observation-complete,.modal:has(.figure-zoom),
.modal:has(.gear-detail-figure),.modal:has(.install-guide){
  --ink:#193d32;--dim:#405a4e;--accent:#285d3e;
  --warn:#804208;--danger:#922e2e;--water:#28627e;--exp:#684486;
  --link:#14556a;--link-visited:#654183;--link-hover:#713b08;
  --focus:#a34b0d;
}
.adventure-save,.gear-mode-intro,.route-details{
  --ink:#eaf5f0;--dim:#b8d4c8;--accent:#79ddb0;
  --warn:#ffc857;--danger:#ff8585;
  --link:#8dd8ff;--link-visited:#d3bbf3;--link-hover:#fff0a5;
  --focus:#ffc56b;
}

/* Paper controls, including visited anchor buttons. */
.field-school .btn,.field-school .btn:link,.field-school .btn:visited,
.learning-block .btn,.learning-block .btn:link,.learning-block .btn:visited,
.gear-category-nav .btn,.gear-category-nav .btn:link,.gear-category-nav .btn:visited,
.trip-diary .btn,.trip-diary .btn:link,.trip-diary .btn:visited,
.resume-card .btn:not(.primary),.resume-card .btn:not(.primary):link,.resume-card .btn:not(.primary):visited,
.modal:has(.gear-detail-figure) .btn,.modal:has(.gear-detail-figure) .btn:link,.modal:has(.gear-detail-figure) .btn:visited,
.install-guide .btn,.install-guide .btn:link,.install-guide .btn:visited{
  color:#214534;background:#e8efdc;border-color:#7d987b;
}
.field-school .btn:hover,.learning-block .btn:hover,.gear-category-nav .btn:hover,
.trip-diary .btn:hover,.resume-card .btn:hover,
.modal:has(.gear-detail-figure) .btn:hover,.install-guide .btn:hover{
  color:#153b2b;background:#d6e5ca;border-color:#315d40;
}
.field-school .btn.primary,.field-school .btn.primary:visited,
.learning-block .btn.primary,.learning-block .btn.primary:visited,
.modal:has(.gear-detail-figure) .btn.primary,.modal:has(.gear-detail-figure) .btn.primary:visited,
.install-guide .btn.primary,.install-guide .btn.primary:visited,
body.school-mode .modal .btn.primary,body.school-mode .modal .btn.primary:visited{
  color:#fffdf5;background:#315c3d;border-color:#315c3d;
}
.field-school .btn.primary:hover,.learning-block .btn.primary:hover,
.modal:has(.gear-detail-figure) .btn.primary:hover,.install-guide .btn.primary:hover,
body.school-mode .modal .btn.primary:hover{background:#244d33;border-color:#244d33;color:#ffffff}
.trip-diary .btn.primary,.trip-diary .btn.primary:visited,
.resume-card .btn.primary,.resume-card .btn.primary:visited,
.gear-category-nav .btn.primary,.gear-category-nav .btn.primary:visited{
  color:#fffdf5;background:#315c3d;border-color:#315c3d;
}
.field-school .btn:not(.primary) small,.learning-block .btn:not(.primary) small,
.gear-category-nav .btn:not(.primary) small,
.trip-diary .btn:not(.primary) small,.resume-card .btn:not(.primary) small,
.modal:has(.gear-detail-figure) .btn:not(.primary) small,
.install-guide .btn:not(.primary) small,.adventure-save .btn small{
  color:#405a4e;
}
.field-school .btn.primary small,.learning-block .btn.primary small,
.trip-diary .btn.primary small,.resume-card .btn.primary small,
.gear-category-nav .btn.primary small,.install-guide .btn.primary small,
.modal:has(.gear-detail-figure) .btn.primary small,
body.school-mode .modal .btn.primary small{color:#fff6ed}
body.school-mode .modal .btn,body.school-mode .modal .btn:link,body.school-mode .modal .btn:visited{
  color:#193d32;background:#fffaf0;border-color:#69806c;
}
body.school-mode .modal .btn.primary,body.school-mode .modal .btn.primary:visited{color:#fffdf5;background:#315c3d}

/* Modals can be paper-coloured even while the game body remains dark. */
.modal:has(.figure-zoom)>.btn,.modal:has(.figure-zoom)>.btn:visited{color:#fffaf0;background:#193d32;border-color:#193d32}
.modal:has(.gear-detail-figure) .sub,.modal:has(.install-guide) .sub{color:var(--dim)}
.field-school .tag,.learning-block .tag,.gear-category-nav .tag,.gear-item-row .tag,
.modal:has(.gear-detail-figure) .tag{background:#e5eddf;color:#304f40;border-color:#779177}
.field-school .tag.warn,.learning-block .tag.warn{color:#804208;background:#fff0d4;border-color:#a26d32}
.field-school .tag.dan,.learning-block .tag.dan{color:#922e2e;background:#fbe5de;border-color:#ad6864}
.field-school .tag.ok,.learning-block .tag.ok{color:#285d3e;background:#e3efdf;border-color:#669071}
.field-school select,.field-school input,.learning-block select,.learning-block input,
body.school-mode .modal select,body.school-mode .modal input,
.modal:has(.install-guide) input{color:#193d32;background:#fffdf5;border-color:#69806c}
select,input[type=text],input[type=number],input[type=url],textarea{
  border-color:#7ca698;
}
/* Import/export dialogs still carry legacy inline textarea colours. */
body.school-mode .modal textarea{color:#193d32!important;background:#fffdf5!important;border-color:#69806c!important}
.field-school .btn:disabled,.field-school .btn[disabled],.learning-block .btn:disabled,
body.school-mode .modal .btn:disabled,.install-guide .btn:disabled{
  opacity:1;color:#435a4a;background:#dce2d6;border-color:#849987;
}
.gear-item-row .gitem.locked{color:#193e33;background:#f2f3e9;border-color:#819781}
.gear-item-row .gitem.locked .nm small,.gear-item-row .gitem.locked .num{color:#3c574b}

/* Commercial link has a separate warm identity, including after a visit. */
.room-link,.room-link:link,.room-link:visited{color:#fffaf0;background:#8a4a12;border-color:#713a0e}
.room-link:hover,.room-link:focus-visible{color:#ffffff;background:#713707;border-color:#713707}
.room-link:focus-visible{outline-color:#315c3d}
.adventure-save .btn,.adventure-save .btn:link,.adventure-save .btn:visited{
  color:#183d32;background:#fff8e7;border-color:#849f8e;
}

/* Help and source links should remain links on light surfaces. */
.install-guide a:not(.btn):link,.install-guide a:not(.btn):visited,
body.school-mode .modal a:not(.btn):link,body.school-mode .modal a:not(.btn):visited{
  color:#14556a;
}
