/* /gigglesapi/ — reference layout on top of /theme.css (catppuccin mocha, JetBrains Mono) */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--base);color:var(--text);font:13px/1.6 "JetBrains Mono",ui-monospace,monospace}
.api{display:grid;grid-template-columns:272px minmax(0,1fr);max-width:1280px;margin:0 auto;text-transform:none}
.api aside{position:sticky;top:var(--navh,44px);height:calc(100vh - var(--navh,44px));overflow:auto;
  border-right:1px solid var(--s0);padding:12px 10px 40px;font-size:12px;scrollbar-width:thin}
.api main{min-width:0;padding:18px 28px 80px}
.menu{display:none;position:fixed;right:14px;bottom:14px;z-index:80;font:inherit;font-size:12px;
  background:var(--lav);color:var(--crust);border:0;border-radius:20px;padding:8px 14px;cursor:pointer;
  box-shadow:0 6px 24px rgba(0,0,0,.45)}
.backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:65}

/* ---- sidebar ---- */
.search{display:flex;align-items:center;gap:6px;background:var(--crust);border:1px solid var(--s0);
  border-radius:8px;padding:5px 8px;margin-bottom:10px;position:sticky;top:0;z-index:2}
.search input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--text);font:inherit;font-size:12px}
.search input::placeholder{color:var(--ov0)}
.search .x{display:none;flex:none;font:inherit;font-size:22px;line-height:1;background:transparent;border:0;color:var(--sub0);padding:0 6px;cursor:pointer}
.search kbd{font:inherit;font-size:10px;color:var(--ov0);border:1px solid var(--s1);border-radius:4px;padding:0 5px;line-height:16px}
.toc ul{list-style:none;margin:0;padding:0}
.toc>ul>li{margin:2px 0 8px}
.toc>ul>li>a{display:block;color:var(--sub1);font-weight:500;padding:3px 8px;border-radius:6px}
.toc ul ul{margin-left:6px;border-left:1px solid var(--s0);padding-left:6px}
.toc ul ul a{display:block;color:var(--ov1);padding:2px 6px;border-radius:5px;font-size:11.5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toc ul ul ul{margin-left:4px;padding-left:6px}
.toc ul ul ul a{font-size:11px;color:var(--ov0)}
.toc a:hover{background:var(--s0);color:var(--text);text-decoration:none}
.toc a.on{background:var(--s0);color:var(--lav)}
.toc .m{margin-right:4px}
.sres{display:none}
.sres ul{list-style:none;margin:0;padding:0}
.sres li{padding:5px 6px;border-bottom:1px solid var(--s0)}
.sres li:first-child{background:var(--s0);border-radius:6px}
.sres .term{color:var(--text);font-weight:500}
.sres .k{color:var(--ov0);font-size:10px;margin-left:6px}
.sres .refs{font-size:11px;color:var(--ov1);margin-top:1px}
.sres .refs a{color:var(--blue)}
.sres .none{color:var(--ov0);padding:8px 6px}
.searching .toc{display:none}
.searching .sres{display:block}

/* ---- document ---- */
.doc h1{font-size:22px;color:var(--lav);margin:0 0 4px;font-weight:600;letter-spacing:-.01em}
.doc .sub{color:var(--ov1);font-size:12px;margin:0 0 22px}
.doc h2{font-size:18px;color:var(--text);margin:44px 0 10px;padding-top:14px;border-top:1px solid var(--s0);font-weight:600}
.doc h2:first-of-type{border-top:0;margin-top:14px}
.doc h3{font-size:14.5px;margin:30px 0 8px;font-weight:600;color:var(--sub1)}
.doc h4{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ov1);margin:16px 0 6px;font-weight:600}
.doc h2,.doc h3,.doc h4,.doc .ep,.doc section{scroll-margin-top:calc(var(--navh,44px) + 12px)}
.doc p{margin:6px 0 8px;max-width:78ch}
.doc ul,.doc ol{margin:4px 0 8px;padding-left:20px;max-width:78ch}
.doc li{margin:2px 0}
.doc a.anchor{color:var(--ov0);margin-left:8px;opacity:0;font-weight:400;font-size:.85em}
.doc h2:hover a.anchor,.doc h3:hover a.anchor,.doc h4:hover a.anchor{opacity:1;text-decoration:none}
.doc code{font-family:inherit;background:var(--s0);color:var(--sky);padding:1px 5px;border-radius:4px;font-size:.95em}
.doc a code{color:var(--blue)}
.doc pre{position:relative;background:var(--crust);border:1px solid var(--s0);border-radius:8px;padding:12px 14px;
  overflow:auto;margin:8px 0 12px;font-size:12px;line-height:1.55}
