/* App launcher (static/launcher.js). Uses the shared theme variables from app.css. */
.launcher-btn { margin: 0 !important; }
.launcher-btn[aria-expanded=true] { background: var(--sage); }
html.launcher-open { overflow: hidden; }
.launcher { position: fixed; inset: 0; z-index: 90; overflow-y: auto; overscroll-behavior: contain; background: var(--cream); }
.launcher[hidden] { display: none; }
.launcher::before { content: ""; position: fixed; inset: 0; pointer-events: none; background: radial-gradient(900px 520px at 88% -8%, #e4edd2 0, transparent 62%), radial-gradient(700px 420px at -6% 108%, #efe6c9 0, transparent 60%); }
.launcher-brand { position: fixed; left: 28px; top: 38px; transform: translateY(-50%); z-index: 2; display: flex; align-items: center; gap: 10px; padding: 0; color: var(--forest); }
.launcher-brand img { width: 37px; height: 37px; }
.launcher-close { position: fixed; z-index: 3; top: 16px; right: 24px; }
.launcher-body { position: relative; max-width: 1000px; margin: 0 auto; padding: 104px 32px 64px; }
.launcher-label { margin: 28px 0 13px; font-family: inherit; font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; font-weight: 650; color: var(--muted); }
.launcher-group:first-child .launcher-label { margin-top: 0; }
.launcher-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: 14px; }
.launcher-tile { display: flex; flex-direction: column; justify-content: space-between; gap: 18px; min-height: 134px; padding: 20px; border: 1px solid var(--line); border-radius: 16px; background: var(--paper); color: var(--ink); text-decoration: none; font-weight: 600; box-shadow: var(--shadow); transition: transform .18s ease, border-color .18s ease, background-color .18s ease; }
.launcher-tile:hover, .launcher-tile:focus-visible { transform: translateY(-3px); border-color: var(--forest); outline: none; }
.launcher-tile:focus-visible { box-shadow: 0 0 0 3px #234b3844; }
.launcher-tile[aria-current=page] { background: var(--forest); border-color: var(--forest); color: var(--cream); }
.launcher-icon { width: 46px; height: 46px; display: grid; place-items: center; border-radius: 13px; background: var(--sage); color: var(--forest); }
.launcher-icon svg { width: 24px; height: 24px; }
.launcher-tile[aria-current=page] .launcher-icon { background: #ffffff26; color: var(--cream); }
.launcher-name { font-size: .98rem; line-height: 1.3; }
@media (max-width: 760px) {
  .launcher-brand { left: 16px; top: 34px; }
  .launcher-close { right: 12px; top: 12px; }
  .launcher-body { padding: 90px 16px 44px; }
  .launcher-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .launcher-tile { min-height: 116px; padding: 16px; gap: 14px; }
  .launcher-icon { width: 40px; height: 40px; }
}
@media (prefers-reduced-motion: reduce) { .launcher-tile { transition: none; } }
@media print { .launcher, .launcher-btn { display: none !important; } }
