/*
 * Prismatic glass application shell
 * Shared by every private dashboard page.
 */

:root {
  color-scheme: light;
  --page: #eaf2ff;
  --surface: rgba(255, 255, 255, 0.7);
  --surface-soft: rgba(242, 247, 255, 0.62);
  --ink: #101728;
  --muted: #66738a;
  --subtle: #8c98ac;
  --line: rgba(128, 151, 196, 0.15);
  --line-strong: rgba(255, 255, 255, 0.88);
  --blue: #5279ec;
  --blue-soft: rgba(82, 121, 236, 0.11);
  --profit: #e65c84;
  --loss: #4b79ed;
  --glass-fill: rgba(255, 255, 255, 0.54);
  --glass-fill-strong: rgba(255, 255, 255, 0.72);
  --glass-edge: rgba(255, 255, 255, 0.84);
  --glass-shadow: 0 18px 48px rgba(62, 86, 139, 0.12), 0 2px 8px rgba(62, 86, 139, 0.05);
  --glass-shadow-soft: 0 10px 25px rgba(69, 94, 148, 0.08);
  --accent-blue: #5279ec;
  --accent-violet: #8b72ed;
  --accent-cyan: #48b9d0;
  --accent-pink: #ea709d;
  --radius-xl: 30px;
  --radius-lg: 23px;
  --radius-md: 16px;
  --radius-sm: 11px;
}

html {
  background: #eaf2ff;
}

