:root {
  --ink:#242a37;
  --muted:#667084;
  --line:#e2e5eb;
  --paper:#f7f8fa;
  --primary:#514bd5;
  --deep:#171c2b;
  --radius:16px;
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--ink);
  background:var(--paper);
  font-synthesis:none;
  line-height:1.5
}

* {
  box-sizing:border-box
}

body {
  margin:0
}

button,input,textarea,select {
  font:inherit
}

button,a,input {
  touch-action:manipulation
}

button {
  cursor:pointer
}

button:disabled {
  opacity:.55;
  cursor:wait
}

a {
  color:inherit;
  text-decoration:none
}

button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible {
  outline:3px solid #9494ff;
  outline-offset:3px
}

[hidden] {
  display:none!important
}

h1,h2,h3,p {
  margin-top:0
}

h1,h2,h3 {
  letter-spacing:-.025em
}

h1 {
  font-size:clamp(38px,5.3vw,68px);
  line-height:1.16
}

h2 {
  font-size:29px
}

h3 {
  font-size:19px
}

p {
  line-height:1.75
}

.site-header {
  height:82px;
  max-width:1280px;
  margin:auto;
  padding:0 48px;
  display:flex;
  align-items:center;
  gap:56px
}

.brand {
  display:inline-flex;
  align-items:center;
  gap:11px;
  font-size:25px;
  letter-spacing:-1.1px;
  flex-shrink:0
}

.brand-mark {
  position:relative;
  width:37px;
  height:37px;
  border-radius:11px;
  color:white;
  background:var(--ink);
  display:inline-grid;
  place-items:center;
  font-weight:800;
  font-size:29px;
  line-height:1;
  letter-spacing:-3px;
  padding-right:4px
}

.brand-mark span {
  position:absolute;
  font-size:29px;
  right:3px;
  bottom:2px;
  color:#9b9bff
}

.brand-small {
  width:29px;
  height:29px;
  font-size:22px;
  border-radius:9px
}

.brand-small span {
  font-size:23px
}

.site-header nav {
  display:flex;
  gap:34px;
  font-size:14px;
  font-weight:600
}

.site-header nav a {
  position:relative;
  padding:32px 0;
  color:#667085
}

.site-header nav a.active {
  color:var(--primary)
}

.site-header nav a.active:after {
  content:"";
  position:absolute;
  bottom:20px;
  left:0;
  right:0;
  height:3px;
  background:var(--primary);
  border-radius:3px
}

.site-header>button {
  margin-left:auto
}

.button {
  border:1px solid transparent;
  border-radius:9px;
  padding:12px 20px;
  display:inline-flex;
  gap:8px;
  align-items:center;
  justify-content:center;
  font-weight:600;
  font-size:14px;
  line-height:1.4;
  transition:background .15s,transform .15s
}

.button:hover:not(:disabled) {
  transform:translateY(-1px)
}

.button-primary {
  background:var(--primary);
  color:white
}

.button-primary:hover {
  background:#4545c5
}

.button-outline {
  border-color:#d7dce6;
  background:transparent;
  color:var(--ink)
}

.button-white {
  background:white;
  color:var(--ink)
}

.button-subtle {
  background:#ebedf5;
  color:#515a72
}

.button-small {
  padding:9px 15px;
  font-size:13px
}

.button-full {
  width:100%
}

.button-danger {
  background:#fff0f0;
  color:#a33434
}

.container {
  max-width:1184px;
  margin:auto
}

.text-link {
  font-size:13px;
  color:var(--primary);
  font-weight:600
}

.badge {
  display:inline-flex;
  padding:4px 8px;
  border-radius:6px;
  border:1px solid #dddff0;
  font-size:10px;
  line-height:1.4;
  font-weight:700;
  letter-spacing:.3px;
  color:#6963a1;
  background:#f2f0fa;
  white-space:nowrap
}

.badge-open {
  color:#46726c;
  background:#eef7f3;
  border-color:#daebe3
}

.site-footer {
  max-width:1184px;
  margin:36px auto 0;
  padding:27px 0 34px;
  display:flex;
  align-items:center;
  gap:25px;
  border-top:1px solid var(--line);
  font-size:12px;
  color:var(--muted)
}

.site-footer .brand {
  font-size:18px;
  color:var(--ink)
}

.site-footer>div {
  margin-left:auto;
  display:flex;
  gap:22px
}

.empty-state,.loading-state {
  padding:60px 25px;
  text-align:center;
  border:1px dashed #d8dce6;
  border-radius:16px;
  color:var(--muted);
  background:#ffffff70;
  grid-column:1/-1;
  font-size:14px
}

