@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");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}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");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}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-sans:"Geist Variable", "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--color-bg:#fafafa;--color-surface:#fff;--color-surface-muted:#f4f4f5;--color-border:#e4e4e7;--color-border-strong:#d4d4d8;--color-text:#18181b;--color-text-muted:#6b7280;--color-accent:#2563eb;--color-accent-soft:#eff6ff;--color-accent-contrast:#fff;--color-success:#15803d;--color-warning:#b45309;--color-danger:#b91c1c;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--shadow-1:0 1px 2px #18181b0f;--shadow-sm:var(--shadow-1);--shadow-lg:0 10px 25px #18181b24;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--header-height:56px;--command-height:46px;--nav-width:232px;--nav-collapsed-width:64px;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-lg:16px;--text-xl:20px;--text-2xl:26px}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-bg:#0f1012;--color-surface:#17181b;--color-surface-muted:#1f2024;--color-border:#2a2c31;--color-border-strong:#3a3d44;--color-text:#f4f4f5;--color-text-muted:#a1a1aa;--color-accent:#60a5fa;--color-accent-soft:#1e293b;--color-accent-contrast:#0b1220;--color-success:#4ade80;--color-warning:#fbbf24;--color-danger:#f87171;--shadow-1:0 1px 2px #0006;--shadow-sm:var(--shadow-1);--shadow-lg:0 10px 25px #0000008c}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}h1,h2,h3,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.btn{align-items:center;gap:var(--space-2);height:34px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--text-sm);cursor:pointer;font-weight:500;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover{background:var(--color-surface-muted)}.btn--primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-contrast)}.btn--primary:hover{filter:brightness(.95)}.btn--ghost{background:0 0;border-color:#0000}.btn--ghost:hover{background:var(--color-surface-muted)}.btn--icon{justify-content:center;width:34px;padding:0}.btn:disabled{opacity:.5;cursor:not-allowed}.field{gap:var(--space-1);flex-direction:column;display:flex}.field__label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:500}.input,.select,.textarea{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;font-size:var(--text-sm);padding:7px 10px}.textarea{resize:vertical;min-height:80px}.card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.badge{height:22px;padding:0 var(--space-2);font-size:var(--text-xs);background:var(--color-surface-muted);color:var(--color-text-muted);border-radius:999px;align-items:center;gap:4px;font-weight:500;display:inline-flex}.badge--accent{background:var(--color-accent-soft);color:var(--color-accent)}.badge--success{background:color-mix(in srgb, var(--color-success) 12%, transparent);color:var(--color-success)}.badge--warning{background:color-mix(in srgb, var(--color-warning) 14%, transparent);color:var(--color-warning)}.global-bar{height:var(--header-height);align-items:center;gap:var(--space-3);padding:0 var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex}.global-bar__brand{align-items:center;gap:var(--space-2);letter-spacing:-.01em;font-weight:600;display:flex}.global-bar__search{flex:1;max-width:420px;position:relative}.global-bar__search .input{padding-left:32px}.global-bar__search svg{color:var(--color-text-muted);position:absolute;top:8px;left:9px}.global-bar__spacer{flex:1}.global-bar__user{align-items:center;gap:var(--space-2);display:flex}.avatar{object-fit:cover;background:var(--color-surface-muted);border-radius:50%;width:28px;height:28px}.avatar--initials{font-size:var(--text-xs);color:var(--color-text-muted);place-items:center;font-weight:600;display:grid}.command-bar{align-items:center;gap:var(--space-2);min-height:var(--command-height);padding:var(--space-1) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex;overflow-x:auto}.command-group{align-items:center;gap:var(--space-1);padding-right:var(--space-3);border-right:1px solid var(--color-border);display:flex}.command-group:last-child{border-right:0}.command-group__label{font-size:var(--text-xs);color:var(--color-text-muted);margin-right:var(--space-1)}.app-body{min-height:calc(100% - var(--header-height));display:flex}.app-body--with-command{min-height:calc(100% - var(--header-height) - var(--command-height))}.module-nav{border-right:1px solid var(--color-border);background:var(--color-surface);padding:var(--space-2);width:var(--nav-width);flex-shrink:0;transition:width .12s}.module-nav--collapsed{width:var(--nav-collapsed-width)}.module-nav__item{align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--text-sm);white-space:nowrap;padding:8px 10px;display:flex;overflow:hidden}.module-nav__item:hover{background:var(--color-surface-muted);color:var(--color-text)}.module-nav__item--active{background:var(--color-accent-soft);color:var(--color-accent);font-weight:500}.module-tabs{gap:var(--space-1);padding:0 var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex;overflow-x:auto}.module-tabs__item{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);border-bottom:2px solid #0000;padding:10px 12px;display:flex}.module-tabs__item--active{color:var(--color-accent);border-bottom-color:var(--color-accent);font-weight:500}.content{min-width:0;padding:var(--space-5);flex:1}.page-header{align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.page-header h1{font-size:var(--text-xl);letter-spacing:-.01em;font-weight:600}.page-header p{color:var(--color-text-muted);font-size:var(--text-sm)}.project-header{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex}.project-header__icon{border-radius:var(--radius-sm);background:var(--color-accent-soft);width:36px;height:36px;color:var(--color-accent);place-items:center;display:grid}.breadcrumb{font-size:var(--text-xs);color:var(--color-text-muted);align-items:center;gap:6px;display:flex}.toolbar{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.toolbar__search{flex:1;max-width:320px}.project-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(240px,1fr));display:grid}.project-card{gap:var(--space-3);padding:var(--space-4);cursor:pointer;text-align:left;flex-direction:column;transition:border-color .12s,transform .12s;display:flex}.project-card:hover{border-color:var(--color-border-strong)}.project-card__top{align-items:center;gap:var(--space-2);display:flex}.project-card__icon{border-radius:var(--radius-sm);background:var(--color-accent-soft);width:32px;height:32px;color:var(--color-accent);place-items:center;display:grid}.project-card__title{font-weight:600;font-size:var(--text-base)}.project-card__description{color:var(--color-text-muted);font-size:var(--text-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:38px;display:-webkit-box;overflow:hidden}.project-card__meta{font-size:var(--text-xs);color:var(--color-text-muted);justify-content:space-between;align-items:center;display:flex}.project-row{align-items:center;gap:var(--space-3);padding:10px var(--space-4);border-bottom:1px solid var(--color-border);cursor:pointer;grid-template-columns:1fr 160px 120px 100px;display:grid}.project-row:hover{background:var(--color-surface-muted)}.empty-state{align-items:center;gap:var(--space-2);padding:var(--space-6);text-align:center;color:var(--color-text-muted);flex-direction:column;display:flex}.empty-state h2{font-size:var(--text-lg);color:var(--color-text)}.table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.table th{text-align:left;font-weight:500;font-size:var(--text-xs);color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding:8px 10px}.table td{border-bottom:1px solid var(--color-border);vertical-align:top;padding:10px}.table tr:hover td{background:var(--color-surface-muted)}.modal-backdrop{padding:var(--space-4);z-index:50;background:#0c0c0e6b;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:460px;padding:var(--space-5);box-shadow:0 12px 40px #0000002e}.modal h2{font-size:var(--text-lg);margin-bottom:var(--space-4)}.modal__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5);display:flex}.login{min-height:100vh;padding:var(--space-5);place-items:center;display:grid}.login__card{width:100%;max-width:380px;padding:var(--space-6);gap:var(--space-4);text-align:center;flex-direction:column;display:flex}.login__logo{border-radius:var(--radius-md);background:var(--color-accent-soft);width:44px;height:44px;color:var(--color-accent);place-items:center;margin:0 auto;display:grid}.login__hint{font-size:var(--text-xs);color:var(--color-text-muted)}.muted{color:var(--color-text-muted)}.row{align-items:center;gap:var(--space-2);display:flex}.stack{gap:var(--space-3);flex-direction:column;display:flex}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.search-result{border-radius:var(--radius-md);width:100%;color:inherit;text-align:left;font:inherit;font-size:var(--text-sm);cursor:pointer;background:0 0;border:0;padding:8px 10px;display:block}.search-result:hover{background:var(--color-surface-muted)}.search-result--static{cursor:default}.mobile-nav{display:none}@media (width<=700px){.module-tabs,.module-nav{display:none}.app-body{padding-bottom:64px}.mobile-nav{z-index:30;background:var(--color-surface);border-top:1px solid var(--color-border);justify-content:space-around;align-items:stretch;padding:4px 0;display:flex;position:fixed;bottom:0;left:0;right:0}.mobile-nav__item{color:var(--color-text-muted);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;padding:6px 8px;font-size:10px;text-decoration:none;display:flex}.mobile-nav__item--active{color:var(--color-accent)}.mobile-nav__more{position:relative}.mobile-nav__more summary{list-style:none}.mobile-nav__more summary::-webkit-details-marker{display:none}.mobile-nav__menu{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:180px;box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;bottom:56px;right:0}.mobile-nav__link{color:inherit;font-size:var(--text-sm);border-radius:var(--radius-sm);align-items:center;gap:8px;padding:8px;text-decoration:none;display:flex}.mobile-nav__link:hover{background:var(--color-surface-muted)}}.side-panel{z-index:40;background:var(--color-surface);border-left:1px solid var(--color-border);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.side-panel__resizer{cursor:col-resize;width:6px;position:absolute;top:0;bottom:0;left:-3px}.side-panel__header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.side-panel__body{padding:var(--space-4);flex:1;overflow-y:auto}.link-button{color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.link-button:hover{text-decoration:underline}.progress{background:var(--color-surface-muted);height:6px;margin:var(--space-1) 0;border-radius:999px;overflow:hidden}.progress__bar{background:var(--color-accent);height:100%}.pinout-layout{gap:var(--space-4);grid-template-columns:280px minmax(0,1fr);align-items:start;display:grid}@media (width<=800px){.pinout-layout{grid-template-columns:1fr}}.pinout-list__item{width:100%;color:inherit;font:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:0;border-left:2px solid #0000;justify-content:space-between;align-items:center;gap:6px;padding:6px 8px;display:flex}.pinout-list__item:hover{background:var(--color-surface-muted)}.pinout-list__item--active{background:var(--color-surface-muted);border-left-color:var(--color-accent)}.pinout-panels{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.pinout-mobile-toggle{display:none}.pinout-row--selected{background:color-mix(in srgb, var(--color-accent) 12%, transparent)}.footprint-viewer__toolbar{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.footprint-viewer__canvas{background-color:var(--color-surface-muted);background-image:linear-gradient(to right, color-mix(in srgb, var(--color-border) 55%, transparent) 1px, transparent 1px), linear-gradient(to bottom, color-mix(in srgb, var(--color-border) 55%, transparent) 1px, transparent 1px);cursor:grab;background-size:20px 20px;border-radius:8px;justify-content:center;align-items:center;height:420px;min-height:380px;max-height:70vh;padding:10px;display:flex;position:relative;overflow:auto}.footprint-viewer__canvas:active{cursor:grabbing}.footprint-viewer__zoom{transform-origin:50%;will-change:transform;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.footprint-viewer__zoom svg{width:100%;max-width:none;height:100%;max-height:none}.footprint-viewer__zoom text,.footprint-viewer__zoom tspan{display:none}.footprint-viewer__label{color:#fff;pointer-events:none;white-space:nowrap;background:#c62828;border:1px solid #00000059;border-radius:3px;padding:2px 4px;font-size:10px;font-weight:600;line-height:1;position:absolute;transform:translate(-50%,-50%)}.pinout-pad--hover,.pinout-pad--selected{filter:drop-shadow(0 0 3px var(--color-accent))}.pinout-pad--selected{filter:drop-shadow(0 0 4px var(--color-accent))}@media (width<=800px){.pinout-panels{grid-template-columns:1fr}.pinout-mobile-toggle{gap:var(--space-2);display:flex}.pinout-panel--hidden{display:none}}.pinout-top{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.pinout-tables{gap:var(--space-3);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.footprint-viewer__tooltip{z-index:5;pointer-events:none;background:var(--color-surface);border:1px solid var(--color-border);font-size:var(--text-xs);white-space:nowrap;box-shadow:var(--shadow-sm);border-radius:4px;padding:3px 6px;position:absolute}@media (width<=900px){.pinout-top,.pinout-tables{grid-template-columns:1fr}}.image-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.image-overlay__image{object-fit:contain;background:var(--color-surface);border-radius:8px;max-width:90vw;max-height:88vh;box-shadow:0 20px 60px #0006}@media (width<=700px){.image-overlay__image{max-width:70vw;max-height:50vh}}.form-error,.form-success{border-radius:var(--radius-sm);font-size:var(--text-sm);border:1px solid #0000;padding:10px 12px}.form-error{color:var(--color-danger);border-color:color-mix(in srgb, var(--color-danger) 35%, transparent);background:color-mix(in srgb, var(--color-danger) 8%, transparent)}.form-success{color:var(--color-success);border-color:color-mix(in srgb, var(--color-success) 35%, transparent);background:color-mix(in srgb, var(--color-success) 8%, transparent)}