body.archive-page,
body.auth-page {
  --archive-paper: #eaf2ff;
  --archive-surface: rgba(255, 255, 255, 0.66);
  --archive-ink: #101728;
  --archive-muted: #66738a;
  --archive-subtle: #8c98ac;
  --archive-line: rgba(128, 151, 196, 0.15);
  --archive-line-strong: rgba(255, 255, 255, 0.88);
  --archive-accent: #5279ec;
  --archive-accent-soft: rgba(82, 121, 236, 0.11);
  --archive-warm: #dc688e;
  --archive-green: #3ca8a9;
  --archive-violet: #8570e8;
  position: relative;
  min-height: 100vh;
  min-height: 100dvh;
  isolation: isolate;
  background:
    radial-gradient(circle at 4% 9%, rgba(151, 132, 255, 0.28), transparent 31rem),
    radial-gradient(circle at 94% 14%, rgba(100, 195, 255, 0.26), transparent 34rem),
    linear-gradient(135deg, #edf0ff 0%, #f8fbff 46%, #e8f6ff 100%);
  background-attachment: scroll;
  color: var(--ink);
}

body.archive-page::before,
body.auth-page::before {
  position: absolute;
  z-index: -2;
  inset: 0;
  pointer-events: none;
  background:
    linear-gradient(112deg, transparent 10%, rgba(255, 255, 255, 0.34) 34%, transparent 58%);
  content: "";
}

body.archive-page::after,
body.auth-page::after {
  display: none;
}

body.archive-page::before { display: none; }

body.archive-page .app-content {
  min-width: 0;
  width: 100%;
}

body.archive-page .app-scroll { min-width: 0; }

/* Desktop glass window */
@media (min-width: 1025px) {
  html,
  body.archive-page {
    height: 100%;
    overflow: hidden;
  }

  body.archive-page .shell,
  .blog-page .blog-shell {
    position: relative;
    display: grid;
    width: min(1780px, calc(100% - 40px));
    height: calc(100vh - 48px);
    height: calc(100dvh - 48px);
    min-height: 0;
    grid-template-columns: 220px minmax(0, 1fr);
    grid-template-rows: minmax(0, 1fr);
    gap: 14px;
    align-items: stretch;
    overflow: hidden;
    margin: 24px auto;
    border: 1px solid rgba(255, 255, 255, 0.9);
    border-radius: 32px;
    background:
      linear-gradient(145deg, rgba(255, 255, 255, 0.48), rgba(232, 242, 255, 0.32));
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.98);
    padding: 62px 14px 14px;
    backdrop-filter: blur(24px) saturate(1.12);
    -webkit-backdrop-filter: blur(24px) saturate(1.12);
  }

  body.archive-page .shell::before {
    position: absolute;
    top: 22px;
    left: 24px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.92);
    box-shadow: 18px 0 rgba(255, 255, 255, 0.78), 36px 0 rgba(255, 255, 255, 0.68);
    content: "";
  }

  body.archive-page .shell::after {
    position: absolute;
    top: 18px;
    left: 50%;
    width: min(220px, 24vw);
    height: 17px;
    translate: -50% 0;
    border: 1px solid rgba(255, 255, 255, 0.66);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.24);
    box-shadow: inset 0 1px 4px rgba(91, 112, 157, 0.04);
    content: "";
  }

  body.archive-page .top-nav {
    position: relative;
    top: auto;
    z-index: 40;
    display: flex;
    width: 100%;
    height: 100%;
    min-height: 0;
    max-height: none;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
    overflow-x: hidden;
    overflow-y: auto;
    margin: 0;
    border: 1px solid var(--glass-edge);
    border-radius: 23px;
    background: linear-gradient(155deg, rgba(255, 255, 255, 0.6), rgba(237, 244, 255, 0.38));
    box-shadow: var(--glass-shadow-soft), inset 0 1px 0 rgba(255, 255, 255, 0.94);
    padding: 14px;
    backdrop-filter: blur(18px) saturate(1.1);
    -webkit-backdrop-filter: blur(18px) saturate(1.1);
    scrollbar-width: none;
  }

  body.archive-page .top-nav::-webkit-scrollbar { display: none; }

  body.archive-page .top-nav::before {
    display: flex;
    min-height: 82px;
    align-items: center;
    margin: -2px -2px 13px;
    border-bottom: 1px solid rgba(119, 143, 190, 0.13);
    background:
      radial-gradient(circle at 24px 37px, #5e7aed 0 17px, rgba(94, 122, 237, 0.13) 18px 24px, transparent 25px);
    color: #202942;
    padding: 8px 2px 16px 53px;
    content: "MY ARCHIVE\A PERSONAL DASHBOARD";
    font-size: 0.64rem;
    font-weight: 850;
    letter-spacing: 0.09em;
    line-height: 1.65;
    white-space: pre;
  }

  body.archive-page .top-nav::after {
    display: block;
    margin-top: auto;
    border: 1px solid rgba(255, 255, 255, 0.82);
    border-radius: 16px;
    background:
      radial-gradient(circle at 92% 9%, rgba(126, 107, 237, 0.22), transparent 62px),
      rgba(255, 255, 255, 0.36);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.84);
    color: #65728a;
    padding: 15px;
    content: "PRIVATE SPACE\A Glass system · Online";
    font-size: 0.65rem;
    font-weight: 720;
    letter-spacing: 0.05em;
    line-height: 1.7;
    white-space: pre;
  }

  body.archive-page .nav-link {
    position: relative;
    display: grid;
    width: 100%;
    min-height: 46px;
    grid-template-columns: 29px minmax(0, 1fr);
    column-gap: 10px;
    align-items: center;
    border: 1px solid transparent;
    border-radius: 14px;
    color: #66738a;
    padding: 8px 10px;
    font-size: 0.84rem;
    font-weight: 780;
    text-align: left;
    transition: transform 170ms ease, background 170ms ease, color 170ms ease, box-shadow 170ms ease;
  }

  body.archive-page .nav-link::before {
    display: grid;
    width: 26px;
    height: 26px;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, 0.76);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.46);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.86);
    color: #68758e;
    content: "·";
    font-size: 0.76rem;
    font-weight: 850;
  }

  body.archive-page .nav-link:nth-child(1)::before { content: "↗"; }
  body.archive-page .nav-link:nth-child(2)::before { content: "₩"; }
  body.archive-page .nav-link:nth-child(3)::before { content: "○"; }
  body.archive-page .nav-link:nth-child(4)::before { content: "▷"; }
  body.archive-page .nav-link:nth-child(5)::before { content: "◇"; }
  body.archive-page .nav-link:nth-child(6)::before { content: "✎"; }

  body.archive-page .nav-link:hover {
    background: rgba(255, 255, 255, 0.48);
    color: var(--ink);
    transform: translateX(2px);
  }

  body.archive-page .nav-link.is-active {
    border-color: rgba(255, 255, 255, 0.62);
    background: linear-gradient(135deg, #5c82ef, #6e68ea);
    box-shadow: 0 10px 25px rgba(72, 104, 214, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.26);
    color: #fff;
    transform: translateX(2px);
  }

  body.archive-page .nav-link.is-active::before {
    border-color: rgba(255, 255, 255, 0.27);
    background: rgba(255, 255, 255, 0.16);
    box-shadow: none;
    color: #fff;
  }

  body.archive-page .app-content {
    display: grid;
    height: 100%;
    min-height: 0;
    grid-template-rows: auto minmax(0, 1fr);
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.7);
    border-radius: 23px;
    background: linear-gradient(145deg, rgba(255, 255, 255, 0.2), rgba(232, 242, 255, 0.12));
    padding: clamp(18px, 2.2vw, 32px);
  }

  body.archive-page .app-scroll {
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-color: rgba(101, 126, 177, 0.34) transparent;
    scrollbar-gutter: stable;
    scrollbar-width: thin;
  }

  body.archive-page .app-scroll::-webkit-scrollbar { width: 8px; }
  body.archive-page .app-scroll::-webkit-scrollbar-track { background: transparent; }
  body.archive-page .app-scroll::-webkit-scrollbar-thumb {
    border: 2px solid transparent;
    border-radius: 999px;
    background: rgba(101, 126, 177, 0.34);
    background-clip: padding-box;
  }
}

/* Compact page utility rail. Keep each H1 available to assistive technology,
   but remove the oversized visual title from every application page. */
body.archive-page .hero {
  position: relative;
  align-items: center;
  gap: 18px;
  margin: 0 0 14px;
  border: 0;
  padding: 4px 4px 16px;
  animation: none;
}

body.archive-page .hero > div:first-child {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 9px;
}

