.uidict{--bg:#f0f0f4;--surface:#fff;--surface2:#f7f7fa;--surface3:#ececf0;--border:#dcdce4;--border2:#c8c8d2;--text:#333;--text2:#556;--text3:#888898;--accent:#4f46e5;--accent2:#6366f1;--accent-glow:#4f46e514;--green:#16a34a;--orange:#d97706;--red:#dc2626;--cyan:#0891b2;--pink:#db2777;--purple:#9333ea;--radius:12px;--radius-sm:8px;--radius-xs:4px;--shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001a;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;letter-spacing:normal;min-height:100vh;font-family:Inter,SF Pro Display,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.5}.uidict *,.uidict :before,.uidict :after{box-sizing:border-box;margin:0;padding:0}.uidict a{color:var(--accent);text-decoration:none}.uidict button{font-family:inherit}.uidict ::selection{background:var(--accent);color:#fff}.uidict .material-icons-outlined{vertical-align:middle;color:var(--text2);-webkit-font-feature-settings:"liga";font-size:18px;line-height:1}.uidict .site-header{z-index:100;border-bottom:1px solid var(--border);background:#fff;padding:0 24px;position:sticky;top:0}.uidict .header-inner{align-items:center;gap:20px;max-width:1400px;height:60px;margin:0 auto;display:flex}.uidict .header-logo{letter-spacing:.02em;color:var(--text);align-items:baseline;gap:.4rem;font-size:1.2rem;font-weight:900;display:inline-flex}.uidict .header-logo b{color:var(--accent)}.uidict .header-logo small{letter-spacing:.16em;color:var(--text3);text-transform:uppercase;font-size:.6rem;font-weight:600}.uidict .header-title{color:var(--text);white-space:nowrap;align-items:center;gap:.35rem;font-size:.95rem;font-weight:700;display:flex}.uidict .header-title .material-icons-outlined{color:var(--accent);font-size:18px}.uidict .header-link-btn{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-xs);color:var(--text2);white-space:nowrap;align-items:center;gap:.3rem;margin-right:auto;padding:.35rem .7rem;font-size:.78rem;font-weight:600;text-decoration:none;transition:all .15s;display:inline-flex}.uidict .header-link-btn:hover{background:var(--accent-glow);border-color:var(--accent);color:var(--accent)}.uidict .header-link-btn .material-icons-outlined{color:inherit;font-size:14px}.uidict .header-divider{background:var(--border);flex-shrink:0;width:1px;height:24px}.uidict .search-box{flex-shrink:0;width:280px;position:relative}.uidict .search-box input{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);outline:none;padding:.5rem .9rem .5rem 2.2rem;font-family:inherit;font-size:.85rem;transition:border-color .2s}.uidict .search-box input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4f46e51a}.uidict .search-box .material-icons-outlined{color:var(--text3);font-size:16px;position:absolute;top:50%;left:.6rem;transform:translateY(-50%)}.uidict .search-box .shortcut{color:var(--text3);border:1px solid var(--border);background:var(--surface2);border-radius:3px;padding:1px 5px;font-size:.65rem;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.uidict .counter{color:var(--text3);flex-shrink:0;font-size:.78rem;font-weight:500}.uidict .header-nav{flex-shrink:0;align-items:center;gap:18px;margin-left:8px;display:flex}.uidict .header-nav a{color:var(--text2);white-space:nowrap;font-size:.82rem;font-weight:500;text-decoration:none;transition:color .15s}.uidict .header-nav a:hover{color:var(--accent)}.uidict .header-nav-cta{color:var(--accent)!important;font-weight:600!important}.uidict .lang-toggle{border:1px solid var(--border);border-radius:var(--radius-xs);flex-shrink:0;align-items:center;gap:0;display:flex;overflow:hidden}.uidict .lang-toggle button{background:var(--surface2);color:var(--text3);cursor:pointer;border:none;padding:3px 8px;font-size:.72rem;font-weight:600;line-height:1.4;transition:all .15s}.uidict .lang-toggle button.active{background:var(--accent);color:#fff}.uidict .mobile-fab{z-index:900;background:var(--accent);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;transition:transform .15s;display:none;position:fixed;bottom:20px;right:20px;box-shadow:0 4px 16px #4f46e54d}.uidict .mobile-fab:hover{transform:scale(1.05)}.uidict .mobile-fab span{background:#fff;border-radius:1px;width:18px;height:2px;transition:all .2s;display:block;position:relative}.uidict .mobile-fab span:before,.uidict .mobile-fab span:after{content:"";background:#fff;border-radius:1px;width:100%;height:2px;transition:all .2s;position:absolute;left:0}.uidict .mobile-fab span:before{top:-6px}.uidict .mobile-fab span:after{top:6px}.uidict .mobile-fab.open span{background:0 0}.uidict .mobile-fab.open span:before{top:0;transform:rotate(45deg)}.uidict .mobile-fab.open span:after{top:0;transform:rotate(-45deg)}.uidict .mobile-drawer{z-index:899;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);opacity:0;pointer-events:none;visibility:hidden;min-width:180px;padding:12px 8px;transition:all .2s;position:fixed;bottom:80px;right:20px;transform:translateY(8px)scale(.95)}.uidict .mobile-drawer.open{opacity:1;pointer-events:auto;visibility:visible;transform:translateY(0)scale(1)}.uidict .mobile-drawer a{color:var(--text2);border-radius:var(--radius-sm);padding:10px 16px;font-size:.85rem;font-weight:500;text-decoration:none;transition:all .12s;display:block}.uidict .mobile-drawer a:hover{background:var(--accent-glow);color:var(--accent)}.uidict .drawer-cta{border-top:1px solid var(--border);margin-top:4px;color:var(--accent)!important;padding-top:14px!important;font-weight:600!important}@media (max-width:768px){.uidict .header-nav,.uidict .header-link-btn{display:none}.uidict .mobile-fab{display:flex}.uidict .search-box{width:160px}.uidict .header-title{margin-right:auto;font-size:.85rem}}.uidict .main{gap:2rem;max-width:1400px;margin:0 auto;padding:1.5rem 2rem;display:flex}.uidict .sidebar{flex-shrink:0;align-self:flex-start;width:230px;max-height:calc(100vh - 76px);padding-right:.5rem;position:sticky;top:76px;overflow-y:auto}.uidict .sidebar::-webkit-scrollbar{width:3px}.uidict .content{flex:1;min-width:0}.uidict .cat-nav{list-style:none}.uidict .cat-nav li{margin-bottom:1px}.uidict .cat-nav a{border-radius:var(--radius-xs);color:var(--text2);cursor:pointer;align-items:center;gap:.5rem;padding:.4rem .7rem;font-size:.82rem;transition:all .15s;display:flex}.uidict .cat-nav a:hover{background:var(--surface);color:var(--text)}.uidict .cat-nav a.active{background:var(--accent-glow);color:var(--accent)}.uidict .cat-nav .count{color:var(--text3);text-align:right;min-width:18px;margin-left:auto;font-size:.7rem}.uidict .cat-nav .material-icons-outlined{text-align:center;width:20px;font-size:18px}.uidict .category{margin-bottom:2.5rem;scroll-margin-top:76px}.uidict .category-header{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;margin-bottom:1rem;padding-bottom:.6rem;display:flex}.uidict .category-header .material-icons-outlined{color:var(--accent);font-size:22px}.uidict .category-header h2{letter-spacing:-.01em;color:var(--text);font-size:1.15rem;font-weight:700}.uidict .category-header .cat-badge{background:var(--surface3);color:var(--text3);border-radius:10px;padding:2px 8px;font-size:.7rem}.uidict .pattern-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.uidict .pattern-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;box-shadow:var(--shadow);text-align:left;width:100%;font:inherit;color:inherit;transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s,border-color .35s;display:block;overflow:hidden}.uidict .pattern-card:hover{border-color:var(--accent);box-shadow:var(--shadow-lg);transform:translateY(-4px)}.uidict .pattern-card .preview:after{content:"";pointer-events:none;opacity:0;z-index:1;background:radial-gradient(200px circle at var(--mx,50%) var(--my,50%), #4f46e521, transparent 66%);transition:opacity .3s;position:absolute;inset:0}.uidict .pattern-card:hover .preview:after{opacity:1}.uidict .pattern-card .preview{background:var(--surface2);border-bottom:1px solid var(--border);justify-content:center;align-items:center;height:180px;padding:1rem;display:flex;position:relative;overflow:hidden}.uidict .pattern-card .card-info{padding:.75rem 1rem}.uidict .pattern-card .card-name{color:var(--text);font-size:.9rem;font-weight:600}.uidict .pattern-card .card-name-en{color:var(--text3);font-size:.72rem;font-weight:400}.uidict .pattern-card .card-desc{color:var(--text2);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin-top:.3rem;font-size:.75rem;line-height:1.45;display:-webkit-box;overflow:hidden}.uidict .pattern-card .card-tags{flex-wrap:wrap;gap:4px;margin-top:.4rem;display:flex}.uidict .pattern-card .tag{background:var(--surface3);color:var(--text3);border-radius:3px;padding:1px 6px;font-size:.65rem}.uidict .mini{color:var(--text2);font-family:inherit;font-size:10px}.uidict .mini *{box-sizing:border-box}.uidict .mini-btn{background:var(--accent);color:#fff;border-radius:4px;padding:4px 12px;font-size:9px;font-weight:600;display:inline-block}.uidict .mini-btn-outline{border:1px solid var(--border2);color:var(--text2);border-radius:4px;padding:3px 11px;font-size:9px;display:inline-block}.uidict .mini-btn-ghost{color:var(--accent);padding:4px 12px;font-size:9px;font-weight:500;display:inline-block}.uidict .mini-input{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:3px;padding:4px 8px;font-size:9px;display:block}.uidict .mini-bar{background:var(--surface3);border-radius:2px;height:4px;overflow:hidden}.uidict .mini-bar-fill{border-radius:2px;height:100%}.uidict .mini-avatar{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:9px;font-weight:700;display:inline-flex}.uidict .mini-badge{border-radius:8px;padding:1px 6px;font-size:8px;font-weight:600;display:inline-block}.uidict .mini-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;width:100%;padding:8px}.uidict .mini-divider{border:none;border-top:1px solid var(--border);margin:4px 0}.uidict .mini-skeleton{background:linear-gradient(90deg, var(--surface3) 25%, var(--border) 50%, var(--surface3) 75%);background-size:200% 100%;border-radius:3px;animation:1.5s infinite uid-shimmer}.uidict .mini-spin{animation:.8s linear infinite uid-spin}.uidict .mini-pulse{animation:1.4s ease-in-out infinite uid-pulse}.uidict .mini-bounce{animation:1.2s ease-in-out infinite uid-bounce}@keyframes uid-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes uid-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes uid-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes uid-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.uidict .modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:950;background:#00000059;justify-content:center;align-items:center;padding:2rem;display:none;position:fixed;inset:0}.uidict .modal-overlay.active{animation:.28s uid-fade;display:flex}@keyframes uid-fade{0%{opacity:0}to{opacity:1}}.uidict .modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:700px;max-height:80vh;box-shadow:var(--shadow-lg);animation:.42s cubic-bezier(.16,1,.3,1) uid-modal-in;overflow-y:auto}@keyframes uid-modal-in{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.uidict .modal-overlay.active,.uidict .modal{animation:none}}.uidict .modal-header{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex;position:sticky;top:0}.uidict .modal-header h3{color:var(--text);font-size:1.1rem;font-weight:700}.uidict .modal-close{color:var(--text3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:1.2rem;transition:all .15s;display:inline-flex}.uidict .modal-close:hover{background:var(--surface3);color:var(--text)}.uidict .modal-body{padding:1.25rem}.uidict .modal-preview{background:var(--surface2);border-radius:var(--radius-sm);border:1px solid var(--border);justify-content:center;align-items:center;min-height:200px;margin-bottom:1rem;padding:1.5rem;display:flex}.uidict .modal-section{margin-bottom:1rem}.uidict .modal-section h4{color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem;font-size:.85rem;font-weight:600}.uidict .modal-section p,.uidict .modal-section li{color:var(--text2);font-size:.85rem;line-height:1.6}.uidict .modal-section ul{padding-left:1.2rem}.uidict .no-results{text-align:center;color:var(--text3);padding:3rem}.uidict .uid-footer{border-top:1px solid var(--border);background:var(--surface);margin-top:1rem}.uidict .uid-footer-inner{max-width:1400px;color:var(--text3);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:2rem;font-size:.8rem;display:flex}.uidict .uid-footer a{color:var(--text2);font-weight:500}.uidict .uid-footer a:hover{color:var(--accent)}.uidict .uid-footer .uid-footer-links{flex-wrap:wrap;gap:1.25rem;display:flex}@media (max-width:900px){.uidict .sidebar{display:none}.uidict .main{padding:1rem}.uidict .pattern-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.uidict .search-box{width:200px}}@media (max-width:600px){.uidict .pattern-grid{grid-template-columns:1fr}.uidict .header-inner{gap:.5rem}.uidict .search-box{width:160px}.uidict .counter{display:none}}html[data-uidict=on] .ep-header,html[data-uidict=on] .ep-footer,html[data-uidict=on] .ep-prog,html[data-uidict=on] .ep-grain,html[data-uidict=on] .ep-cursor,html[data-uidict=on] .ep-splash,html[data-uidict=on] .ep-ai-fixed{display:none!important}html[data-uidict=on]{scroll-behavior:auto}html[data-uidict=on],html[data-uidict=on] body{background:var(--bg,#f0f0f4)!important;cursor:auto!important}html[data-uidict=on] *{cursor:auto}html[data-uidict=on] .uidict a,html[data-uidict=on] .uidict button{cursor:pointer}