.empty-state strong {
  display:block;
  color:var(--ink);
  font-size:18px;
  margin:12px
}

.empty-state p {
  margin:0 auto 20px;
  max-width:440px
}

.loading-state {
  margin:35px auto;
  max-width:1184px;
  border:0
}

.spinner {
  display:inline-block;
  width:17px;
  height:17px;
  border:2px solid #d8dbe6;
  border-top-color:var(--primary);
  border-radius:50%;
  animation:spin .8s linear infinite;
  margin-right:9px;
  vertical-align:middle
}

@keyframes spin {
  to {
    transform:rotate(360deg)
  }

}

.prose {
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  font-size:14px;
  line-height:1.9;
  color:#687285
}

dialog {
  border:1px solid var(--line);
  padding:34px;
  border-radius:20px;
  max-width:420px;
  width:calc(100% - 36px);
  color:var(--ink);
  box-shadow:0 30px 100px #101a3b30
}

dialog::backdrop {
  background:#10172770;
  backdrop-filter:blur(3px)
}

dialog h2 {
  font-size:27px;
  margin-bottom:10px
}

.dialog-kicker {
  font-size:10px;
  letter-spacing:2px;
  color:var(--primary);
  margin-bottom:20px
}

.dialog-close {
  position:absolute;
  right:18px;
  top:14px;
  border:0;
  background:transparent;
  font-size:26px;
  color:#8a90a0
}

.muted {
  color:var(--muted);
  font-size:13px
}

.dialog-foot {
  font-size:12px;
  color:var(--muted);
  margin:22px 0 0
}

.form-error {
  color:#a72b3b;
  font-size:13px;
  background:#fff1f1;
  padding:11px;
  border-radius:8px
}

label {
  display:block;
  font-size:13px;
  font-weight:600;
  margin:18px 0
}

input,textarea,select {
  border:1px solid #dce0ea;
  border-radius:8px;
  padding:11px 12px;
  background:white;
  color:var(--ink)
}

label input,label textarea,label select {
  display:block;
  margin-top:9px;
  width:100%;
  font-size:14px
}

input::placeholder {
  color:#a3aab8
}

input:focus,textarea:focus,select:focus {
  border-color:#9999e7;
  outline:none;
  box-shadow:0 0 0 3px #5555df10
}

.toast {
  position:fixed;
  bottom:30px;
  left:50%;
  transform:translateX(-50%);
  max-width:calc(100% - 32px);
  width:max-content;
  background:#273149;
  color:white;
  box-shadow:0 10px 35px #17203a25;
  border-radius:10px;
  padding:14px 20px;
  font-size:13px;
  z-index:100;
  line-height:1.6
}

.toast[data-kind=error] {
  background:#9a3443
}

.status-note {
  font-size:13px;
  color:var(--muted);
  padding:13px 0
}

.order-panel {
  border-left:3px solid var(--primary);
  padding:18px 22px;
  background:#fff;
  margin-top:25px
}

.order-panel p {
  margin:0 0 12px;
  font-size:13px
}

.order-panel code {
  overflow-wrap:anywhere
}

.help-links {
  display:flex;
  gap:14px;
  flex-wrap:wrap;
  margin-top:20px
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip:rect(0,0,0,0)
}

@media(max-width:1240px) {
  .container,.site-footer {
    margin-left:32px;
    margin-right:32px
  }

  .site-header {
    padding:0 32px
  }

}

@media(max-width:900px) {
  .site-header {
    gap:32px
  }

  .site-footer>span {
    display:none
  }

  .site-footer>div {
    gap:13px
  }

}

@media(max-width:650px) {
  .site-header {
    padding:0 20px;
    height:auto;
    min-height:76px;
    gap:15px;
    flex-wrap:wrap
  }

  .site-header .brand {
    font-size:23px
  }

  .site-header nav {
    order:3;
    width:100%;
    gap:27px;
    border-bottom:1px solid var(--line)
  }

  .site-header nav a {
    padding:4px 0 17px;
    font-size:13px
  }

  .site-header nav a.active:after {
    bottom:5px
  }

  .site-header>button {
    padding:8px 11px;
    font-size:12px
  }

  .container,.site-footer {
    margin-left:20px;
    margin-right:20px
  }

  .site-footer {
    flex-wrap:wrap;
    gap:22px
  }

  .site-footer>div {
    width:100%;
    margin:0;
    justify-content:space-between;
    font-size:11px
  }

  .prose {
    font-size:13px
  }

}

@media(prefers-reduced-motion:reduce) {
  *,*:before,*:after {
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important
  }

}
.ui-icon {
  display:inline-block;
  flex-shrink:0;
  vertical-align:middle
}