body.archive-page .hero > div:first-child::before {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: linear-gradient(135deg, #5c83ef, #8172ef);
  box-shadow: 0 0 0 5px rgba(101, 126, 232, 0.09), 0 0 18px rgba(92, 131, 239, 0.45);
  content: "";
}

body.archive-page .hero::after {
  position: absolute;
  right: 4px;
  bottom: 0;
  left: 4px;
  height: 1px;
  background: linear-gradient(90deg, rgba(113, 138, 187, 0.14), rgba(255, 255, 255, 0.88), rgba(113, 138, 187, 0.08));
  content: "";
}

body.archive-page .hero > div:first-child > .eyebrow {
  display: none;
}

body.archive-page .hero > div:first-child > h1 {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

body.archive-page h2 {
  color: #182137;
  font-size: clamp(1.08rem, 1.8vw, 1.34rem);
  font-weight: 820;
  letter-spacing: -0.025em;
}

body.archive-page .eyebrow,
.blog-page .blog-kicker {
  margin-bottom: 9px;
  color: #4e70ce;
  font-size: 0.66rem;
  font-weight: 850;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

body.archive-page .summary {
  max-width: 720px;
  margin: 0;
  color: #68758d;
  font-size: 0.9rem;
  font-weight: 620;
}

body.archive-page .hero-actions,
body.archive-page .segmented {
  gap: 4px;
  border: 1px solid var(--glass-edge);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.68);
  box-shadow: 0 8px 24px rgba(75, 99, 150, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.84);
  padding: 4px;
}

body.archive-page .seg-button {
  min-height: 35px;
  border: 1px solid transparent;
  border-radius: 11px;
  background: transparent;
  color: #68758d;
  padding: 7px 12px;
  font-size: 0.8rem;
  font-weight: 760;
  transition: transform 160ms ease, color 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

body.archive-page .seg-button:hover {
  background: rgba(255, 255, 255, 0.58);
  color: var(--ink);
  transform: translateY(-1px);
}

body.archive-page .seg-button.is-active {
  border-color: rgba(255, 255, 255, 0.48);
  background: linear-gradient(135deg, #5c83ef, #7069eb);
  box-shadow: 0 7px 18px rgba(74, 105, 216, 0.23), inset 0 1px 0 rgba(255, 255, 255, 0.25);
  color: #fff;
}

/* Shared glass cards */
body.archive-page .totals-grid {
  display: grid;
  gap: 12px;
  overflow: visible;
  margin-bottom: 12px;
  border: 0;
  border-radius: 0;
  background: transparent;
}

body.archive-page .metric-card,
body.archive-page .insight-panel,
body.archive-page .chart-panel,
body.archive-page .table-panel,
body.archive-page .current-panel,
body.archive-page .maple-sidebar,
body.archive-page .maple-hero-card,
body.archive-page .boss-character-panel,
body.archive-page .boss-board,
body.archive-page .boss-summary-panel,
body.archive-page .household-ledger,
body.archive-page .vacation-balance,
body.archive-page .vacation-calendar-panel,
body.archive-page .vacation-ledger-panel {
  border: 1px solid var(--glass-edge);
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.84), rgba(241, 247, 255, 0.68));
  box-shadow: var(--glass-shadow-soft), inset 0 1px 0 rgba(255, 255, 255, 0.94);
}

body.archive-page .metric-card {
  position: relative;
  min-height: 132px;
  overflow: hidden;
  border-radius: 20px;
  padding: 22px;
  animation: none;
}

body.archive-page .metric-card::after {
  position: absolute;
  right: -35px;
  bottom: -48px;
  width: 136px;
  height: 136px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(82, 121, 236, 0.23), transparent 68%);
  content: "";
  pointer-events: none;
}

body.archive-page .metric-card:nth-child(2)::after { background: radial-gradient(circle, rgba(139, 114, 237, 0.22), transparent 68%); }
body.archive-page .metric-card:nth-child(3)::after { background: radial-gradient(circle, rgba(72, 185, 208, 0.2), transparent 68%); }
body.archive-page .metric-card:nth-child(4)::after { background: radial-gradient(circle, rgba(234, 112, 157, 0.2), transparent 68%); }

body.archive-page .metric-card--primary,
body.archive-page button.metric-card.metric-card--primary,
body.archive-page button.metric-card.metric-card--primary:hover {
  border-color: rgba(255, 255, 255, 0.94);
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.8), rgba(226, 236, 255, 0.55));
  box-shadow: 0 19px 50px rgba(65, 101, 207, 0.15), inset 0 1px 0 #fff;
  color: var(--ink);
}

body.archive-page button.metric-card {
  text-align: left;
  transition: transform 170ms ease, box-shadow 170ms ease;
}

body.archive-page button.metric-card:hover,
body.archive-page button.metric-card.metric-card--primary:hover {
  box-shadow: 0 23px 58px rgba(64, 97, 183, 0.19), inset 0 1px 0 #fff;
  transform: translateY(-3px);
}

body.archive-page .metric-card strong {
  position: relative;
  z-index: 1;
  margin: 13px 0 7px;
  color: #101727;
  font-size: clamp(1.55rem, 2.7vw, 2.05rem);
  letter-spacing: -0.035em;
}

body.archive-page .metric-label,
body.archive-page .metric-card span:last-child,
body.archive-page .metric-card--primary .metric-label,
body.archive-page .metric-card--primary span:last-child {
  position: relative;
  z-index: 1;
  color: #728097;
  font-size: 0.75rem;
  font-weight: 740;
}

body.archive-page .metric-label::before {
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 7px;
  border-radius: 50%;
  background: var(--accent-blue);
  box-shadow: 0 0 0 4px rgba(82, 121, 236, 0.09);
  content: "";
  vertical-align: 1px;
}

body.archive-page .metric-card:nth-child(2) .metric-label::before { background: var(--accent-violet); }
body.archive-page .metric-card:nth-child(3) .metric-label::before { background: var(--accent-cyan); }
body.archive-page .metric-card:nth-child(4) .metric-label::before { background: var(--accent-pink); }