.doc pre code{background:transparent;color:var(--text);padding:0;font-size:inherit}
.doc pre .c{color:var(--ov0)}
.doc pre .copy{position:absolute;top:6px;right:6px;font:inherit;font-size:10px;background:var(--s0);color:var(--sub0);
  border:1px solid var(--s1);border-radius:5px;padding:2px 8px;cursor:pointer;opacity:.7}
.doc pre .copy:hover,.doc pre:hover .copy{opacity:1}
.doc pre .copy.ok{color:var(--green);border-color:var(--green)}
.doc dfn{font-style:normal;color:var(--lav);font-weight:500;border-bottom:1px dotted var(--s2)}
.doc .lead{color:var(--sub0)}
.doc .t{width:100%;border-collapse:collapse;font-size:12px;margin:6px 0 12px;background:var(--mantle);
  border:1px solid var(--s0);border-radius:8px;overflow:hidden}
.doc .t th,.doc .t td{text-align:left;vertical-align:top;padding:6px 9px;border-bottom:1px solid var(--s0)}
.doc .t th{color:var(--ov1);font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;background:var(--crust)}
.doc .t tr:last-child td{border-bottom:0}
.doc .t td:first-child{white-space:nowrap}
.doc .t td.ty{color:var(--ov1);white-space:nowrap}
.doc .tw{overflow:auto;-webkit-overflow-scrolling:touch}
.doc .ep{border:1px solid var(--s0);border-radius:10px;padding:4px 18px 16px;margin:18px 0;background:rgba(24,24,37,.5)}
.doc .ep>h3{margin-top:12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.doc .ep>h3 code.path{background:transparent;color:var(--text);font-size:14px;padding:0;word-break:break-all}
.m{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.08em;padding:2px 7px;border-radius:5px;
  border:1px solid currentColor;line-height:14px;vertical-align:middle}
.m.get{color:var(--green)} .m.post{color:var(--blue)} .m.put{color:var(--peach)} .m.patch{color:var(--yellow)}
.m.ws{color:var(--mauve)} .m.del{color:var(--red)}
.tag{display:inline-block;font-size:10px;letter-spacing:.06em;padding:1px 8px;border-radius:20px;border:1px solid currentColor;
  line-height:16px;vertical-align:middle;font-weight:500}
.tag.v{color:var(--green)} .tag.i{color:var(--yellow)} .tag.u{color:var(--red)} .tag.n{color:var(--ov1)}
.doc .note{border-left:3px solid var(--s2);padding:6px 12px;margin:10px 0;color:var(--sub0);background:var(--mantle);
  border-radius:0 8px 8px 0;max-width:78ch}
.doc .note.warn{border-color:var(--yellow)}
.doc .note.bad{border-color:var(--red)}
.doc .legend{list-style:none;padding:0;margin:8px 0 0;font-size:12px;color:var(--ov1);max-width:none}
.doc .legend li{display:flex;gap:10px;align-items:baseline;margin:3px 0}
.doc .legend .tag{flex:none;min-width:74px;text-align:center}
.doc .kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 16px;font-size:12px;margin:6px 0 12px}
.doc .kv b{color:var(--ov1);font-weight:500}
.doc .formula{font-size:13px;color:var(--text);background:var(--crust);border:1px solid var(--s0);border-radius:8px;
  padding:8px 14px;display:inline-block;margin:4px 0 10px}
