/* API docs page (developers.html). Builds on styles.css tokens; phone first. */

body.dev { overflow-x: hidden; }
.dev .nav a[aria-current="page"] { color: var(--ink); background: var(--card); box-shadow: inset 0 -2px 0 var(--series); }
.dev .nav a { min-height: 40px; display: inline-flex; align-items: center; }
.dev .icon-btn { min-width: 44px; min-height: 44px; font-size: 16px; }

.dev-layout { flex: 1; width: 100%; max-width: 1180px; margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1fr); }
.dev-main { padding: 18px 16px 40px; min-width: 0; max-width: 820px; }
.dev-main section { scroll-margin-top: 64px; padding-top: 8px; }
.dev-main h1 { font-size: 28px; line-height: 1.15; margin: 4px 0 10px; }
.dev-main h2 { font-size: 21px; margin: 34px 0 10px; padding-top: 14px; border-top: 1px solid var(--card-edge); }
.dev-main h3 { font-size: 16px; margin: 0; }
.dev-main p, .dev-main li, .dev-main dd { color: var(--ink2); }
.dev-main b { color: var(--ink); }
.lead { font-size: 16px; }
.note { font-size: 13.5px; color: var(--muted) !important; }
.label { font-size: 12px; color: var(--muted); }

code { font-family: "Cascadia Mono", Consolas, ui-monospace, monospace; font-size: 0.9em; overflow-wrap: anywhere; }
:not(pre) > code { background: var(--card); border: 1px solid var(--card-edge); border-radius: 5px; padding: 1px 5px; color: var(--ink); }
pre {
  background: var(--card); border: 1px solid var(--card-edge); border-radius: 10px;
  padding: 12px 14px; margin: 10px 0; overflow-x: auto; max-width: 100%;
  font-size: 13px; line-height: 1.55; -webkit-overflow-scrolling: touch;
}
pre code { overflow-wrap: normal; white-space: pre; color: var(--ink); }
pre.json { max-height: 60vh; overflow: auto; }

.base-url {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  background: var(--card); border: 1px solid var(--card-edge); border-radius: 10px; padding: 10px 12px;
}
.base-url .label { width: 100%; }
.base-url code { flex: 1 1 200px; background: none; border: 0; padding: 0; font-size: 14px; }

button.copy, .btn-ghost {
  background: none; border: 1px solid var(--card-edge); color: var(--ink2); border-radius: 8px;
  min-height: 44px; min-width: 44px; padding: 0 14px; font-size: 14px; cursor: pointer;
}
button.copy:hover, .btn-ghost:hover { color: var(--ink); border-color: var(--muted); }
.btn-primary {
  background: var(--series); color: #fff; border: 0; border-radius: 10px; min-height: 48px;
  padding: 0 20px; font-size: 15px; font-weight: 600; cursor: pointer; width: 100%;
}
.btn-primary:disabled { opacity: 0.6; cursor: progress; }

.steps { padding-left: 22px; }
.steps li { margin-bottom: 10px; }
.plain { padding-left: 20px; }
.plain li { margin-bottom: 8px; }
.facts dt { margin-top: 12px; }
.facts dd { margin: 4px 0 0; }

.table-wrap { overflow-x: auto; border: 1px solid var(--card-edge); border-radius: 10px; }
table.codes { border-collapse: collapse; width: 100%; font-size: 13.5px; }
table.codes th, table.codes td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--card-edge); vertical-align: top; }
table.codes tr:last-child td { border-bottom: 0; }
table.codes th { color: var(--muted); font-weight: 600; font-size: 12px; }
table.codes td:first-child { font-family: "Cascadia Mono", Consolas, monospace; color: var(--ink); }