body.archive-page .insight-grid,
body.archive-page .analysis-grid,
body.archive-page .workspace,
body.archive-page .anime-workspace {
  gap: 12px;
}

body.archive-page .insight-panel,
body.archive-page .chart-panel,
body.archive-page .table-panel,
body.archive-page .current-panel,
body.archive-page .maple-sidebar,
body.archive-page .maple-hero-card {
  border-radius: var(--radius-lg);
  padding: clamp(20px, 2.2vw, 30px);
  animation: none;
}

body.archive-page .insight-panel,
body.archive-page .chart-panel,
body.archive-page .table-panel {
  border-top: 1px solid var(--glass-edge) !important;
}

body.archive-page .panel-heading {
  gap: 16px;
  margin-bottom: 18px;
  border-bottom: 1px solid rgba(124, 148, 193, 0.13);
  padding-bottom: 14px;
}

/* One block, one title: use the semantic H2 as the compact metric label and
   retire the secondary eyebrow copy from content cards. Dialog headings keep
   their stronger hierarchy. */
body.archive-page .app-content :is(article, section, aside) > .panel-heading > div:first-child > .eyebrow,
body.archive-page .app-content .current-panel > div:first-child > .eyebrow,
body.archive-page .app-content :is(.vacation-balance-heading, .vacation-panel-heading) > div:first-child > .eyebrow {
  display: none;
}

body.archive-page .app-content :is(article, section, aside) > .panel-heading {
  border-bottom: 0;
  padding-bottom: 0;
}

body.archive-page .app-content :is(article, section, aside) > .panel-heading > div:first-child > h2,
body.archive-page .app-content .current-panel > div:first-child > h2,
body.archive-page .app-content :is(.vacation-balance-heading, .vacation-panel-heading) > div:first-child > h2,
body.archive-page .app-content .blog-pane-heading > h2 {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #728097;
  font-size: 0.75rem;
  font-weight: 740;
  letter-spacing: -0.01em;
  line-height: 1.35;
}

body.archive-page .app-content :is(article, section, aside) > .panel-heading > div:first-child > h2::before,
body.archive-page .app-content .current-panel > div:first-child > h2::before,
body.archive-page .app-content :is(.vacation-balance-heading, .vacation-panel-heading) > div:first-child > h2::before,
body.archive-page .app-content .blog-pane-heading > h2::before {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--accent-blue);
  box-shadow: 0 0 0 4px rgba(82, 121, 236, 0.09);
  content: "";
}

body.archive-page .chart-readout,
body.archive-page .table-time {
  color: #7a869b;
  font-size: 0.74rem;
  font-weight: 730;
}

/* Forms and actions */
body.archive-page select,
body.archive-page input,
body.archive-page textarea,
.auth-page input {
  border: 1px solid rgba(255, 255, 255, 0.88);
  border-radius: 11px;
  outline: 1px solid rgba(112, 141, 196, 0.14);
  background: rgba(255, 255, 255, 0.8);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
  color: var(--ink);
}

body.archive-page select:focus,
body.archive-page input:focus,
body.archive-page textarea:focus,
.auth-page input:focus-visible {
  border-color: rgba(83, 122, 231, 0.64);
  outline: none;
  box-shadow: 0 0 0 4px rgba(76, 117, 231, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

body.archive-page .stock-picker select,
body.archive-page .purchase-controls select {
  min-height: 39px;
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.8);
}

body.archive-page .metric-detail-button,
body.archive-page .detail-button,
body.archive-page .icon-text-button,
body.archive-page .primary-button,
body.archive-page .purchase-close-button,
body.archive-page .icon-button,
body.archive-page .primary-command,
body.archive-page .outline-command,
body.archive-page .danger-command,
body.archive-page .vacation-button,
body.archive-page .vacation-icon-button,
body.archive-page .vacation-today-button,
body.archive-page .blog-button,
body.archive-page .blog-icon-button {
  border: 1px solid rgba(255, 255, 255, 0.9);
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.6);
  box-shadow: 0 7px 20px rgba(77, 101, 151, 0.09), inset 0 1px 0 #fff;
  color: #263149;
  transition: transform 160ms ease, box-shadow 160ms ease, background 160ms ease;
}

body.archive-page .metric-detail-button:hover,
body.archive-page .detail-button:hover,
body.archive-page .icon-text-button:hover,
body.archive-page .primary-button:hover,
body.archive-page .primary-command:hover,
body.archive-page .outline-command:hover,
body.archive-page .vacation-button:hover,
body.archive-page .blog-button:hover {
  box-shadow: 0 10px 24px rgba(70, 101, 179, 0.14), inset 0 1px 0 #fff;
  transform: translateY(-1px);
}

body.archive-page .detail-button,
body.archive-page .primary-button,
body.archive-page .primary-command,
body.archive-page .vacation-button--primary,
body.archive-page .blog-button--primary {
  border-color: rgba(112, 141, 236, 0.6);
  background: linear-gradient(135deg, #5c83ef, #7069eb);
  box-shadow: 0 10px 24px rgba(73, 106, 216, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.26);
  color: #fff;
}

body.archive-page .danger-command,
body.archive-page .vacation-button--danger,
body.archive-page .blog-button--danger {
  border-color: rgba(237, 133, 163, 0.27);
  background: rgba(255, 241, 247, 0.62);
  color: #c24e75;
}

/* Charts and tables */
body.archive-page .chart-wrap {
  border: 1px solid rgba(255, 255, 255, 0.84);
  border-radius: 18px;
  background:
    linear-gradient(rgba(255, 255, 255, 0.18), rgba(241, 247, 255, 0.22)),
    repeating-linear-gradient(0deg, transparent 0 62px, rgba(111, 140, 195, 0.05) 62px 63px);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.88);
}