/* ---- index chapter ---- */
.ix .letters{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0 14px}
.ix .letters a,.ix .letters span{font-size:11px;padding:2px 7px;border:1px solid var(--s0);border-radius:5px;color:var(--sub0)}
.ix .letters .dis{opacity:.3}
.ix h3{font-size:13px;color:var(--lav);margin:20px 0 4px;border-bottom:1px solid var(--s0)}
.ix dl{margin:0;display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:2px 18px;font-size:12px}
.ix dt{color:var(--text)} .ix dd{margin:0;color:var(--ov1)}
.ix dd a{color:var(--blue)}
.ix .k{color:var(--ov0);font-size:10px;margin-left:5px}

/* ---- phones + tablets (<=920px): sidebar becomes a drawer, larger type and tap targets ---- */
@media(max-width:920px){
  html.drawer{overflow:hidden}
  body{font-size:14px}
  .api{display:block}
  .api aside{position:fixed;left:0;top:0;bottom:0;height:auto;width:min(340px,88vw);z-index:70;background:var(--mantle);
    transform:translateX(-102%);transition:transform .18s ease;box-shadow:0 0 40px rgba(0,0,0,.5);font-size:13px;
    padding:10px 10px 70px;overscroll-behavior:contain}
  .api aside.open{transform:none}
  html.drawer .menu{display:none}
  .backdrop.on{display:block}
  .search{padding:3px 4px 3px 10px;gap:8px}
  .search input{font-size:16px;min-height:38px}
  .search kbd{display:none}
  .search .x{display:block;min-width:40px;min-height:38px}
  .toc>ul>li>a,.toc ul ul a{font-size:13px;min-height:40px;display:flex;align-items:center;padding:4px 8px}
  .toc ul ul ul a{font-size:12.5px}
  .sres li{padding:8px 6px} .sres .k{font-size:11px} .sres .refs{font-size:12.5px} .sres .refs a{display:inline-block;padding:4px 0}
  .menu{display:inline-flex;align-items:center;left:14px;right:auto;bottom:calc(14px + env(safe-area-inset-bottom));
    min-height:44px;font-size:13px;padding:10px 18px}
  .api main{padding:14px 16px 110px}
  .doc h1{font-size:20px}
  .doc h3{font-size:15px}
  .doc h4{font-size:11.5px}
  .doc .sub,.doc .legend,.doc .kv{font-size:13px}
  .doc pre{font-size:12.5px;padding:40px 12px 12px}
  .doc pre .copy{top:8px;right:8px;font-size:12px;padding:6px 12px;min-height:32px;opacity:1}
  .doc .t{font-size:12.5px}
  .doc .t td:first-child,.doc .t td.ty{white-space:normal}
  .doc .t td:first-child{min-width:110px}
  .doc .t td:last-child{min-width:220px}
  .doc .ep{padding:2px 12px 12px}
  .ix .letters{gap:6px}
  .ix .letters a,.ix .letters span{font-size:13px;min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0}
  .ix dl{grid-template-columns:1fr;font-size:13px}
  .ix dt,.ix dd{min-width:0;overflow-wrap:anywhere}
  .ix dt code{white-space:normal}
  .ix dd{margin-bottom:8px} .ix dd a{display:inline-block;padding:3px 0}
  .ix .k{font-size:11px}
}
/* ---- phones (<=600px): tables stack into labelled rows, code wraps inside its box ---- */
@media(max-width:600px){
  .doc .kv{grid-template-columns:1fr;gap:0} .doc .kv>b{margin-top:8px}
  .doc .formula{display:block;overflow-wrap:anywhere}
  .doc .ep>h3 code.path{font-size:13.5px}
  .doc pre{white-space:pre-wrap;overflow-wrap:anywhere}
  .doc .t,.doc .t tbody,.doc .t tr,.doc .t td{display:block}
  .doc .t thead{display:none}
  .doc .t tr{padding:8px 10px;border-bottom:1px solid var(--s0)}
  .doc .t tr:last-child{border-bottom:0}
  .doc .t td,.doc .t td:first-child,.doc .t td:last-child{padding:1px 0;border:0;min-width:0;overflow-wrap:anywhere}
  .doc .t td:first-child{padding-bottom:3px}
  .doc .t td:empty{display:none}
  .doc .t td[data-l]::before{content:attr(data-l);color:var(--ov1);font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin-right:8px}
}