.product-mark {
  width:56px;
  height:56px;
  background:#f4f3ff;
  color:#3b3a61;
  border-radius:14px;
  display:grid;
  place-items:center;
  font-size:40px;
  line-height:1;
  font-weight:750;
  letter-spacing:-3px;
  position:relative;
  padding-right:6px;
  flex-shrink:0
}

.product-mark>span {
  position:absolute;
  right:7px;
  bottom:7px;
  color:#8177e6;
  line-height:1;
  font-size:32px
}

.text-link {
  display:inline-flex;
  align-items:center;
  gap:7px
}

@media(max-width:370px) {
  .container,.site-footer {
    margin-left:15px;
    margin-right:15px
  }

  .site-header {
    padding:0 15px
  }

}

/* Public website: brand landing and anonymous box download only.
   Generic controls above are also used by the independent admin interface. */
.landing-body {
  background: #f7f8fa;
}
.landing-body .brand-image {
  display: block;
  padding: 0;
  object-fit: contain;
  object-position: center;
  background: #e5b183;
}
.landing-header {
  gap: 44px;
  height: 90px;
}
.landing-header nav {
  margin-left: auto;
  font-size: 13px;
  gap: 30px;
}
.landing-header-download {
  margin-left: 8px;
  font-size: 12px;
  background: #fff;
}
.landing-container {
  max-width: 1120px;
}
.landing-hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
  align-items: center;
  min-height: 520px;
  padding: 45px 20px 65px;
}
.landing-eyebrow {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #7874ac;
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 2.1px;
  margin-bottom: 24px;
}
.landing-eyebrow i {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #8580cf;
}
.landing-copy h1 {
  font-size: clamp(46px, 6vw, 72px);
  line-height: 1.13;
  letter-spacing: -3px;
  margin-bottom: 26px;
  font-weight: 720;
}
.landing-copy h1 > span {
  font-size: .83em;
  letter-spacing: -2px;
  font-weight: 620;
}
.landing-copy > p {
  font-size: 15px;
  line-height: 1.9;
  color: #727c8f;
  margin-bottom: 28px;
}
.landing-actions {
  display: flex;
  align-items: center;
  gap: 24px;
  flex-wrap: wrap;
}
.landing-actions .button {
  padding: 14px 22px;
  box-shadow: 0 6px 18px #514bd51c;
}
.landing-secondary {
  font-size: 12px;
  color: #677186;
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.landing-version {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 7px;
  color: #8a93a2;
  font-size: 11px;
  margin-top: 24px;
}
.landing-version-separator {
  color: #c3c8d2;
  margin: 0 2px;
}
.landing-art {
  position: relative;
  height: 390px;
  display: grid;
  place-items: center;
  isolation: isolate;
  padding-bottom: 42px;
}
/* The route renderer retains its decorative hooks; the approved artwork
   replaces that former letter-and-orbit treatment on the public site. */
.landing-art-grid,
.landing-orbit {
  display: none;
}
.landing-app-tile {
  position: relative;
  width: min(100%, 320px);
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border-radius: 48px;
  overflow: hidden;
  background: #e5b183 url('/assets/galmm-sunrise-v1.png') center / contain no-repeat;
  box-shadow: 0 20px 44px #6e493a20, 0 1px 2px #6e493a12;
}
.landing-app-tile > span {
  display: none;
}
.landing-app-tile > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
.landing-art-label {
  position: absolute;
  bottom: 0;
  text-align: center;
  color: #6b7589;
}
.landing-art-label > span {
  font-size: 11px;
  letter-spacing: 4px;
  font-weight: 650;
}
.landing-art-label small {
  display: block;
  font-size: 8px;
  letter-spacing: 1.7px;
  color: #a0a7b5;
  margin-top: 8px;
}
.landing-intro {
  padding: 35px 0 0;
  border-top: 1px solid #e2e5ec;
}
.landing-section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  margin-bottom: 28px;
}
.landing-section-heading .landing-eyebrow {
  margin-bottom: 11px;
}
.landing-section-heading h2 {
  font-size: 29px;
  margin-bottom: 0;
}
.landing-section-heading > p {
  color: #7c8597;
  font-size: 12px;
  line-height: 1.9;
  margin: 0;
  text-align: right;
}
.landing-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}
.landing-steps article {
  position: relative;
  padding: 28px;
  border: 1px solid #e5e7ed;
  border-radius: 13px;
  background: #fff;
}
.landing-step-number {
  position: absolute;
  top: 26px;
  right: 25px;
  font-size: 11px;
  color: #bdc3ce;
  font-variant-numeric: tabular-nums;
}
.landing-step-icon {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 11px;
  background: #f0f0f8;
  color: #7873ac;
  margin-bottom: 23px;
}
.landing-steps h3 {
  font-size: 17px;
  margin-bottom: 9px;
}
.landing-steps p {
  margin-bottom: 0;
  font-size: 12px;
  line-height: 1.85;
  color: #7b8597;
  max-width: 245px;
}
.landing-download-strip {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding: 34px 0 15px;
}
.landing-download-strip h2 {
  font-size: 19px;
  margin-bottom: 9px;
}
.landing-download-strip p {
  font-size: 12px;
  color: #7a8496;
  margin-bottom: 0;
}
.landing-download-strip .button {
  font-size: 12px;
  background: white;
  flex-shrink: 0;
}
.landing-download-heading {
  padding: 48px 0 35px;
}
.landing-download-heading .landing-eyebrow {
  margin-bottom: 17px;
}
.landing-download-heading h1 {
  font-size: 38px;
  margin-bottom: 16px;
}
.landing-download-heading p {
  font-size: 14px;
  color: #778295;
  margin-bottom: 0;
}
.landing-download-card {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border: 1px solid #e2e5ed;
  border-radius: 18px;
  background: #fff;
  overflow: hidden;
}
.landing-download-main {
  padding: 40px;
}
.landing-download-identity {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-bottom: 30px;
}
.landing-body .landing-download-identity .product-mark {
  width: 64px;
  height: 64px;
  border-radius: 15px;
  background: #e5b183 url('/assets/galmm-sunrise-v1.png') center / contain no-repeat;
  color: transparent;
  font-size: 0;
  padding: 0;
}
.landing-body .landing-download-identity .product-mark > span {
  display: none;
}
.landing-download-identity h2 {
  font-size: 25px;
  margin: 0 0 5px;
}
.landing-download-identity > div > span {
  font-size: 9px;
  color: #9099aa;
  letter-spacing: 1.8px;
}
.landing-version-details {
  display: flex;
  gap: 45px;
  margin: 0 0 28px;
}
.landing-version-details dt {
  color: #949dad;
  font-size: 11px;
  margin-bottom: 6px;
}
.landing-version-details dd {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: #525f76;
  overflow-wrap: anywhere;
}
.landing-download-main > .button {
  min-width: 215px;
  padding: 13px 20px;
}
.landing-download-note {
  font-size: 11px;
  color: #8993a4;
  line-height: 1.9;
  margin: 17px 0 0;
  max-width: 350px;
}
.landing-download-info {
  padding: 43px 35px;
  background: #f7f8fc;
  border-left: 1px solid #e9ebf2;
}
.landing-download-info h3 {
  font-size: 16px;
  margin-bottom: 25px;
}
.landing-download-info ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
.landing-download-info li {
  display: flex;
  gap: 12px;
  font-size: 12px;
  color: #778297;
  margin-bottom: 19px;
  line-height: 1.85;
}
.landing-download-info li:last-child {
  margin-bottom: 0;
}
.landing-download-info .ui-icon {
  color: #8a86b5;
  margin-top: 2px;
}
.landing-release-notes {
  margin-top: 32px;
  padding: 30px 35px;
  border: 1px solid #e5e7ed;
  border-radius: 14px;
  background: #fff;
}
.landing-release-notes .landing-eyebrow {
  margin-bottom: 10px;
}
.landing-release-notes h2 {
  font-size: 21px;
  margin-bottom: 16px;
}
.landing-release-notes .prose {
  font-size: 13px;
}
.landing-back-link {
  display: inline-block;
  margin-top: 26px;
  color: #818b9d;
  font-size: 12px;
}
.landing-inline-error {
  font-size: 12px;
  color: #9c4d5a;
  margin-top: 20px;
}
.landing-inline-error p {
  margin-bottom: 8px;
}
.landing-inline-error button {
  background: none;
  padding: 0;
  border: 0;
}
.landing-static-copy {
  border-top: 1px solid #e2e5ec;
  padding: 35px 0;
  max-width: 700px;
}
.landing-static-copy h2 {
  font-size: 25px;
}
.landing-static-copy p {
  color: #778295;
  font-size: 14px;
}
.landing-footer {
  max-width: 1120px;
  margin-top: 45px;
  padding-top: 27px;
}
@media (max-width: 900px) {
  .landing-hero { gap: 15px; min-height: 470px; padding: 35px 0 55px; }
  .landing-art { transform: scale(.85); }
  .landing-copy h1 { font-size: 56px; }
  .landing-steps article { padding: 24px; }
  .landing-download-main { padding: 32px; }
  .landing-download-info { padding: 35px 28px; }
}
@media (max-width: 650px) {
  .landing-header { height: auto; min-height: 76px; gap: 15px; }
  .landing-header nav { margin-left: 0; gap: 25px; }
  .landing-header-download { margin-left: auto; font-size: 11px; padding: 8px 10px; }
  .landing-hero { display: flex; flex-direction: column; align-items: stretch; gap: 0; padding: 34px 5px 34px; min-height: 0; }
  .landing-copy h1 { font-size: 58px; margin-bottom: 22px; letter-spacing: -2.5px; }
  .landing-copy h1 > span { font-size: .77em; letter-spacing: -1.5px; }
  .landing-copy > p { font-size: 14px; margin-bottom: 25px; }
  .landing-copy .landing-eyebrow { font-size: 9px; margin-bottom: 19px; }
  .landing-actions { gap: 20px; }
  .landing-actions .button { padding: 12px 17px; font-size: 13px; }
  .landing-secondary { font-size: 11px; }
  .landing-version { margin-top: 18px; font-size: 10px; }
  .landing-art { height: 318px; transform: none; margin-top: 28px; padding-bottom: 38px; }
  .landing-app-tile { width: min(100%, 264px); border-radius: 39px; box-shadow: 0 17px 32px #6e493a1c; }
  .landing-art-label { bottom: 0; }
  .landing-art-label > span { font-size: 9px; letter-spacing: 3px; }
  .landing-art-label small { font-size: 7px; margin-top: 5px; }
  .landing-intro { padding-top: 28px; }
  .landing-section-heading { align-items: flex-start; flex-direction: column; gap: 12px; margin-bottom: 23px; }
  .landing-section-heading h2 { font-size: 26px; }
  .landing-section-heading > p { text-align: left; font-size: 12px; }
  .landing-section-heading > p br { display: none; }
  .landing-steps { grid-template-columns: 1fr; gap: 12px; }
  .landing-steps article { padding: 23px 25px 23px 83px; min-height: 115px; }
  .landing-step-icon { position: absolute; top: 24px; left: 24px; width: 38px; height: 38px; margin: 0; }
  .landing-step-number { top: 22px; right: 19px; font-size: 9px; }
  .landing-steps h3 { font-size: 15px; margin-bottom: 7px; }
  .landing-steps p { font-size: 12px; padding-right: 6px; max-width: none; }
  .landing-download-strip { align-items: flex-start; flex-direction: column; gap: 19px; padding: 30px 0 4px; }
  .landing-download-strip h2 { font-size: 18px; }
  .landing-download-heading { padding: 35px 0 25px; }
  .landing-download-heading h1 { font-size: 29px; line-height: 1.35; }
  .landing-download-heading p { font-size: 13px; }
  .landing-download-card { grid-template-columns: 1fr; border-radius: 14px; }
  .landing-download-main { padding: 28px; }
  .landing-download-identity { margin-bottom: 26px; }
  .landing-download-info { border-left: 0; border-top: 1px solid #e9ebf2; padding: 27px; }
  .landing-download-info h3 { font-size: 15px; margin-bottom: 20px; }
  .landing-download-info li { margin-bottom: 16px; }
  .landing-download-main > .button { width: 100%; }
  .landing-version-details { gap: 40px; }
  .landing-release-notes { padding: 25px; margin-top: 22px; }
  .landing-release-notes h2 { font-size: 20px; }
  .landing-footer { margin-top: 36px; }
  .landing-footer > span { display: none; }
}

/* Public homepage editorial content; shared admin styles are not changed. */
.landing-body .landing-about {
  max-width: 780px;
  margin: 0 0 30px;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.95;
}
.landing-body .landing-faq {
  margin-top: 52px;
  padding-top: 38px;
  border-top: 1px solid var(--line);
}
.landing-body .landing-faq-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 48px;
}
.landing-body .landing-faq-grid article {
  padding: 24px 0;
  border-bottom: 1px solid var(--line);
}
.landing-body .landing-faq-grid h3 {
  margin-bottom: 10px;
  font-size: 16px;
  line-height: 1.65;
}
.landing-body .landing-faq-grid p {
  margin: 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.95;
}
@media (max-width: 650px) {
  .landing-body .landing-about { font-size: 13px; margin-bottom: 24px; }
  .landing-body .landing-faq { margin-top: 36px; padding-top: 28px; }
  .landing-body .landing-faq-grid { grid-template-columns: 1fr; }
  .landing-body .landing-faq-grid article { padding: 20px 0; }
}