body.archive-page .toolbar {
  margin-bottom: 16px;
  border-bottom: 1px solid rgba(126, 149, 192, 0.13);
  padding-bottom: 16px;
}

body.archive-page .table-scroll,
body.archive-page .vacation-table-scroll {
  border-color: rgba(126, 149, 192, 0.13);
}

body.archive-page th,
body.archive-page td,
body.archive-page .vacation-table-scroll th,
body.archive-page .vacation-table-scroll td {
  border-color: rgba(126, 149, 192, 0.12);
}

body.archive-page th,
body.archive-page .vacation-table-scroll th {
  background: rgba(232, 240, 255, 0.46);
  color: #6d7990;
  font-size: 0.69rem;
}

body.archive-page td,
body.archive-page .vacation-table-scroll td {
  color: #273148;
  font-size: 0.82rem;
}

body.archive-page tbody tr {
  transition: background 150ms ease;
}

body.archive-page tbody tr:hover {
  background: rgba(235, 242, 255, 0.42);
}

/* Investment dashboard */
.investment-page .income-summary,
.investment-page .exchange-chart-summary {
  border-color: rgba(126, 149, 192, 0.13);
  border-radius: 13px;
  background: rgba(240, 246, 255, 0.36);
  padding: 14px 15px;
}

.investment-page .income-summary strong,
.investment-page .exchange-chart-summary strong { color: var(--ink); }
.investment-page .income-item { border-color: rgba(126, 149, 192, 0.13); }

.investment-page .bucket-track,
.investment-page .contribution-track {
  height: 8px;
  border-radius: 999px;
  background: rgba(136, 158, 199, 0.13);
}

.investment-page .bucket-track span,
.investment-page .contribution-track span {
  border-radius: inherit;
  background: linear-gradient(90deg, #5b83ed, #8a74ec);
  box-shadow: 0 2px 8px rgba(72, 109, 214, 0.2);
}

/* Anime library */
.anime-page .current-panel {
  grid-template-columns: minmax(150px, 0.23fr) minmax(0, 1fr);
  border-left: 1px solid var(--glass-edge);
}

.anime-page .anime-card,
.anime-page .anime-row,
.anime-edit-page .edit-form,
.anime-edit-page .edit-row {
  border: 1px solid rgba(255, 255, 255, 0.82);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.42);
  box-shadow: 0 8px 23px rgba(76, 101, 151, 0.07), inset 0 1px 0 rgba(255, 255, 255, 0.84);
}

.anime-page .anime-card,
.anime-page .anime-row,
.anime-edit-page .edit-row--stack {
  border-top: 1px solid rgba(255, 255, 255, 0.82) !important;
  border-left: 1px solid rgba(255, 255, 255, 0.82) !important;
}

.anime-page .anime-card:hover,
.anime-page .anime-row:hover {
  background: rgba(255, 255, 255, 0.62);
  box-shadow: 0 12px 29px rgba(69, 99, 170, 0.11);
  transform: translateY(-2px);
}

.anime-page .anime-chip,
.anime-edit-page .anime-chip {
  border-radius: 999px;
  background: rgba(91, 127, 231, 0.1);
  color: #5068b9;
}

/* Maple pages */
.maple-page .maple-layout,
.boss-crystal-page .boss-crystal-layout { gap: 12px; }

.maple-page .maple-sidebar,
.boss-crystal-page .boss-character-panel {
  top: 20px;
  border-radius: 20px;
}

.maple-page .character-list,
.boss-crystal-page .boss-character-list { gap: 6px; }

.maple-page .character-button,
.boss-crystal-page .boss-character-card {
  border: 1px solid transparent;
  border-radius: 13px;
  background: transparent;
}

.maple-page .character-button:hover,
.boss-crystal-page .boss-character-card:hover {
  border-color: rgba(255, 255, 255, 0.82);
  background: rgba(255, 255, 255, 0.47);
}

.maple-page .character-button.is-active,
.boss-crystal-page .boss-character-card.is-active {
  border-color: rgba(255, 255, 255, 0.88);
  background: linear-gradient(135deg, rgba(87, 130, 238, 0.16), rgba(137, 114, 237, 0.13));
  box-shadow: inset 3px 0 #5a81e8, 0 8px 20px rgba(69, 101, 181, 0.08);
  color: var(--ink);
}

.maple-page .character-button__portrait,
.boss-crystal-page .boss-character-card img,
.maple-page .maple-item img,
.maple-page .maple-vcore-icon,
.boss-crystal-page .boss-image-frame,
.maple-page .maple-avatar {
  border: 1px solid rgba(255, 255, 255, 0.86);
  border-radius: 12px;
  background: rgba(237, 243, 255, 0.5);
  box-shadow: 0 6px 18px rgba(76, 101, 149, 0.09);
}

.maple-page .maple-hero-card,
.maple-page .maple-item,
.maple-page .maple-skill-summary,
.boss-crystal-page .boss-row {
  border-color: rgba(255, 255, 255, 0.8);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.41);
}

