*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d1117;--bg-alt:#11161d;--panel:#161c25;--panel-hover:#1b2330;--border:#232b38;--border-soft:#1b222d;--text:#e6e8eb;--text-dim:#8b95a5;--text-faint:#5b6573;--accent:#ffb454;--accent-dim:color-mix(in srgb, var(--accent) 55%, #000);--green:#7ee787;--blue:#79c0ff;--pink:#ff7b9c;--purple:#c9a8ff;--orange:#ffb454;--sans:"JetBrains Mono", "WenYuan Rounded SC VF", "Fira Code", "Cascadia Code", "Courier New", courier, monospace;--mono:"JetBrains Mono", "Fira Code", "Cascadia Code", "Courier New", "WenYuan Rounded SC VF", courier, monospace}html,body{background:var(--bg);color:var(--text);font-family:var(--sans);scroll-behavior:smooth}body{flex-direction:column;min-height:100vh;display:flex;overflow-x:clip}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.navbar{border-bottom:1px solid var(--border)}.navbar::-webkit-scrollbar{height:3px}.navbar::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.navbar a,.navbar .nav-more-btn{font-family:var(--sans);font-size:13px;transition:background .15s,color .15s}.nav-time{border-bottom:1px solid var(--border-soft);margin-bottom:16px;padding:0 10px 16px}.nav-toggle{background:var(--panel);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;z-index:1100;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;transition:background .15s,color .15s,border-color .15s;display:none;position:fixed;top:14px;left:14px}.nav-toggle:hover{background:var(--panel-hover);border-color:var(--accent-dim);color:var(--text)}.nav-toggle svg{width:18px;height:18px;transition:opacity .15s}.nav-toggle .icon-close,.nav-toggle.open .icon-menu{display:none}.nav-toggle.open .icon-close{display:block}.nav-toggle.open{border-color:var(--accent-dim);color:var(--accent)}.overlay{backdrop-filter:blur(2px);z-index:999;background:#0000008c;display:none;position:fixed;inset:0}.overlay.visible{display:block}.scroll-up{background:var(--panel);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;opacity:0;pointer-events:none;z-index:1050;border-radius:10px;justify-content:center;align-items:center;width:42px;height:42px;padding:0;transition:opacity .25s,transform .25s,background .15s,color .15s;display:flex;position:fixed;bottom:28px;right:28px;transform:translateY(12px)}.scroll-up.visible{opacity:1;pointer-events:auto;transform:translateY(0)}.scroll-up:hover{background:var(--panel-hover);color:var(--accent)}.scroll-up svg{width:18px;height:18px}@media (width<=860px){.scroll-up{border-radius:9px;width:38px;height:38px;bottom:20px;right:16px}}.layout{flex:1;align-items:flex-start;width:100%;max-width:1180px;margin:0 auto;display:flex}.nav{border-right:1px solid var(--border);flex-shrink:0;width:236px;max-height:100vh;padding:28px 12px 40px 18px;position:sticky;top:0;overflow-y:auto}.nav::-webkit-scrollbar{width:5px}.nav::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.nav-title{color:var(--text-faint);font-family:var(--mono);letter-spacing:.1em;margin-bottom:14px;padding-left:10px;font-size:11px}.nav-group{color:var(--text-faint);font-family:var(--mono);letter-spacing:.14em;margin:16px 0 6px;padding-left:10px;font-size:10px}.nav-item{color:var(--text-dim);cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:flex-start;gap:9px;margin-bottom:2px;padding:8px 10px;font-size:13.5px;line-height:1.45;transition:background .15s,color .15s;display:flex}.nav-item:hover{background:var(--panel);color:var(--text)}.nav-item.active{background:var(--panel-hover);border-color:var(--border);color:var(--accent);font-weight:600}.nav-num{color:var(--text-faint);font-family:var(--mono);flex-shrink:0;width:18px;padding-top:3px;font-size:10.5px}.nav-item.active .nav-num{color:var(--accent)}.main{flex:1;min-width:0;max-width:100%;padding:36px 32px 100px}.section{margin-bottom:64px;scroll-margin-top:24px}.section-head{align-items:baseline;gap:14px;margin-bottom:8px;display:flex}.section-tag{background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);color:var(--accent);font-family:var(--mono);border-radius:5px;flex-shrink:0;padding:2px 9px;font-size:12px}.section h2{letter-spacing:-.01em;font-size:23px;font-weight:800}.section-desc{color:var(--text-dim);max-width:760px;margin:10px 0 22px;font-size:14px;line-height:1.6}.cards{flex-direction:column;gap:10px;display:flex}.card-group{color:var(--text-dim);align-items:center;gap:12px;margin:16px 0 2px;font-size:12.5px;font-weight:700;display:flex}.card-group:before{background:var(--accent-dim);content:"";border-radius:2px;width:3px;height:14px}.card-group:after{background:var(--border);content:"";flex:1;height:1px}.card-group:first-child{margin-top:0}.card{--card-dur:.34s;--card-ease:cubic-bezier(.32, .72, 0, 1);background:var(--panel);border:1px solid var(--border);border-radius:12px;transition:background-color .2s,border-color .2s;overflow:hidden}.card.open{border-color:var(--accent-dim)}.card-head{cursor:pointer;user-select:none;align-items:center;gap:14px;padding:16px 18px;transition:background-color .18s;display:flex}.card-head:hover{background:var(--panel-hover)}.card-icon{background:color-mix(in srgb, var(--accent) 12%, transparent);border:1px solid color-mix(in srgb, var(--accent) 22%, transparent);color:var(--accent);font-family:var(--mono);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:14px;font-weight:700;display:flex}.card-title-wrap{flex:1;min-width:0}.card-title{color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;font-weight:700;display:flex}.card-level{background:color-mix(in srgb, var(--text-faint) 12%, transparent);border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);letter-spacing:.02em;border-radius:4px;flex-shrink:0;padding:1px 6px;font-size:10.5px;font-weight:600}.card-sub{color:var(--text-dim);font-family:var(--mono);margin-top:3px;font-size:11.5px}.chevron{color:var(--text-faint);height:18px;transition:transform var(--card-dur) var(--card-ease), color .2s ease;flex-shrink:0;width:18px}.card.open .chevron{color:var(--accent);transform:rotate(180deg)}.card-body{height:0;transition:height var(--card-dur) var(--card-ease);overflow:hidden}.card-body-inner{border-top:1px solid var(--border-soft);opacity:0;padding:16px 18px 20px;transition:opacity .14s,transform .14s;transform:translateY(-4px)}.card.open .card-body-inner{opacity:1;transition:opacity calc(var(--card-dur) * .62) ease-out calc(var(--card-dur) * .12), transform calc(var(--card-dur) * .62) ease-out calc(var(--card-dur) * .12);transform:none}.explain{color:#cdd3dc;margin-bottom:14px;font-size:13.8px;line-height:1.75}.explain b{color:var(--text);font-weight:700}.explain code{color:var(--accent);font-family:var(--mono);overflow-wrap:anywhere;background:#ffffff0f;border-radius:4px;padding:1.5px 6px;font-size:12.5px}.explain .lead{margin-bottom:12px}.explain ul{flex-direction:column;gap:7px;padding-left:18px;list-style:none;display:flex}.explain li{position:relative}.explain li:before{background:var(--accent);content:"";border-radius:2px;width:6px;height:6px;position:absolute;top:.55em;left:-18px;transform:rotate(45deg)}.explain ol{counter-reset:step;flex-direction:column;gap:7px;padding-left:18px;list-style:none;display:flex}.explain ol li:before{color:var(--accent);content:counter(step);counter-increment:step;background:0 0;width:auto;height:auto;font-size:12px;font-weight:700;top:.2em;transform:none}.explain .ex-sec+.ex-sec{margin-top:16px}.explain .ex-sec.tradeoff ul{gap:10px;padding-left:0}.explain .ex-sec.tradeoff li{background:var(--bg-alt);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:10px;padding:11px 14px}.explain .ex-sec.tradeoff li:before{content:none}.explain .ex-sec.tradeoff .tw-h{color:var(--text);margin-bottom:9px;font-weight:700}.explain .ex-sec.tradeoff .tw-row{grid-template-columns:2.7em 1fr;align-items:start;gap:10px;margin-top:6px;line-height:1.6;display:grid}.explain .ex-sec.tradeoff .tw-tag{letter-spacing:.5px;text-align:center;border-radius:5px;padding:2px 0;font-size:11px;font-weight:700}.explain .ex-sec.tradeoff .tw-tag.pro{background:color-mix(in srgb, var(--green) 14%, transparent);color:var(--green)}.explain .ex-sec.tradeoff .tw-tag.con{background:color-mix(in srgb, var(--pink) 14%, transparent);color:var(--pink)}.explain .ex-sec.tradeoff .tw-tag.why{background:color-mix(in srgb, var(--text-dim) 16%, transparent);color:var(--text-dim)}.explain .ex-sec.tradeoff .tw-why-text{color:var(--text-dim)}.explain h4{color:var(--text);align-items:center;gap:8px;margin:0 0 8px;font-size:13px;font-weight:700;display:flex}.explain h4:before{background:var(--accent);content:"";border-radius:2px;width:14px;height:2px}.explain .table-scroll{max-width:100%;margin-top:2px;overflow-x:auto}.explain table{border-collapse:collapse;width:100%;margin-top:2px;font-size:12.8px}.explain .table-scroll table{margin-top:0}.explain th,.explain td{border-bottom:1px solid var(--border-soft);text-align:left;vertical-align:top;padding:7px 9px}.explain th{color:var(--text-dim);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;font-size:11px;font-weight:600}.explain td{color:#cdd3dc}.explain td:first-child{color:var(--text);font-family:var(--mono);white-space:nowrap}.explain tr:last-child td{border-bottom:none}@media (width<=640px){.explain .table-scroll table,.explain .table-scroll tbody,.explain .table-scroll tr,.explain .table-scroll td{width:100%;display:block}.explain .table-scroll thead{display:none}.explain .table-scroll tr{border-bottom:1px solid var(--border-soft);padding:9px 0}.explain .table-scroll tr:last-child{border-bottom:none}.explain .table-scroll td{border-bottom:none;padding:3px 0}.explain .table-scroll td[data-label]:before{color:var(--text-dim);content:attr(data-label);font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;margin-bottom:3px;font-size:10.5px;font-weight:600;display:block}.explain .table-scroll td:first-child{white-space:normal;font-weight:700}}.explain .ex-sec.warn h4{color:var(--pink)}.explain .ex-sec.warn h4:before,.explain .ex-sec.warn li:before{background:var(--pink)}pre{background:var(--bg-alt);border:1px solid var(--border-soft);font-family:var(--mono);white-space:pre;border-radius:9px;max-width:100%;margin-bottom:12px;padding:14px 16px;font-size:12.6px;line-height:1.7;display:block;overflow-x:auto}pre .c{color:#6b7686;font-style:italic}pre .kw{color:var(--pink)}pre .str{color:var(--green)}pre .fn{color:var(--blue)}pre .num{color:var(--purple)}pre .punc{color:#8b95a5}pre .pp{color:var(--orange)}.pitfall{color:#e8b8c4;background:#ff7b9c0f;border:1px solid #ff7b9c33;border-radius:9px;gap:10px;padding:11px 14px;font-size:12.8px;line-height:1.6;display:flex;overflow:hidden}.pitfall b{color:var(--pink)}.pitfall .pf-icon{color:var(--pink);font-family:var(--mono);flex-shrink:0;font-weight:700}.pitfall>div{overflow-wrap:break-word;min-width:0}.tip{color:#bfe8c2;background:#7ee7870d;border:1px solid #7ee7872e;border-radius:9px;gap:10px;margin-top:10px;padding:11px 14px;font-size:12.8px;line-height:1.6;display:flex;overflow:hidden}.tip .tip-icon{color:var(--green);font-family:var(--mono);flex-shrink:0;font-weight:700}.tip>div{overflow-wrap:break-word;min-width:0}@media (width<=860px){.nav-toggle{display:flex}.layout{flex-direction:row}.nav{background:var(--bg-alt);border-bottom:none;border-right:1px solid var(--border);z-index:1000;flex-flow:column;gap:0;width:260px;height:100dvh;max-height:100dvh;padding:56px 12px 40px 20px;transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;left:0;overflow-y:auto;transform:translate(-100%)}.nav.open{transform:translate(0);box-shadow:4px 0 32px #0006}.nav-drawer-header{justify-content:space-between;align-items:center;margin-bottom:16px;padding-left:10px;display:flex}.nav-title{margin-bottom:0}.nav-item{background:0 0;border:1px solid #0000;width:100%;margin-bottom:2px;padding:9px 10px;font-size:13px}.main{width:100%;padding:24px 16px 80px}.section h2{font-size:19px}}.card-head:focus-visible,.nav-item:focus-visible,.nav-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}footer{border-top:1px solid var(--border);color:var(--text-faint);font-family:var(--mono);text-align:center;padding:28px 32px;font-size:12px}html[data-theme=postgresql]{--accent:#5b9eff;--accent-dim:#2f4f80}html[data-theme=postgresql] .section-tag{background:#5b9eff1a;border:1px solid #5b9eff40}html[data-theme=postgresql] .card-icon{color:var(--accent);background:#5b9eff1a;border:1px solid #5b9eff33}html[data-theme=postgresql] pre .kw{color:var(--accent);font-weight:500}html[data-theme=postgresql] pre .typ{color:var(--pink);font-weight:500}
