@font-face{font-family:DM Sans;src:url(/fonts/dmsans/DMSans-latin.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;src:url(/fonts/dmsans/DMSans-latin-ext.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--font-family-base:"DM Sans", system-ui, -apple-system, sans-serif;--font-family-mono:ui-monospace, "Cascadia Code", monospace;--font-weight-light:300;--font-weight-base:400;--font-weight-medium:500;--space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:40px;--space-6:48px;--space-8:64px;--space-10:80px;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--radius-pill:50px;--nav-width:220px;--header-height:52px;--footer-height:44px;--container-max:1500px;--content-max:720px}[data-theme=light]{--bg-base:#f5f3f0;--bg-surface:#fff;--bg-hover:#eceae6;--bg-input:#fff;--bg-overlay:#0000000a;--sidebar-bg:#f5f3f0;--border-subtle:#1a191717;--border-default:#1a191729;--border-focus:#1a19174d;--text-primary:#1c1b19;--text-secondary:#6b6966;--text-muted:#9c9894;--text-link:#4a6fa5;--accent-bg:#1c1b19;--accent-text:#f5f3f0;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 16px #0000001a, 0 1px 4px #0000000f;--btn-bg:#1c1b19;--btn-text:#f5f3f0;--btn-bg-hover:#1c1b19d9;--input-bg:var(--bg-hover);--input-border:transparent;--input-border-focus:var(--border-default);--tag-bg:#00000014;--tag-text:var(--text-secondary);--link-memo-bg:#4a6fa517;--link-memo-text:#4a6fa5;--color-danger:#c0392b;--color-success:#27ae60;--color-internal:#4a6fa5;--color-public:#27ae60;--color-on-accent:#fff;--reaction-active-border:var(--accent-bg);--reaction-active-bg:#4a6fa51a;--reaction-active-text:var(--text-link)}[data-theme=dark]{--bg-base:#1a1917;--bg-surface:#232120;--bg-hover:#2d2b29;--bg-input:#232120;--bg-overlay:#ffffff0a;--sidebar-bg:#1a1917;--border-subtle:#e2e0dc17;--border-default:#e2e0dc2e;--border-focus:#e2e0dc59;--text-primary:#f5f3f0;--text-secondary:#9c9894;--text-muted:#5e5c59;--text-link:#7ba7d4;--accent-bg:#353534;--accent-text:#afaeac;--shadow-sm:0 1px 3px #00000047, 0 1px 2px #0000002e;--shadow-md:0 4px 16px #00000073, 0 1px 4px #00000038;--btn-bg:#353534;--btn-text:#afaeac;--btn-bg-hover:#454443;--input-bg:var(--bg-hover);--input-border:transparent;--input-border-focus:var(--border-default);--tag-bg:#ffffff1a;--tag-text:var(--text-secondary);--link-memo-bg:#7ba7d41f;--link-memo-text:#7ba7d4;--color-danger:#e74c3c;--color-success:#2ecc71;--color-internal:#7ba7d4;--color-public:#2ecc71;--color-on-accent:#fff;--reaction-active-border:var(--accent-bg);--reaction-active-bg:#7ba7d41f;--reaction-active-text:var(--text-link)}*,:before,:after{box-sizing:border-box;margin:0;padding:0;font-family:inherit}html,body,#root{height:100%;overflow:hidden}html{font-family:var(--font-family-base);font-weight:var(--font-weight-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-base);color:var(--text-primary);font-size:14px;line-height:1.3}body{background:var(--bg-base);color:var(--text-primary)}a{color:var(--text-link);text-decoration:none}a:hover{color:var(--text-primary)}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-base);letter-spacing:-.02em;line-height:1.1}code,pre{font-family:var(--font-family-mono);font-size:.875em}pre{background:var(--bg-hover);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:var(--space-2);overflow-x:auto}::-webkit-scrollbar{width:4px;height:0}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:2px}*{scrollbar-width:thin;scrollbar-color:var(--border-default) transparent}.container{width:100%;max-width:var(--container-max);padding:0 var(--space-3);margin:0 auto}.ibtn{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:background .12s,color .12s;display:inline-flex}.ibtn:hover{background:var(--bg-hover);color:var(--text-secondary)}.ibtn:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}.btn{font-family:var(--font-family-base);font-size:13px;font-weight:var(--font-weight-base);cursor:pointer;white-space:nowrap;border-radius:var(--radius-pill);border:none;align-items:center;gap:5px;padding:5px 13px;text-decoration:none;transition:opacity .15s,background .15s;display:inline-flex}.btn:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px}.btn-solid{background:var(--accent-bg);color:var(--accent-text)}.btn-solid:hover{opacity:.85}.btn-ghost{color:var(--text-secondary);border-radius:var(--radius-sm);background:0 0;padding:5px 8px}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-outline{border:1px solid var(--border-default);color:var(--text-secondary);background:0 0}.btn-outline:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-sm{border-radius:var(--radius-pill);background:var(--btn-bg);color:var(--btn-text);padding:5px 13px;font-size:13px}.btn-sm:hover{background:var(--btn-bg-hover)}.search-wrap{flex:1;align-items:center;display:flex;position:relative}.search-wrap svg{color:var(--text-muted);pointer-events:none;flex-shrink:0;position:absolute;left:10px}.search-input{background:var(--bg-hover);border-radius:var(--radius-sm);width:100%;font-family:var(--font-family-base);color:var(--text-primary);border:1px solid #0000;outline:none;padding:6px 10px 6px 32px;font-size:13px;transition:border-color .15s}.search-input::placeholder{color:var(--text-muted)}.search-input:focus{border-color:var(--border-default);background:var(--bg-input)}.input{background:var(--input-bg);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);font-family:var(--font-family-base);outline:none;padding:10px 14px;font-size:14px;line-height:1.3;transition:border-color .15s}.input:focus{border-color:var(--input-border-focus)}.input::placeholder{color:var(--text-muted)}select.input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%239c9894' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}label{font-size:12px;font-weight:var(--font-weight-base);letter-spacing:2.4px;text-transform:uppercase;color:var(--text-secondary);margin-bottom:6px;display:block}.form-group{flex-direction:column;gap:6px;display:flex}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-3);box-shadow:var(--shadow-sm)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.prose h1{margin-bottom:var(--space-2);letter-spacing:-.04em;font-size:2rem}.prose h2{margin-bottom:var(--space-2);margin-top:var(--space-4);font-size:1.5rem}.prose h3{margin-bottom:var(--space-1);margin-top:var(--space-3);font-size:1.25rem}.prose p{margin-bottom:var(--space-2);color:var(--text-muted);line-height:1.6}.prose ul,.prose ol{margin-bottom:var(--space-2);padding-left:var(--space-3)}.prose li{color:var(--text-muted);margin-bottom:4px}.prose blockquote{border-left:2px solid var(--border-default);padding-left:var(--space-2);color:var(--text-secondary);margin:var(--space-2) 0}.prose table{border-collapse:collapse;width:100%;margin:var(--space-2) 0;font-size:14px}.prose th,.prose td{border:1px solid var(--border-subtle);text-align:left;padding:8px 12px}.prose th{color:var(--text-secondary);font-weight:var(--font-weight-medium)}.prose code{background:var(--bg-hover);border-radius:var(--radius-xs);padding:2px 6px;font-size:.875em}.prose a{color:var(--text-link)}.prose img{border-radius:var(--radius-md);max-width:100%}