.maple-page .maple-stat-grid {
  gap: 9px;
  border: 0;
  background: transparent;
}

.maple-page .maple-stat-grid .metric-card {
  min-height: 108px;
  border: 1px solid var(--glass-edge);
  border-radius: 16px;
}

.boss-crystal-page .boss-character-panel,
.boss-crystal-page .boss-board,
.boss-crystal-page .boss-summary-panel { border-radius: 21px; }

.boss-crystal-page .boss-crystal-totals .metric-card strong {
  font-size: clamp(1.35rem, 2vw, 1.75rem);
  line-height: 1.12;
  text-wrap: balance;
  word-break: keep-all;
}

.boss-crystal-page .boss-toolbar {
  border-color: rgba(126, 149, 192, 0.13);
  background: rgba(243, 248, 255, 0.36);
}

.boss-crystal-page .boss-difficulty-button {
  border-radius: 9px;
  box-shadow: 0 5px 12px rgba(52, 67, 99, 0.12);
}

/* Household ledger */
.household-page .household-totals,
.vacation-page .vacation-totals { gap: 12px; }

.household-page .household-card::after {
  right: -35px;
  bottom: -48px;
  left: auto;
  width: 136px;
  height: 136px;
  border-radius: 50%;
}

.household-page .household-charts { gap: 12px; }

.household-page .household-chart-panel:first-child,
.household-page .household-chart-panel--wide { border-top: 1px solid var(--glass-edge) !important; }

.household-page .household-filterbar,
.vacation-page .vacation-filterbar {
  gap: 9px;
  border: 1px solid rgba(255, 255, 255, 0.78);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.64);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.76);
  padding: 13px;
}

.household-page .household-savings-share {
  border: 1px solid rgba(255, 255, 255, 0.78);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.34);
  padding: 17px 19px;
}

.household-page .household-savings-track,
.vacation-page .vacation-progress {
  overflow: hidden;
  border: 0;
  border-radius: 999px;
  background: rgba(126, 150, 195, 0.14);
}

.household-page .household-savings-bar {
  border-radius: inherit;
  background: linear-gradient(90deg, #49b4c5, #5a82eb);
}

.household-page .household-calendar,
.household-page .household-ledger,
.vacation-page .vacation-calendar-panel,
.vacation-page .vacation-ledger-panel {
  overflow: hidden;
  border-radius: 21px;
}

.household-page .household-calendar-weekdays,
.vacation-page .vacation-weekdays {
  border-color: rgba(126, 149, 192, 0.12);
  background: rgba(232, 240, 255, 0.4);
}

.household-page .household-calendar-grid { border-color: rgba(126, 149, 192, 0.12); }

.household-page .calendar-day,
.vacation-page .vacation-day {
  border-color: rgba(126, 149, 192, 0.11);
  background: rgba(255, 255, 255, 0.29);
}

.household-page .calendar-day:hover,
.vacation-page .vacation-day:hover { background: rgba(255, 255, 255, 0.6); }

.household-page .calendar-day.is-selected,
.vacation-page .vacation-day.is-today {
  background: rgba(87, 129, 238, 0.1);
  box-shadow: inset 0 0 0 2px rgba(78, 117, 227, 0.7);
}

.household-page .calendar-day.is-blank,
.vacation-page .vacation-day.is-outside { background: rgba(225, 234, 249, 0.29); }

.household-page .major-pill,
.household-page .category-pill {
  border-radius: 999px;
  background: rgba(86, 125, 229, 0.1);
}

.household-page .major-category-group {
  border-color: rgba(255, 255, 255, 0.8);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.37);
}

/* Vacation planner */
.vacation-page .vacation-metric::after { display: none; }

.vacation-page .vacation-balance {
  border-radius: 20px;
  padding: 20px 22px;
}

.vacation-page .vacation-progress-used { background: linear-gradient(90deg, #e96f98, #d95f88); }
.vacation-page .vacation-progress-planned { background: linear-gradient(90deg, #5c83ed, #8172eb); }

.vacation-page .vacation-day-entry {
  border-left-width: 0;
  border-radius: 7px;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.42);
}

.vacation-page .vacation-type-pill,
.vacation-page .vacation-status-pill { border-radius: 999px; }

/* Blog reading workspace */
.blog-page {
  --blog-paper: #eaf2ff;
  --blog-surface: rgba(255, 255, 255, 0.62);
  --blog-ink: #101728;
  --blog-muted: #66738a;
  --blog-line: rgba(126, 149, 192, 0.13);
  --blog-line-strong: rgba(255, 255, 255, 0.83);
  --blog-accent: #5279ec;
  --blog-accent-soft: rgba(82, 121, 236, 0.1);
  --blog-warm: #dc688e;
  background: transparent;
}

.blog-page .blog-shell { width: min(1780px, calc(100% - 40px)); }

.blog-page .blog-toolbar {
  gap: 9px;
  margin-bottom: 12px;
  border: 1px solid rgba(255, 255, 255, 0.77);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.64);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.75);
  padding: 13px;
}

.blog-page .blog-search input,
.blog-page .blog-mobile-category select {
  border-radius: 11px;
  background: rgba(255, 255, 255, 0.56);
}

.blog-page .blog-workspace {
  height: 720px;
  min-height: 720px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.84);
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.7);
  box-shadow: var(--glass-shadow), inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.blog-page .blog-category-pane,
