@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&family=Noto+Sans+JP:wght@400;600;700&family=Poppins:wght@700&display=swap");

:root {
  --typo-font: "Inter", sans-serif;
  --app-shell-max-width: 860px;
  --app-shell-half-width: calc(var(--app-shell-max-width) / 2);
  --typo-title-size: 80px;
  --typo-title-weight: 700;
  --typo-title-spacing: 0.02em;
  --typo-section-size: 16px;
  --typo-section-weight: 600;
  --typo-section-color: #666;
  --typo-word-size: 32px;
  --typo-word-weight: 700;
  --typo-word-color: #1a2b3c;
  --typo-word-spacing: 0.01em;
  --typo-body-size: 14px;
  --typo-body-weight: 400;
  --typo-body-color: #444;
  --typo-sub-size: 12px;
  --typo-sub-color: #888;
  --shared-card-margin-top: 20px;
  --shared-card-border: 1px solid rgba(26, 53, 74, 0.12);
  --shared-card-radius: 18px;
  --shared-card-background: #ffffff;
  --shared-card-overflow: hidden;
  --shared-card-min-width: auto;
  --shared-card-max-width: none;
  --shared-card-box-shadow: none;
  --shared-card-header-padding: 14px 18px;
  --shared-card-header-border-color: rgba(26, 53, 74, 0.12);
  --shared-card-header-font-size: var(--typo-section-size);
  --shared-card-header-font-weight: var(--typo-section-weight);
  --shared-card-header-color: var(--typo-section-color);
  --shared-card-header-letter-spacing: 0.01em;
  --shared-card-header-bg: rgba(var(--accent-rgb, 15, 143, 123), 0.10);
  --shared-card-header-radius: 10px 10px 0 0;
  --shared-card-header-link-color: var(--accent-dark, #0c7464);
  --shared-card-header-link-hover-color: var(--shared-card-header-link-color);
  --shared-card-header-link-bg: var(--shared-card-header-bg);
  --shared-card-header-link-hover-bg: rgba(var(--accent-rgb, 15, 143, 123), 0.14);
  --shared-entry-padding: 12px;
  --shared-entry-border-width: 1px;
  --shared-entry-border-color: rgba(var(--accent-rgb, 15, 143, 123), 0.22);
  --shared-entry-hover-border-color: rgba(var(--accent-rgb, 15, 143, 123), 0.34);
  --shared-entry-outline-width: 1px;
  --shared-entry-outline-color: rgba(var(--accent-rgb, 15, 143, 123), 0.10);
  --shared-entry-radius: 12px;
  --shared-entry-bg: rgba(var(--accent-rgb, 15, 143, 123), 0.08);
  --shared-entry-hover-bg: rgba(var(--accent-rgb, 15, 143, 123), 0.14);
  --shared-entry-color: var(--text, #16334a);
  --shared-entry-gap: 12px;
  --shared-entry-font-size: 14px;
  --shared-entry-font-weight: 700;
  --shared-entry-min-height: 0;
  --shared-entry-height: auto;
  --fixed-icon-bottom-offset: calc(20px + env(safe-area-inset-bottom, 0px));
}

html,
body {
  font-family: var(--typo-font) !important;
  line-height: 1.6;
  color: #333;
}

html {
  scrollbar-gutter: stable both-edges;
  overflow-y: scroll;
}

html[data-spa-ui-state="transitioning"] .app {
  opacity: 0;
}

[hidden] {
  display: none !important;
}

[data-lucide] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1em;
  height: 1em;
  flex: 0 0 auto;
}

[data-lucide]:empty::before {
  display: block;
  font-family: inherit;
  font-size: 0.72em;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
}

[data-lucide="chevron-left"]:empty::before {
  content: "<";
  font-size: 1em;
}

[data-lucide="ticket"]:empty::before {
  content: "P";
}

[data-lucide="history"]:empty::before {
  content: "H";
}

[data-lucide="book-open"]:empty::before {
  content: "D";
}

[data-lucide="settings"]:empty::before {
  content: "S";
}

[data-lucide="house"]:empty::before {
  content: "T";
}

[data-static-placeholder]:empty::before,
[data-static-list-placeholder]:empty::before {
  color: var(--typo-sub-color, #61788e);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.6;
  white-space: normal;
  letter-spacing: 0.01em;
}

[data-static-placeholder]:empty::before {
  content: attr(data-static-placeholder);
}

[data-static-list-placeholder]:empty {
  list-style: none;
  margin: 0;
  display: grid;
  place-items: center;
  min-height: var(--static-placeholder-min-height, 132px);
  padding: 16px 14px;
  border: 1px dashed rgba(var(--accent-rgb, 15, 143, 123), 0.22);
  border-radius: 12px;
  background: rgba(var(--accent-rgb, 15, 143, 123), 0.05);
}

[data-static-list-placeholder]:empty::before {
  content: attr(data-static-list-placeholder);
  text-align: center;
}

.word,
#wordText {
  font-size: var(--typo-word-size);
  font-weight: var(--typo-word-weight);
  color: var(--typo-word-color);
  letter-spacing: var(--typo-word-spacing);
}

#wordText.sentence-text {
  font-size: 14pt !important;
}

