.pattern-layout{display:flex;min-height:calc(100vh - 64px);background-color:var(--bg-primary)}.github-practice-banner{display:flex;align-items:center;justify-content:center;gap:.35rem;padding:.65rem 1rem;font-size:.82rem;color:var(--text-secondary);background:var(--accent-glow-faint);border-bottom:1px solid var(--border-gray);flex-wrap:wrap;text-align:center}.github-practice-banner a{color:var(--accent-color);text-decoration:none;font-weight:600;white-space:nowrap}.github-practice-banner a:hover{text-decoration:underline}.github-practice-banner code{font-family:var(--font-mono);font-size:.78rem;color:var(--accent-color)}.pattern-sidebar{width:280px;flex-shrink:0;border-right:1px solid var(--border-gray);background:var(--bg-primary);transition:background .3s,border-color .3s;position:sticky;top:64px;height:calc(100vh - 64px);overflow-y:auto;padding:1.75rem 1.25rem;z-index:50;scrollbar-width:thin;scrollbar-color:var(--border-dark) transparent}.sidebar-header{margin-bottom:1.5rem;padding:0 .5rem}.sidebar-title{font-size:.65rem;text-transform:uppercase;letter-spacing:.15em;color:var(--text-muted);font-weight:700}.sidebar-category-header{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:700;margin:0 0 .5rem .5rem}.sidebar-section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.4rem .5rem;background:none;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:700;font-family:var(--font-sans);transition:color .2s,background .2s}.sidebar-section-toggle:hover{color:var(--text-secondary);background:var(--hover-overlay)}.collapse-icon{font-size:.6rem;transition:transform .25s;opacity:.5}.sidebar-section-toggle[aria-expanded=false] .collapse-icon{transform:rotate(-90deg)}.sidebar-section-content{overflow:hidden;transition:max-height .3s ease,opacity .25s ease,margin .3s ease;max-height:2000px;opacity:1}.sidebar-section-content.collapsed{max-height:0;opacity:0;margin:0;pointer-events:none}.sidebar-sub-category{font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin:1.25rem 0 .5rem .75rem;font-weight:600;opacity:.7}.sidebar-divider{height:1px;background:var(--border-gray);margin:1.25rem 0}.sidebar-list{list-style:none;padding:0;margin:0}.sidebar-link{display:flex;align-items:center;gap:.5rem;padding:.45rem .75rem;color:var(--text-muted);font-size:.88rem;transition:all .15s;border-radius:var(--radius-md);text-decoration:none;border-left:2px solid transparent;margin-bottom:.1rem}.sidebar-link:hover{color:var(--text-secondary);background:var(--hover-overlay)}.sidebar-link.active{color:var(--accent-color);background:var(--active-overlay);font-weight:600;border-left-color:var(--accent-color);border-radius:0 var(--radius-md) var(--radius-md) 0}.language-selector-mini{margin:.75rem .25rem 0;padding:.75rem;background:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-gray)}.lang-label{display:block;font-size:.65rem;color:var(--text-muted);margin-bottom:.6rem;text-transform:uppercase;letter-spacing:.1em;font-weight:700}.lang-chips{display:flex;gap:.35rem;flex-wrap:wrap}.lang-chip-mini{padding:.25rem .65rem;border-radius:var(--radius-sm);font-size:.72rem;font-weight:600;background:var(--bg-primary);color:var(--text-muted);border:1px solid var(--border-gray);cursor:pointer;font-family:var(--font-sans);transition:all .2s;text-decoration:none}.lang-chip-mini:hover{border-color:var(--accent-color);color:var(--text-primary);background:var(--active-overlay)}.lang-chip-mini.active{background:var(--accent-color);color:#141414;border-color:var(--accent-color);font-weight:700}.lang-chip-mini.active:hover{color:#141414}.sidebar-toggle{display:none;position:fixed;bottom:1.5rem;right:1.5rem;z-index:1000;background:var(--accent-color);color:#141414;border:none;padding:.7rem 1.25rem;border-radius:50px;font-weight:700;font-size:.85rem;box-shadow:0 4px 20px var(--accent-glow);cursor:pointer;align-items:center;gap:.4rem;transition:transform .2s,box-shadow .2s}.sidebar-toggle:hover{transform:translateY(-2px);box-shadow:0 8px 28px var(--accent-glow)}@media (max-width: 1024px){.pattern-sidebar{position:fixed;left:-300px;top:0;height:100vh;width:280px;transition:left .3s cubic-bezier(.4,0,.2,1);box-shadow:6px 0 40px #0009;border-right:1px solid var(--border-gray);z-index:200}.pattern-sidebar.open{left:0}.sidebar-toggle{display:flex}.sidebar-overlay{position:fixed;inset:0;background:#0009;z-index:100;backdrop-filter:blur(2px)}}@media (max-width: 768px){.pattern-content{padding:1.5rem!important}}.pattern-content{flex:1;padding:3rem 4rem 4rem;min-width:0;max-width:900px}.design-pattern-page{line-height:1.8;font-size:1rem;color:var(--text-secondary)}.design-pattern-page h1{font-size:2.6rem;font-weight:800;letter-spacing:-.03em;line-height:1.15;margin:0 0 .5rem;color:var(--text-white)}.design-pattern-page h1+hr,.design-pattern-page h1+p+hr{display:none}.design-pattern-page>h1:first-child:after{content:"";display:block;width:48px;height:3px;background:var(--accent-color);border-radius:2px;margin-top:1rem;margin-bottom:2rem}.design-pattern-page h2{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin:2.5rem 0 1rem;color:var(--text-white);padding-bottom:.5rem;border-bottom:1px solid var(--border-gray)}.design-pattern-page h3{font-size:1.15rem;font-weight:700;margin:2rem 0 .75rem;color:var(--accent-color)}.design-pattern-page h4{font-size:1rem;font-weight:700;margin:1.5rem 0 .5rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:.85rem}.design-pattern-page p{margin:0 0 1.25rem;color:var(--text-gray);line-height:1.8}.design-pattern-page a{color:var(--accent-color);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s}.design-pattern-page a:hover{border-bottom-color:var(--accent-color)}.design-pattern-page pre{margin:1.75rem 0;border-radius:var(--radius-md);overflow:auto;background:var(--code-bg)!important;transition:none;border:1px solid var(--border-gray);position:relative}.design-pattern-page pre:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent-color),var(--accent-secondary),transparent);border-radius:var(--radius-md) var(--radius-md) 0 0}.design-pattern-page pre code{display:block;padding:1.25rem 1.5rem!important;background:none!important;color:inherit;font-size:.875rem;font-family:var(--font-mono);line-height:1.7}.design-pattern-page code{font-family:var(--font-mono);font-size:.85em;background:var(--accent-glow-faint);border:1px solid var(--accent-glow-subtle);padding:.15em .45em;border-radius:4px;color:var(--accent-color)}.design-pattern-page blockquote{margin:1.75rem 0;padding:1.25rem 1.75rem;border-left:3px solid var(--accent-color);background:var(--accent-glow-faint);border-radius:0 var(--radius-md) var(--radius-md) 0}.design-pattern-page blockquote p{margin:0;color:var(--text-secondary);font-style:italic}.design-pattern-page ul,.design-pattern-page ol{margin:0 0 1.25rem;padding-left:1.75rem;color:var(--text-gray)}.design-pattern-page li{margin-bottom:.5rem;line-height:1.7}.design-pattern-page table{width:100%;margin:1.75rem 0;border-collapse:collapse;border-radius:var(--radius-md);overflow:hidden;font-size:.9rem;border:1px solid var(--border-gray)}.design-pattern-page th{background:var(--bg-tertiary);padding:.75rem 1.1rem;font-weight:700;font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:var(--accent-color);text-align:left;border-bottom:1px solid var(--border-gray)}.design-pattern-page td{padding:.75rem 1.1rem;border-bottom:1px solid var(--border-gray);color:var(--text-gray)}.design-pattern-page tbody tr:last-child td{border-bottom:none}.design-pattern-page tbody tr:hover{background:var(--glass-bg)}.design-pattern-page hr{margin:2.5rem 0;border:none;height:1px;background:var(--border-gray)}.design-pattern-page .mermaid{display:flex;justify-content:center;margin:2rem 0;padding:1.5rem;background:var(--code-bg);border:1px solid var(--border-gray);border-radius:var(--radius-md);overflow-x:auto;position:relative}.design-pattern-page .mermaid:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent-color),var(--accent-secondary),transparent);border-radius:var(--radius-md) var(--radius-md) 0 0}.design-pattern-page .mermaid svg{max-width:100%;height:auto}.design-pattern-page img{max-width:100%;height:auto;border-radius:var(--radius-md);margin:1.75rem 0;border:1px solid var(--border-gray);display:block}.design-pattern-page strong,.design-pattern-page b{color:var(--text-white);font-weight:600}.design-pattern-page em,.design-pattern-page i{color:var(--text-secondary)}@media (max-width: 1200px){.pattern-content{padding:2.5rem 3rem}}@media (max-width: 1024px){.pattern-content{padding:2rem 2.5rem;max-width:100%}}@media (max-width: 768px){.pattern-content{padding:1.5rem}.design-pattern-page h1{font-size:2rem}.design-pattern-page h2{font-size:1.3rem}.design-pattern-page h3{font-size:1.1rem}.design-pattern-page pre code{font-size:.8rem;padding:1rem!important}.design-pattern-page table{font-size:.82rem}.design-pattern-page th,.design-pattern-page td{padding:.6rem .75rem}}