.blog-page .blog-index-pane,
.blog-page .blog-reader-pane { border-color: rgba(126, 149, 192, 0.11); }

.blog-page .blog-category-pane { background: rgba(226, 236, 254, 0.68); }
.blog-page .blog-index-pane { background: rgba(248, 251, 255, 0.72); }
.blog-page .blog-reader-pane { background: rgba(255, 255, 255, 0.72); }

.blog-page .blog-category-button { border-radius: 11px; }
.blog-page .blog-category-button:hover { background: rgba(255, 255, 255, 0.47); }

.blog-page .blog-category-button.is-active {
  border-color: rgba(255, 255, 255, 0.86);
  background: rgba(255, 255, 255, 0.62);
  box-shadow: 0 8px 19px rgba(72, 99, 154, 0.09);
}

.blog-page .blog-grid,
.blog-page .blog-post-row { border-color: rgba(126, 149, 192, 0.11); }
.blog-page .blog-post-row { transition: background 160ms ease, box-shadow 160ms ease; }
.blog-page .blog-post-row:hover { background: rgba(255, 255, 255, 0.46); }

.blog-page .blog-post-row.is-active {
  background: linear-gradient(90deg, rgba(84, 127, 237, 0.12), rgba(255, 255, 255, 0.31));
  box-shadow: inset 3px 0 #5a80e5;
}

.blog-page .blog-post-row__tags b,
.blog-page .blog-reader-tags span {
  border-color: rgba(255, 255, 255, 0.84);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.49);
}

.blog-page .blog-page-button { border-radius: 9px; }

.blog-page .blog-page-button.is-active {
  background: linear-gradient(135deg, #5b82ed, #706bea);
  box-shadow: 0 6px 16px rgba(73, 105, 215, 0.2);
}

.blog-page .blog-reader-head { border-color: rgba(126, 149, 192, 0.15); }

.blog-page .blog-reader-title h2 {
  color: #111827;
  font-size: clamp(1.75rem, 2.6vw, 2.4rem);
  letter-spacing: -0.04em;
}

.blog-page .blog-content { color: #303a4e; line-height: 1.86; }

.blog-page .blog-content blockquote {
  border-left-color: #8371e7;
  border-radius: 0 13px 13px 0;
  background: rgba(132, 111, 231, 0.08);
  color: #4e4b69;
}

.blog-page .blog-content code {
  border-radius: 6px;
  background: rgba(101, 122, 164, 0.1);
}

.blog-page .blog-content pre {
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 15px;
  background: rgba(21, 28, 48, 0.94);
  box-shadow: 0 16px 32px rgba(23, 31, 51, 0.14);
}

.blog-page .blog-preview-pane {
  border-color: rgba(255, 255, 255, 0.82);
  border-radius: 13px;
  background: rgba(255, 255, 255, 0.41);
}

/* Dialogs */
body.archive-page dialog { outline: none; }

body.archive-page .modal::backdrop,
body.archive-page .blog-dialog::backdrop,
body.archive-page .vacation-dialog::backdrop,
body.archive-page .household-modal::backdrop {
  background: rgba(34, 45, 72, 0.34);
}

body.archive-page .purchase-modal-panel,
body.archive-page .modal-panel,
body.archive-page .blog-dialog-panel,
body.archive-page .vacation-dialog-panel,
body.archive-page .household-modal-panel {
  border: 1px solid rgba(255, 255, 255, 0.92);
  border-radius: 22px;
  background: rgba(247, 251, 255, 0.96);
  box-shadow: 0 20px 55px rgba(41, 58, 98, 0.22), inset 0 1px 0 #fff;
}

/* Login */
body.auth-page {
  display: grid;
  min-width: 320px;
  place-items: center;
}

.auth-page .auth-shell {
  width: min(540px, 100%);
  min-height: 100vh;
  min-height: 100dvh;
  padding: 24px;
}

.auth-page .auth-panel {
  position: relative;
  width: 100%;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.9);
  border-radius: 27px;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.9), rgba(241, 247, 255, 0.78));
  box-shadow: var(--glass-shadow), inset 0 1px 0 #fff;
  padding: clamp(28px, 5vw, 43px);
  animation: none;
}

.auth-page .auth-panel::after {
  position: absolute;
  top: -58px;
  right: -44px;
  width: 190px;
  height: 190px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(95, 128, 236, 0.24), transparent 68%);
  content: "";
  pointer-events: none;
}

.auth-page .eyebrow {
  color: #4e70ce;
  font-size: 0.68rem;
  font-weight: 850;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}

.auth-page h1 {
  color: #111827;
  font-size: clamp(2.7rem, 8vw, 4.3rem);
  font-weight: 860;
  letter-spacing: -0.055em;
}

