:root{color-scheme:dark;--bg:#0d1319;--panel:#141e27;--line:#293746;--text:#edf4f8;--muted:#a4b6c6;--accent:#8ed8c3;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;background:radial-gradient(ellipse at 90% 0%,#1d363c55,transparent 45%),var(--bg);color:var(--text);font-size:16px;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.shell{max-width:1080px;margin:auto;padding:0 32px}header{display:flex;align-items:center;justify-content:space-between;padding:28px 0;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:21px;font-weight:750;color:var(--text)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid #8ed8c355;border-radius:9px;color:var(--accent);font-size:20px}.github{font-size:14px;color:var(--muted)}main{padding:0 0 60px}.intro{padding:72px 0 48px;max-width:760px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--accent);margin:0 0 12px}h1{font-size:clamp(38px,6vw,64px);line-height:1.12;letter-spacing:-.045em;margin:0 0 18px;font-weight:760}.lede{color:var(--muted);font-size:18px;max-width:560px;margin:0 0 28px}.button{display:inline-flex;gap:22px;align-items:center;padding:11px 18px;border-radius:8px;font-size:14px;font-weight:650}.button:hover{text-decoration:none;filter:brightness(1.08)}.primary{background:var(--accent);color:#10291f}.panel{border:1px solid var(--line);border-radius:14px;background:var(--panel)}.server-panel,.downloads-panel{padding:26px 28px}.section-top{display:flex;align-items:center;justify-content:space-between;gap:16px}h2{font-size:22px;line-height:1.3;letter-spacing:-.02em;margin:0;font-weight:650}.status{display:flex;align-items:center;gap:8px;border:1px solid #3c4c5b;padding:5px 11px;border-radius:30px;font-size:12px;color:var(--muted);white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;background:#96a3ad}.status[data-state=online]{border-color:#376857;color:var(--accent);background:#1b352d}.status[data-state=online] .dot{background:var(--accent)}.status[data-state=offline]{color:#f0ad9d;border-color:#75483f;background:#362622}.status[data-state=offline] .dot{background:#f0ad9d}.version-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin:28px 0 20px}dt{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:8px}dd{margin:0;font-size:13px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}#revision{font-family:ui-monospace,monospace}.note{font-size:12px;color:var(--muted);margin:0;padding-top:14px;border-top:1px solid var(--line)}.guide{padding:54px 0 34px}.guide h2{font-size:30px;letter-spacing:-.035em}.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));list-style:none;gap:16px;margin:24px 0 0;padding:0}.step{padding:24px;display:flex;flex-direction:column;align-items:flex-start}.step-number{font-size:12px;letter-spacing:.1em;color:var(--accent);font-family:ui-monospace,monospace}.step h3{font-size:18px;margin:20px 0 8px;letter-spacing:-.02em}.step p{color:var(--muted);font-size:14px;margin:0 0 20px}.step strong{font-weight:600;color:#d4e0e8}.text-link{font-size:13px;margin-top:auto}.tag{font-size:10px;font-weight:650;letter-spacing:.1em;color:var(--muted)}.muted{color:var(--muted);font-size:14px;margin:10px 0 24px}.muted strong{font-weight:500;color:#d4e0e8}.apk-list{padding:0;margin:0;list-style:none}.apk-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;border-top:1px solid var(--line)}.apk-name{display:block;font-size:14px;font-weight:550;overflow-wrap:anywhere}.apk-info{display:block;font-size:12px;color:var(--muted);margin-top:4px}.download-button{flex-shrink:0;background:#203a34;border:1px solid #3d695b;color:var(--accent);gap:12px;padding:8px 14px;font-size:12px}.empty{color:var(--muted);font-size:14px;padding:10px 0}footer{border-top:1px solid var(--line);padding:24px 0 32px;display:flex;justify-content:space-between;gap:16px;font-size:12px;color:var(--muted)}footer a{color:var(--muted)}
@media(max-width:760px){.shell{padding:0 20px}.intro{padding-top:50px}.steps{grid-template-columns:1fr}.step{padding:22px}.step h3{margin-top:10px}.version-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.server-panel,.downloads-panel{padding:22px}.section-top{align-items:flex-start}.guide{padding-top:40px}footer{flex-direction:column}.apk-row{align-items:flex-start;flex-direction:column;gap:12px}.github{font-size:12px}.tag{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Plain status page and sequential member instructions. */
body { background: var(--bg); }
.shell { max-width: 800px; }
header { padding: 22px 0; border-bottom: 0; }
.brand { font-size: 18px; }
.brand-mark { width: auto; height: auto; border: 0; font-size: 20px; }
main { padding: 8px 0 36px; }
h1, .server-panel h1 { font-size: 28px; line-height: 1.3; letter-spacing: -.02em; margin: 0; }
.panel { border-radius: 10px; }
.status { font-size: 18px; font-weight: 650; border: 0; border-radius: 0; padding: 0; background: none !important; }
.dot { width: 10px; height: 10px; }
.note { border: 0; padding: 0; margin-top: 18px; font-size: 13px; }
.version-details { margin-top: 22px; border-top: 1px solid var(--line); padding-top: 16px; }
summary { cursor: pointer; color: var(--muted); font-size: 14px; }
summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; }
.version-grid { grid-template-columns: 1fr 1fr; margin: 18px 0 0; gap: 16px 24px; }
dt { text-transform: none; letter-spacing: 0; font-size: 13px; }
dd { font-size: 14px; }
.install-panel { margin-top: 20px; padding: 20px 28px; }
.button { min-height: 46px; font-size: 16px; border-radius: 6px; }
.private-intro { margin-bottom: 26px; padding: 6px 0 0; }
.private-intro .lede { font-size: 16px; margin: 10px 0 16px; }
.steps { grid-template-columns: 1fr; gap: 18px; margin: 0; }
.step h2 { font-size: 21px; margin: 8px 0 12px; }
.step p { font-size: 16px; }
.text-link { font-size: 16px; }
.device { width: 100%; border-top: 1px solid var(--line); padding: 16px 0; }
.device summary { font-size: 16px; font-weight: 650; color: var(--text); }
.device p { margin: 12px 0; }
.device ul { padding-left: 22px; color: var(--muted); }
.device li { margin: 8px 0; }
.apk-list { width: 100%; }
.apk-row { width: 100%; }
.apk-info { font-size: 13px; }
.download-button { font-size: 16px; background: var(--accent); color: #10291f; padding: 10px 16px; }
footer { padding: 20px 0 28px; font-size: 13px; }
@media (max-width: 600px) {
  .shell { padding: 0 16px; }
  .server-panel, .install-panel, .step { padding: 20px; }
  .section-top { align-items: flex-start; flex-direction: column; gap: 12px; }
  .version-grid { grid-template-columns: 1fr; }
  .button { width: 100%; }
}
.access-note{font-size:12px;color:var(--muted);margin:12px 0 0}.access-note strong{font-weight:550;color:var(--text)}.step h2{font-size:18px;margin:20px 0 8px;letter-spacing:-.02em}.private-intro{padding-bottom:14px}.private-downloads{margin-top:28px}

/* Member guide: paired device paths, with one shared download step. */
.member-page { background: var(--bg); position: relative; isolation: isolate; }
.member-page .shell { max-width: 1040px; }
.member-page .panel { background: #141e27f5; }
.member-page .private-intro { max-width: none; }
.member-page .step { display: block; padding: 26px; }
.member-page .step h2 { font-size: 23px; margin: 6px 0 18px; }
.member-page .step-help { margin: -8px 0 18px; }
.device-paths { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; width: 100%; }
.device-path { min-width: 0; padding: 22px; border: 1px solid var(--line); border-radius: 8px; background: #101820; }
.path-label { color: var(--accent); font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.member-page .device-path h3 { margin: 8px 0 16px; font-size: 20px; }
.member-page .device-path p { margin: 0 0 14px; }
.path-instructions { padding-left: 22px; margin: 0 0 16px; color: var(--muted); }
.path-instructions li { padding-left: 3px; margin-bottom: 14px; }
.device-path.device-detected { border-color: var(--accent); background: #17302b; box-shadow: 0 0 0 1px var(--accent); }
.member-page .device-match { color: var(--accent); font-weight: 650; }
[hidden] { display: none !important; }
body.development-mode { background: #231c13; }
.development-mode .panel { background: #2b2419; border-color: #806039; }
.dev-banner { margin-top: 20px; padding: 16px 20px; background: #922b3d; border: 1px solid #e47789; border-radius: 6px; color: #fff; }
.dev-banner strong { font-size: 22px; }
.dev-banner p { margin: 4px 0 0; }
.version-details h2 { font-size: 18px; }
.server-controls { padding: 26px; margin: 0 0 28px; }
.member-mode { margin: 12px 0 18px; font-size: 16px; }
.mode-buttons { display: flex; flex-wrap: wrap; gap: 12px; }
button.button { font-family: inherit; border: 1px solid transparent; cursor: pointer; }
button.button:disabled { opacity: .5; cursor: default; filter: none; }
button.button:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.dev-button { background: #9e5522; color: #fffaf2; border-color: #806039 !important; }
.switch-message { font-size: 14px; margin: 16px 0; }
.branch-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.branch-card { padding: 20px; border: 1px solid var(--line); border-radius: 8px; }
.branch-card h3 { margin: 0; font-size: 18px; }
.branch-status { font-size: 13px; color: var(--muted); margin: 8px 0 0; }
.branch-card .version-grid { gap: 14px; }
.commit-message { grid-column: 1 / -1; }
.guide-heading { margin-bottom: 20px; }
@media (max-width: 640px) { .branch-grid { grid-template-columns: 1fr; } .server-controls { padding: 20px; } }
@media (max-width: 640px) {
  .device-paths { grid-template-columns: 1fr; gap: 16px; }
  .member-page .step { padding: 20px; }
  .device-path { padding: 18px; }
}

.install-panel { display: flex; gap: 14px; flex-wrap: wrap; }
.developer-button { background: #51418b; border-color: #8070ba !important; color: #fff; }
.log-panel { padding: 26px; }
.log-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.log-toolbar select { max-width: 100%; background: var(--panel); color: var(--text); padding: 10px; border: 1px solid var(--border); border-radius: 8px; }
#log-output { background: #10131c; color: #d8e2f0; padding: 16px; border-radius: 10px; overflow: auto; height: 480px; max-width: 100%; font-size: 12px; line-height: 1.5; white-space: pre; }
@media (max-width: 640px) { .log-panel { padding: 20px; } }
.save-panel { padding: 26px; margin-bottom: 28px; }
.save-list { padding: 0; list-style: none; }
.save-list li { padding: 8px 0; border-bottom: 1px solid var(--border); overflow-wrap: anywhere; }
.save-list .note { display: block; margin-top: 4px; }
.checkpoint { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 12px; }

/* Developer console uses the available viewport width. */
.developer-page .shell { max-width: none; padding: 0 24px; }
.developer-page .branch-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
#log-output { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; font-size: 13px; line-height: 1.55; height: 65vh; min-height: 320px; tab-size: 4; }
#log-output.wrap-lines { white-space: pre-wrap; overflow-wrap: anywhere; }
.log-toolbar input[type="search"] { flex: 1; min-width: 180px; background: #10131c; color: var(--text); padding: 10px; border: 1px solid var(--line); border-radius: 8px; }
@media (max-width: 640px) { .developer-page .shell { padding: 0 12px; } .developer-page .branch-grid { grid-template-columns: 1fr; } .log-panel { padding: 14px; } }

.save-card { min-width: 0; padding: 18px; border: 1px solid var(--line); border-radius: 10px; }
.developer-page .active-environment { border: 2px solid var(--accent); background: #183229; }
.developer-page.development-mode .active-environment { border-color: #edb66e; background: #2b2419; }
.active-environment h3::after { content: " \00B7  Active"; font-size: 12px; font-weight: 600; }

/* Developer news editor */
.news-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:.65rem; margin:1rem 0; }
.news-grid { display:grid; grid-template-columns:minmax(180px,1fr) minmax(0,2fr); gap:1.5rem; align-items:start; }
.news-list { display:grid; gap:.6rem; }
.news-item { display:flex; flex-direction:column; gap:.4rem; padding:.85rem; width:100%; text-align:left; color:inherit; background:transparent; border:1px solid #596779; border-radius:8px; cursor:pointer; overflow-wrap:anywhere; }
.news-form { display:grid; gap:.7rem; min-width:0; }
.news-form[hidden] { display:none; }
.news-form input:not([type=checkbox]), .news-form textarea { width:100%; box-sizing:border-box; padding:.6rem; border:1px solid #596779; border-radius:5px; color:inherit; background:transparent; font:inherit; }
.news-form textarea { resize:vertical; }
.news-preview { border:1px solid #596779; border-radius:8px; padding:1rem; overflow-wrap:anywhere; }
.news-sprite { display:inline-block; width:24px; height:24px; vertical-align:middle; background-image:url('/assets/news-sprites.png'); background-size:96px 96px; }
.news-sprite-0 { background-position:0px 0px; }
.news-sprite-1 { background-position:-24px 0px; }
.news-sprite-2 { background-position:-48px 0px; }
.news-sprite-3 { background-position:-72px 0px; }
.news-sprite-4 { background-position:0px -24px; }
.news-sprite-5 { background-position:-24px -24px; }
.news-sprite-6 { background-position:-48px -24px; }
.news-sprite-7 { background-position:-72px -24px; }
.news-sprite-8 { background-position:0px -48px; }
.news-sprite-9 { background-position:-24px -48px; }
.news-sprite-10 { background-position:-48px -48px; }
.news-sprite-11 { background-position:-72px -48px; }
.news-sprite-12 { background-position:0px -72px; }
.news-sprite-13 { background-position:-24px -72px; }
@media (max-width:700px) { .news-grid { grid-template-columns:1fr; } }

.manager-panel { padding:26px; margin-bottom:28px; }
.manager-tabs { display:flex; gap:.6rem; margin-bottom:1.5rem; border-bottom:1px solid var(--border); padding-bottom:.8rem; }
.manager-tabs [aria-selected="true"] { background:var(--accent, #5878bc); color:#fff; }
.manager-panel .save-panel, .manager-panel .news-panel { padding:0; margin:0; }
.manager-toolbar { display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; margin:1rem 0; }
.manager-panel .branch-grid { grid-template-columns:minmax(0,1fr); }
.manager-panel [hidden] { display:none !important; }
.news-item.deployment-notice { background:#323640; border-color:#6a6f79; color:#c0c5cd; }
.news-item.deployment-notice .note { color:#b8bdc5; font-weight:600; }
.news-item.website-notice { border-left:4px solid #7ba7e1; }
.danger-button { color:#ffd5d5; border-color:#bd6565; }

/* Administration follows the site's dark panels and mint controls. */
.admin-heading { display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; }
.server-choice { display:flex; gap:.5rem; flex-wrap:wrap; padding:0; margin:0; border:0; align-items:center; }
.server-choice legend { float:left; margin-right:.8rem; padding:0; font-size:14px; color:var(--muted); }
.server-choice label { position:relative; cursor:pointer; }
.server-choice input { position:absolute; opacity:0; width:1px; height:1px; }
.server-choice span { display:flex; align-items:center; justify-content:center; min-height:46px; min-width:90px; padding:10px 18px; border:1px solid var(--line); border-radius:6px; background:#101820; font-size:16px; font-weight:650; }
.server-choice input:checked + span { color:#10291f; background:var(--accent); border-color:var(--accent); }
.server-choice input:focus-visible + span { outline:2px solid var(--accent); outline-offset:4px; }
.server-choice input:disabled + span { opacity:.5; cursor:default; }
.manager-tabs { margin-top:1.5rem; border-color:var(--line); flex-wrap:wrap; }
.manager-tabs .button { background:transparent; color:var(--muted); border-color:var(--line); justify-content:center; }
.manager-tabs [aria-selected="true"] { color:#10291f; background:var(--accent); border-color:var(--accent); }
.manager-panel .log-panel { padding:0; }
.manager-panel h3 { margin:0; font-size:18px; }
.admin-toolbar { display:flex; align-items:center; flex-wrap:wrap; gap:.75rem; margin:1rem 0; }
.admin-toolbar h3 { margin-right:auto; }
.manager-panel button.button:not(.primary):not([role=tab]) { border-color:var(--line); background:#101820; color:var(--text); }
.manager-panel button.danger-button { border-color:#bd6565 !important; color:#ffd5d5 !important; }
.sprite-reference { margin:1rem 0; border:1px solid var(--line); padding:1rem; border-radius:8px; }
.sprite-reference summary { color:var(--text); }
.atlas-guide { display:grid; grid-template-columns:minmax(180px,320px) minmax(0,1fr); align-items:start; gap:1.25rem; margin-top:1rem; }
.atlas-guide img { display:block; width:100%; height:auto; max-width:320px; background:#101820; border-radius:8px; }
.atlas-guide ol { margin:0; padding-left:1.5rem; font-size:13px; line-height:1.85; }
.save-grid { display:grid; grid-template-columns:minmax(220px,1fr) minmax(0,2fr); gap:1.5rem; align-items:start; }
.save-list { display:grid; gap:.6rem; margin:0; }
.save-file { flex-direction:column; gap:.35rem; width:100%; align-items:flex-start; text-align:left; overflow-wrap:anywhere; }
.save-file .note { margin:0; font-weight:400; }
#save-form { display:grid; gap:.8rem; }
#save-content { display:block; width:100%; min-height:320px; resize:vertical; font:13px/1.6 ui-monospace,monospace; color:var(--text); background:#101820; border:1px solid var(--line); border-radius:6px; padding:1rem; }
.news-item:focus-visible,.save-file:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
@media (max-width:850px) { .atlas-guide { grid-template-columns:1fr; } }
@media (max-width:700px) { .save-grid { grid-template-columns:1fr; } }
@media (max-width:600px) {
  .manager-panel { padding:18px; }
  .manager-tabs { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.4rem; }
  .manager-tabs .button { padding:10px 6px; font-size:14px; width:auto; }
  .admin-toolbar .button,.news-toolbar .button { width:auto; }
  .log-toolbar .button { width:auto; }
  .server-choice { width:100%; }
}

/* Account selection uses the same panels and accent as the administrator tools. */
.account-picker { margin:1.2rem 0 1.5rem; }
.account-picker h4 { margin:0; font-size:1rem; }
#save-account-search { width:100%; padding:.8rem 1rem; margin:.5rem 0 1rem; border:1px solid var(--line); border-radius:8px; background:#101820; color:var(--text); font:inherit; }
.account-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:.8rem; max-height:560px; overflow:auto; padding:3px; }
.account-choice { display:flex; flex-direction:column; align-items:stretch; text-align:left; gap:.6rem; width:100%; padding:1rem; background:var(--panel); color:var(--text); border:1px solid var(--line); border-radius:10px; font:inherit; cursor:pointer; }
.account-choice:hover { border-color:var(--accent); }
.account-choice[aria-pressed="true"] { border-color:var(--accent); background:#1d363c; box-shadow:inset 3px 0 var(--accent); }
.account-choice:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.account-choice:disabled { opacity:.65; cursor:wait; }
.account-choice strong { font-size:1.05rem; overflow-wrap:anywhere; }
.account-stats { display:flex; gap:.5rem; flex-wrap:wrap; }
.account-stat { padding:.15rem .5rem; border:1px solid var(--line); border-radius:5px; font-size:.82rem; }
.account-choice .note { font-size:.82rem; margin:0; overflow-wrap:anywhere; }
.account-word { color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:.85rem; }

/* Deployment colors come from the registry, including inactive targets. */
body[data-target-theme] { --accent:var(--target-accent); background:var(--target-background); }
body[data-target-theme] .panel { background:var(--target-panel); border-color:var(--target-border); }
button.button[data-target-theme] { background:var(--target-button); color:var(--target-button-text); border-color:var(--target-border) !important; }
.branch-card[data-target-theme] { background:var(--target-panel); border-color:var(--target-border); border-top:3px solid var(--target-accent); }
.branch-card[data-target-theme] h3 { color:var(--target-accent); }
.developer-page[data-target-theme] .active-environment[data-target-theme] { background:var(--target-panel); border-color:var(--target-accent); box-shadow:0 0 0 1px var(--target-accent); }
body[data-target-theme] .dev-banner { background:var(--target-panel); border-color:var(--target-accent); color:var(--target-accent); }
body[data-target-style=hugo] .brand-mark, body[data-target-style=leo] .brand-mark { border-bottom:2px solid var(--target-accent); }

/* Public and developer pages share one neutral card layout. */
.branch-card[data-target-theme] { --accent:var(--target-accent); }
.branch-card.active-environment[data-target-theme] { border:2px solid var(--target-accent); box-shadow:0 0 0 1px var(--target-accent); }
#public-mode { color:var(--target-accent,var(--accent)); margin:16px 0; }
.public-server-grid { margin-top:22px; }

/* Selected-account read-only activity and relationships. */
.account-details { margin:1.2rem 0; padding:1.1rem; border:1px solid var(--line); border-radius:10px; }
.account-details h4 { margin:0 0 .6rem; overflow-wrap:anywhere; }
.account-details details { min-width:0; }
.account-details summary { cursor:pointer; font-weight:600; padding:.5rem 0; }
.account-history-scroll { overflow-x:auto; }
.account-history { width:100%; border-collapse:collapse; text-align:left; font-size:.85rem; }
.account-history th,.account-history td { padding:.65rem .6rem; border-bottom:1px solid var(--line); vertical-align:top; white-space:nowrap; }
.account-relationship-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; margin-top:1rem; }
.account-details ul { list-style:none; padding:0; margin:.4rem 0; max-height:300px; overflow:auto; }
.account-details li { padding:.6rem 0; border-bottom:1px solid var(--line); overflow-wrap:anywhere; }
.account-details li .note { display:block; margin:.2rem 0 0; }
@media(max-width:700px) { .account-relationship-grid { grid-template-columns:1fr; } }