/* ---- endpoint cards ---- */
.ep { background: var(--card); border: 1px solid var(--card-edge); border-radius: 12px; padding: 14px; margin: 14px 0; scroll-margin-top: 64px; }
.ep-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.method { font: 700 11px/1 "Cascadia Mono", Consolas, monospace; color: #fff; background: var(--up); border-radius: 5px; padding: 4px 6px; }
.ep-path { font-size: 14.5px; font-weight: 600; background: none !important; border: 0 !important; padding: 0 !important; overflow-wrap: anywhere; }
.ep-summary { margin: 6px 0 0; }
.ep-desc { font-size: 13.5px; }
.params { list-style: none; padding: 0; margin: 10px 0 0; border-top: 1px solid var(--card-edge); }
.params li { padding: 8px 0; border-bottom: 1px solid var(--card-edge); font-size: 13.5px; }
.params .pname { font-weight: 600; color: var(--ink); }
.params .ptype { color: var(--muted); font-size: 12px; margin-left: 6px; }
.params .preq { color: var(--down); font-size: 12px; margin-left: 6px; }
.params .pdesc { display: block; margin-top: 2px; }

.tabs { display: flex; gap: 4px; margin-top: 12px; overflow-x: auto; }
.tabs button {
  background: none; border: 1px solid var(--card-edge); color: var(--ink2); border-radius: 8px;
  min-height: 40px; padding: 0 12px; font-size: 13px; cursor: pointer; white-space: nowrap;
}
.tabs button[aria-selected="true"] { background: var(--series); border-color: var(--series); color: #fff; }
.code-wrap { display: grid; }
.code-wrap pre { margin-bottom: 4px; }
.code-wrap button.copy { justify-self: end; min-height: 40px; font-size: 13px; }
.ep details { margin-top: 8px; }
.ep summary { cursor: pointer; min-height: 44px; display: flex; align-items: center; color: var(--ink2); font-size: 14px; }
.ep-try { margin-top: 6px; }

/* ---- try it ---- */
.try { display: grid; gap: 12px; background: var(--card); border: 1px solid var(--card-edge); border-radius: 12px; padding: 14px; }
.field { display: grid; gap: 4px; font-size: 13px; color: var(--muted); }
.field input, .field select {
  width: 100%; min-height: 46px; background: var(--surface); color: var(--ink);
  border: 1px solid var(--card-edge); border-radius: 8px; padding: 0 12px; font-size: 16px; /* 16px: no iOS zoom */
}
.key-row { display: flex; gap: 6px; }
.key-row input { flex: 1; min-width: 0; font-family: "Cascadia Mono", Consolas, monospace; }
.params-form { display: grid; gap: 10px; }
.try-url { display: grid; gap: 4px; }
.try-url code { background: var(--surface) !important; padding: 8px 10px !important; border-radius: 8px; font-size: 12.5px; }
.try-result { margin-top: 12px; }
.try-meta { font-size: 13px; margin: 0 0 6px; }
.status-ok { color: var(--up); font-weight: 700; }
.status-bad { color: var(--down); font-weight: 700; }

/* ---- on this page ---- */
.toc-mobile {
  position: sticky; top: 0; z-index: 10; background: var(--surface);
  border-bottom: 1px solid var(--card-edge);
}
.toc-mobile summary { min-height: 46px; display: flex; align-items: center; justify-content: space-between; padding: 0 16px; cursor: pointer; font-weight: 600; font-size: 14px; list-style: none; }
.toc-mobile summary::-webkit-details-marker { display: none; }
.toc-mobile summary::after { content: "▾"; color: var(--muted); transition: transform 0.15s; }
.toc-mobile[open] summary::after { transform: rotate(180deg); }
.toc-mobile .toc-list { max-height: 60vh; overflow-y: auto; padding: 0 8px 10px; }
.toc-list a { display: flex; align-items: center; min-height: 40px; padding: 0 8px; border-radius: 6px; color: var(--ink2); font-size: 14px; }
.toc-list a:hover { background: var(--card); text-decoration: none; color: var(--ink); }
.toc-list a.toc-sub { padding-left: 20px; font-size: 13px; font-family: "Cascadia Mono", Consolas, monospace; overflow-wrap: anywhere; }
.toc-list a.on { color: var(--ink); background: var(--card); }
.toc-side { display: none; }

@media (min-width: 920px) {
  .toc-mobile { display: none; }
  .dev-layout { grid-template-columns: 240px minmax(0, 1fr); gap: 24px; padding: 0 22px; }
  .toc-side { display: block; }
  .toc-side .toc-list { position: sticky; top: 12px; max-height: calc(100vh - 24px); overflow-y: auto; padding: 18px 0; }
  .toc-list a { min-height: 32px; }
  .dev-main { padding: 22px 0 60px; }
  .dev-main h1 { font-size: 34px; }
  .btn-primary { width: auto; justify-self: start; }
  .base-url .label { width: auto; }
}
@media (max-width: 560px) {
  .dev .topbar { padding: 8px 12px; }
  .dev .nav { gap: 2px; }
  .dev .nav a { padding: 4px 10px; }
}