.auth-page .summary { color: #68758c; line-height: 1.6; }
.auth-page .auth-form label { color: #65728a; }
.auth-page .auth-form input { min-height: 50px; padding: 13px 15px; }

.auth-page .primary-button {
  min-height: 48px;
  border: 1px solid rgba(113, 141, 237, 0.6);
  border-radius: 13px;
  background: linear-gradient(135deg, #5c83ef, #7069eb);
  box-shadow: 0 12px 26px rgba(73, 106, 216, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.26);
  color: #fff;
  font-weight: 800;
  cursor: pointer;
}

/* Keep page entry static to avoid a full set of composited transform layers. */
.archive-page.is-ready .app-content > * {
  animation: none;
}

.archive-page.is-ready .app-content > *:nth-child(2) { animation-delay: 45ms; }
.archive-page.is-ready .app-content > *:nth-child(3) { animation-delay: 90ms; }
.archive-page.is-ready .app-content > *:nth-child(4) { animation-delay: 135ms; }

@keyframes glass-rise {
  from { opacity: 0; transform: translateY(12px) scale(0.994); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* Content-aware breakpoints after introducing the permanent sidebar */
@media (min-width: 1025px) and (max-width: 1350px) {
  .blog-page .blog-toolbar { grid-template-columns: minmax(240px, 1fr) minmax(170px, 230px) auto; }
  .blog-page .blog-mobile-category { display: grid; }
  .blog-page .blog-workspace { grid-template-columns: minmax(310px, 380px) minmax(0, 1fr); }
  .blog-page .blog-category-pane { display: none; }
  .blog-page .blog-index-pane { border-right: 1px solid var(--blog-line); }
}

@media (min-width: 1025px) and (max-width: 1550px) {
  .vacation-page .vacation-workspace { grid-template-columns: 1fr; }
}

@media (max-width: 1180px) {
  .maple-page .maple-sidebar,
  .boss-crystal-page .boss-character-panel { top: 20px; }
}

/* Tablet and mobile: the rail becomes a compact horizontal glass bar. */
@media (max-width: 1024px) {
  body.archive-page,
  body.auth-page {
    background:
      radial-gradient(circle at 18% 0%, rgba(151, 132, 255, 0.2), transparent 24rem),
      linear-gradient(150deg, #edf1ff 0%, #f8fbff 52%, #eaf6ff 100%);
  }

  body.archive-page::before,
  body.auth-page::before { display: none; }

  body.archive-page .shell,
  .blog-page .blog-shell {
    display: block;
    width: min(100%, 900px);
    min-height: 100vh;
    margin: 0 auto;
    border: 0;
    background: transparent;
    box-shadow: none;
    padding: calc(16px + env(safe-area-inset-top)) 18px 54px;
  }

  body.archive-page .top-nav {
    position: sticky;
    z-index: 50;
    top: 10px;
    display: flex;
    width: 100%;
    max-width: 100%;
    height: auto;
    flex-direction: row;
    gap: 4px;
    overflow-x: auto;
    margin: 0;
    border: 1px solid var(--glass-edge);
    border-radius: 17px;
    background: rgba(255, 255, 255, 0.54);
    box-shadow: 0 12px 36px rgba(74, 98, 149, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.86);
    padding: 5px;
    scrollbar-width: none;
    backdrop-filter: blur(14px) saturate(1.08);
    -webkit-backdrop-filter: blur(14px) saturate(1.08);
  }

  body.archive-page .top-nav::-webkit-scrollbar { display: none; }
  body.archive-page .top-nav::before,
  body.archive-page .top-nav::after { display: none; }

  body.archive-page .nav-link {
    display: inline-flex;
    min-height: 37px;
    flex: 0 0 auto;
    align-items: center;
    border: 1px solid transparent;
    border-radius: 12px;
    color: #66738a;
    padding: 8px 12px;
    font-size: 0.8rem;
    font-weight: 770;
    white-space: nowrap;
  }

  body.archive-page .nav-link::before { display: none; }

  body.archive-page .nav-link.is-active {
    border-color: rgba(255, 255, 255, 0.55);
    background: linear-gradient(135deg, #5c82ef, #6f68ea);
    box-shadow: 0 7px 18px rgba(73, 105, 215, 0.23);
    color: #fff;
  }

  body.archive-page .app-content {
    border: 0;
    background: transparent;
    padding: 0;
  }

  body.archive-page .hero { padding-top: 24px; }
}

@media (max-width: 720px) {
  body.archive-page .shell,
  .blog-page .blog-shell { padding-inline: 13px; }

  body.archive-page .hero {
    display: flex;
    align-items: stretch;
    flex-direction: column;
    gap: 14px;
    padding: 20px 4px 18px;
  }

  body.archive-page .hero-actions { width: 100%; }
  body.archive-page .hero-actions .seg-button { flex: 1; text-align: center; }

  body.archive-page .metric-card {
    min-height: 116px;
    border: 1px solid var(--glass-edge);
    border-radius: 18px;
    padding: 18px;
  }

  body.archive-page .insight-panel,
  body.archive-page .chart-panel,
  body.archive-page .table-panel,
  body.archive-page .current-panel,
  body.archive-page .maple-sidebar,
  body.archive-page .maple-hero-card {
    border-radius: 19px;
    padding: 17px;
  }

  .anime-page .current-panel { grid-template-columns: 1fr; }
  .blog-page .blog-toolbar { border-radius: 15px; }
  .blog-page .blog-workspace { border-radius: 19px; }

  .household-page .household-filterbar,
  .vacation-page .vacation-filterbar { border-radius: 15px; }

  .household-page .household-calendar,
  .household-page .household-ledger,
  .vacation-page .vacation-calendar-panel,
  .vacation-page .vacation-ledger-panel { border-radius: 19px; }
}

@media (prefers-reduced-motion: reduce) {
  body.archive-page *,
  body.archive-page *::before,
  body.archive-page *::after,
  .auth-page *,
  .auth-page *::before,
  .auth-page *::after {
    animation-duration: 1ms !important;
    scroll-behavior: auto !important;
    transition-duration: 1ms !important;
  }
}