body,
p,
li,
input,
select,
textarea,
pre,
.item-top,
.item-text,
.word-text {
  font-size: var(--typo-body-size);
  font-weight: var(--typo-body-weight);
  color: var(--typo-body-color);
  line-height: 1.6;
}

a {
  font-family: var(--typo-font) !important;
  line-height: 1.6;
}

button,
a,
[role="button"],
input[type="button"],
input[type="submit"],
input[type="reset"],
label[for] {
  touch-action: manipulation;
}

@supports (-webkit-touch-callout: none) {
  .back-search-input {
    font-size: max(16px, var(--top-search-font-size, 16px));
  }
}

::highlight(meaning-selection) {
  background: rgba(var(--accent-rgb, 15, 143, 123), 0.32);
  color: var(--text, #12324a);
}

.meaning-selection-popup {
  position: fixed;
  z-index: 1200;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  pointer-events: auto;
  transform: translateX(-50%);
}

.meaning-selection-popup-row {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.meaning-selection-popup-btn {
  min-width: 36px;
  min-height: 36px;
  height: 36px;
  padding: 0 10px;
  border: 1px solid rgba(var(--accent-rgb, 15, 143, 123), 0.24);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.98);
  color: var(--accent-dark, #0c7464);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  font-weight: 800;
  cursor: pointer;
  touch-action: manipulation;
  box-shadow: 0 10px 24px rgba(18, 41, 61, 0.18);
}

.meaning-selection-popup-btn:disabled {
  cursor: default;
  background: rgba(228, 234, 239, 0.96);
  color: rgba(97, 120, 142, 0.85);
  border-color: rgba(97, 120, 142, 0.22);
  box-shadow: none;
}

.meaning-selection-popup-btn:hover {
  background: rgba(var(--accent-rgb, 15, 143, 123), 0.10);
}

.meaning-selection-popup-btn:disabled:hover {
  background: rgba(228, 234, 239, 0.96);
}

.meaning-selection-popup-btn.commit-btn {
  min-width: 54px;
  width: auto;
  flex: 0 0 auto;
  background: var(--accent-dark, #0c7464);
  border-color: var(--accent-dark, #0c7464);
  color: #ffffff;
  font-size: 14px;
  line-height: 1;
  padding: 0 14px;
  white-space: nowrap;
  word-break: keep-all;
}

.meaning-selection-popup-btn.commit-btn:hover {
  background: var(--accent, #0f8f7b);
  border-color: var(--accent, #0f8f7b);
}

.meaning-selection-popup-btn.close-btn {
  min-width: 36px;
  min-height: 36px;
  width: 36px;
  height: 36px;
  padding: 0;
  border-color: rgba(216, 95, 95, 0.28);
  background: rgba(255, 226, 226, 0.96);
  color: #c25757;
  font-size: 14px;
  font-weight: 700;
  line-height: 1;
  box-shadow: 0 8px 18px rgba(181, 85, 85, 0.14);
}

.meaning-selection-popup-btn.close-btn:hover {
  background: rgba(255, 214, 214, 0.98);
  border-color: rgba(216, 95, 95, 0.36);
}

.inline-meta,
.item-meta,
.empty,
.empty-state,
.dict-col-label,
.meta,
.meta-label,
.meta-value {
  font-size: var(--typo-sub-size);
  color: var(--typo-sub-color);
  line-height: 1.6;
}

.card,
.panel,
.info-body,
.group,
.list,
.item-list,
.dict-word-list {
  margin-bottom: 0;
}

.lead,
.inline-meta,
.panel-header,
.card-header,
.group-title {
  margin-bottom: 8px;
}

body {
  background: var(--page-bg, rgb(231, 244, 242));
  display: grid;
  place-items: start center;
  align-content: start;
  min-height: 100dvh;
  padding: 24px 16px;
}

html[data-app-icon-buttons-position="bottom"] body {
  padding-bottom: calc(104px + env(safe-area-inset-bottom, 0px));
}

.app-shared-top-nav {
  position: fixed;
  top: calc(30px + var(--app-font-size-offset, 0px));
  right: max(28px, calc(50% - var(--app-shell-half-width, 430px)) + 20px + (var(--app-font-size-offset, 0px) / 2));
  z-index: 40;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.app-shared-top-nav[hidden] {
  display: none !important;
}

.app-shared-top-nav-link {
  width: calc(38px + var(--app-font-size-offset, 0px));
  min-height: calc(38px + var(--app-font-size-offset, 0px));
  border: none;
  border-radius: calc(12px + (var(--app-font-size-offset, 0px) / 2));
  background: rgba(255, 255, 255, 0.85);
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--accent, #0f8f7b);
  text-decoration: none;
}

.app-shared-top-nav-link:hover {
  background: rgba(var(--accent-rgb, 15, 143, 123), 0.10);
}

.app-shared-top-nav-link [data-lucide] {
  width: calc(20px + var(--app-font-size-offset, 0px));
  height: calc(20px + var(--app-font-size-offset, 0px));
}

.app-shared-top-nav-link.ticket-nav-link {
  width: auto;
  min-width: 0;
  padding: 0 calc(8px + (var(--app-font-size-offset, 0px) / 2));
  gap: calc(4px + (var(--app-font-size-offset, 0px) / 2));
  font-size: calc(13px + var(--app-font-size-offset, 0px));
  font-weight: 700;
  white-space: nowrap;
}

.app-shared-top-nav-link .ticket-points {
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.app-shared-bottom-nav {
  position: fixed;
  left: 50%;
  bottom: var(--fixed-icon-bottom-offset);
  transform: translateX(-50%);
  z-index: 40;
  width: min(calc(100vw - 20px), var(--app-shell-max-width));
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  align-items: stretch;
  padding: 10px;
  border: 1px solid rgba(26, 53, 74, 0.12);
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 20px 34px rgba(21, 43, 62, 0.16);
  backdrop-filter: blur(12px);
}

.app-shared-bottom-nav[hidden] {
  display: none !important;
}

.app-shared-bottom-nav-link {
  min-width: 0;
  min-height: 58px;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 4px;
  padding: 6px 4px;
  border-radius: 14px;
  color: var(--accent-dark, #0c7464);
  text-decoration: none;
  background: transparent;
}

.app-shared-bottom-nav-link.is-active {
  background: rgba(var(--accent-rgb, 15, 143, 123), 0.12);
}

.app-shared-bottom-nav-icon-wrap {
  position: relative;
  min-height: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.app-shared-bottom-nav-link [data-lucide] {
  width: 20px;
  height: 20px;
}

.app-shared-bottom-nav-label {
  font-size: 11px;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}

.app-shared-bottom-nav-points {
  position: absolute;
  top: -8px;
  left: calc(100% - 4px);
  min-width: 16px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--accent, #0f8f7b);
  color: #ffffff;
  font-size: 10px;
  font-weight: 700;
  line-height: 16px;
  text-align: center;
}

.app {
  width: min(100%, var(--app-shell-max-width));
  background: #ffffff;
  border: 1px solid rgba(26, 53, 74, 0.12);
  border-radius: 24px;
  box-shadow: 0 24px 45px rgba(21, 43, 62, 0.14);
  padding: 28px;
  min-width: 0;
}

html[data-app-icon-buttons-position="bottom"] .nav-right-1,
html[data-app-icon-buttons-position="bottom"] .nav-right-2,
html[data-app-icon-buttons-position="bottom"] .nav-right-3,
html[data-app-icon-buttons-position="bottom"] .nav-right-4,
html[data-app-icon-buttons-position="bottom"] .home-link {
  display: none !important;
}

html[data-app-icon-buttons-position="top"] .nav-right-1,
html[data-app-icon-buttons-position="top"] .nav-right-2,
html[data-app-icon-buttons-position="top"] .nav-right-3,
html[data-app-icon-buttons-position="top"] .nav-right-4,
html[data-app-icon-buttons-position="top"] .home-link {
  display: none !important;
}

.app-initial-warmup-banner {
  position: fixed;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1200;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 8px 16px;
  border-radius: 999px;
  border: 1px solid rgba(15, 143, 123, 0.24);
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 14px 30px rgba(18, 41, 61, 0.14);
  color: var(--accent-dark, #0c7464);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.01em;
  backdrop-filter: blur(10px);
}

.app-transient-top-notice {
  position: fixed;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1200;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  max-width: min(420px, calc(100vw - 24px));
  padding: 7px 14px;
  border-radius: 999px;
  border: 1px solid rgba(15, 143, 123, 0.20);
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 12px 28px rgba(18, 41, 61, 0.12);
  color: var(--accent-dark, #0c7464);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.01em;
  backdrop-filter: blur(10px);
  pointer-events: none;
}

.card,
.panel {
  margin-top: var(--shared-card-margin-top);
  margin-inline: auto;
  border: var(--shared-card-border);
  border-radius: var(--shared-card-radius);
  background: var(--shared-card-background);
  overflow: var(--shared-card-overflow);
  min-width: var(--shared-card-min-width);
  max-width: var(--shared-card-max-width);
  box-shadow: var(--shared-card-box-shadow);
}

.card-header,
.panel-header {
  padding: var(--shared-card-header-padding);
  border-bottom: 1px solid var(--shared-card-header-border-color);
  font-size: var(--shared-card-header-font-size);
  font-weight: var(--shared-card-header-font-weight);
  color: var(--shared-card-header-color);
  letter-spacing: var(--shared-card-header-letter-spacing);
  background: var(--shared-card-header-bg);
  border-radius: var(--shared-card-header-radius);
}

.card-header.linkable,
.panel-header.linkable {
  display: block;
  text-decoration: none;
  color: var(--shared-card-header-link-color);
  background: var(--shared-card-header-link-bg);
}

.card-header.linkable:hover,
.panel-header.linkable:hover,
.card-header.linkable:focus,
.panel-header.linkable:focus {
  color: var(--shared-card-header-link-hover-color);
  background: var(--shared-card-header-link-hover-bg);
}

.index-search-result-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
}

.index-search-result-heading {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  flex: 1 1 auto;
  flex-wrap: wrap;
  overflow: hidden;
}

.index-search-result-label {
  flex: 0 0 auto;
  white-space: nowrap;
}

.index-search-result-query {
  margin-left: 4px;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.index-count-badge {
  font-weight: 400;
  font-size: 0.85em;
  color: var(--muted);
}

.list-link,
.item-link,
.related-word-button,
.dict-word-btn,
.history-button {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  padding: var(--shared-entry-padding);
  border-style: solid;
  border-width: var(--shared-entry-border-width);
  border-color: var(--shared-entry-border-color);
  border-radius: var(--shared-entry-radius);
  background: var(--shared-entry-bg);
  box-shadow: inset 0 0 0 var(--shared-entry-outline-width) var(--shared-entry-outline-color);
  color: var(--shared-entry-color);
  text-align: left;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--shared-entry-gap);
  font-size: var(--shared-entry-font-size);
  font-weight: var(--shared-entry-font-weight);
  text-decoration: none;
  overflow: hidden;
  min-height: var(--shared-entry-min-height);
  height: var(--shared-entry-height);
  min-width: 0;
  max-width: 100%;
  cursor: pointer;
  transition: background-color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}

.list-link:hover,
.item-link:hover,
.related-word-button:hover,
.dict-word-btn:hover,
.history-button:hover {
  background: var(--shared-entry-hover-bg);
  border-color: var(--shared-entry-hover-border-color);
  box-shadow: inset 0 0 0 var(--shared-entry-outline-width) var(--shared-entry-hover-border-color);
}

.list-link:focus,
.item-link:focus,
.related-word-button:focus,
.dict-word-btn:focus,
.history-button:focus {
  outline: none;
  border-color: var(--shared-entry-hover-border-color);
  box-shadow:
    inset 0 0 0 var(--shared-entry-outline-width) var(--shared-entry-hover-border-color),
    0 0 0 2px rgba(var(--accent-rgb, 15, 143, 123), 0.10);
}

.list-link.is-deleted,
.item-link.is-deleted,
.related-word-button.is-deleted,
.dict-word-btn.is-deleted,
.history-button.is-deleted,
.list-link[aria-disabled="true"],
.item-link[aria-disabled="true"],
.related-word-button[aria-disabled="true"],
.dict-word-btn[aria-disabled="true"],
.history-button[aria-disabled="true"] {
  background: rgba(120, 130, 145, 0.12);
  border-color: rgba(120, 130, 145, 0.28);
  box-shadow: inset 0 0 0 var(--shared-entry-outline-width) rgba(120, 130, 145, 0.18);
  color: rgba(68, 78, 92, 0.82);
  cursor: not-allowed;
  pointer-events: none;
}

.list-link.is-deleted:hover,
.item-link.is-deleted:hover,
.related-word-button.is-deleted:hover,
.dict-word-btn.is-deleted:hover,
.history-button.is-deleted:hover,
.list-link[aria-disabled="true"]:hover,
.item-link[aria-disabled="true"]:hover,
.related-word-button[aria-disabled="true"]:hover,
.dict-word-btn[aria-disabled="true"]:hover,
.history-button[aria-disabled="true"]:hover {
  background: rgba(120, 130, 145, 0.12);
  border-color: rgba(120, 130, 145, 0.28);
  box-shadow: inset 0 0 0 var(--shared-entry-outline-width) rgba(120, 130, 145, 0.18);
}

.word-text,
.item-top,
.dict-word-btn .item-text,
.related-word-button .item-text,
.history-button .item-text {
  flex: 1;
  min-width: 0;
}

.word-text,
.item-top.word-text,
.dict-word-btn .item-text,
.related-word-button .item-text,
.history-button.word-entry .item-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.item-top.sentence-text,
.history-button.sentence-entry .item-text {
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.top-row > div,
.link-group {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.top-row .back-link,
.top-row .nav-link,
.link-group .nav-link {
  color: var(--accent);
  text-decoration: none;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.3;
  padding: 2px 0;
  border-bottom: 1px solid transparent;
  transition: color 0.2s ease, border-color 0.2s ease;
}

.top-row .back-link:hover,
.top-row .nav-link:hover,
.link-group .nav-link:hover {
  color: var(--accent-dark);
  border-bottom-color: rgba(var(--accent-rgb), 0.35);
}

@media (max-width: 640px) {
  body {
    place-items: start center;
    align-content: start;
    min-height: 100dvh;
  }

  .app {
    padding: 20px;
    border-radius: 20px;
  }
}

body,
body *:not(svg):not(path):not(circle):not(rect):not(line):not(polygon) {
  font-weight: 700 !important;
}
