*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:#0a0e17;color:#d0d7e3;min-height:100vh;position:relative}.code-bg{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:hidden}.code-bg-text{font-family:Cascadia Code,Fira Code,monospace;font-size:14px;fill:rgba(34,197,94,.08);-webkit-user-select:none;-moz-user-select:none;user-select:none;letter-spacing:2px}.app{max-width:780px;margin:0 auto;padding:24px 16px 60px;position:relative;z-index:1}.app:has(.home-layout){max-width:1100px}header{text-align:center;margin-bottom:28px}header h1{font-size:2.2rem;color:#e2e8f0;margin-bottom:4px}header h1 a{color:inherit;text-decoration:none}.subtitle{color:#6b7a90;font-size:.95rem}.tabs{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:24px}.tab{padding:7px 14px;border:1px solid #1e2a3a;background:#111927;color:#7a8da6;border-radius:8px;cursor:pointer;font-size:.82rem;transition:all .2s;font-weight:500;text-decoration:none}.tab:hover{border-color:#3a7bd5;color:#c0d0e8}.tab.active{background:linear-gradient(135deg,#3a7bd5,#00d2ff);border-color:transparent;color:#fff;font-weight:600}.panel{background:#111927;border-radius:14px;padding:28px;border:1px solid #1e2a3a;margin-bottom:16px;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.panel h2{font-size:1.1rem;color:#8aa3c0;margin-bottom:18px;font-weight:600}.controls{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:18px;align-items:flex-end}.row-controls{flex-direction:column;align-items:stretch}.controls label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;color:#7a8da6;flex:1 1;min-width:130px}.controls label.full-width{flex-basis:100%;min-width:100%}.controls input[type=number],.controls input[type=text],.controls select,.controls textarea{padding:9px 12px;background:#0a0e17;border:1px solid #253245;border-radius:8px;color:#d0d7e3;font-size:.95rem;font-family:inherit;width:100%}.controls textarea{resize:vertical;font-family:Cascadia Code,Fira Code,monospace;font-size:.85rem}.controls input:focus,.controls select:focus,.controls textarea:focus{outline:none;border-color:#3a7bd5;box-shadow:0 0 0 2px rgba(58,123,213,.15)}.btn-primary{display:block;width:100%;padding:12px;border:none;border-radius:10px;background:linear-gradient(135deg,#3a7bd5,#00d2ff);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;margin-bottom:18px}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(58,123,213,.35)}.btn-primary.half{flex:1 1}.btn-row{display:flex;gap:8px;margin-bottom:18px}.btn-copy{padding:5px 14px;border:1px solid #253245;background:transparent;color:#7a8da6;border-radius:6px;cursor:pointer;font-size:.75rem;transition:all .2s}.btn-copy:hover{border-color:#00d2ff;color:#00d2ff}.btn-copy.copied{border-color:#1dd1a1;color:#1dd1a1}.output-area{display:flex;flex-direction:column;gap:8px}.output-item{display:flex;align-items:center;gap:8px;background:#0a0e17;border:1px solid #1e2a3a;border-radius:8px;padding:10px 14px;animation:fadeIn .25s ease}.output-item .value{flex:1 1;font-family:Cascadia Code,Fira Code,monospace;font-size:.85rem;word-break:break-all;color:#00d2ff;-webkit-user-select:all;-moz-user-select:all;user-select:all}.output-item .label{font-size:.72rem;color:#4a5e78;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.code-block{background:#0a0e17;border:1px solid #1e2a3a;border-radius:10px;padding:16px;font-family:Cascadia Code,Fira Code,monospace;font-size:.82rem;white-space:pre-wrap;word-break:break-all;color:#b8cce4;position:relative;line-height:1.5;max-height:400px;overflow-y:auto}.code-block .copy-code{position:absolute;top:8px;right:8px}.snippet-section{background:#111927;border-radius:14px;padding:24px;border:1px solid #1e2a3a;margin-top:16px}.snippet-section h3{font-size:1rem;color:#8aa3c0;margin-bottom:14px}.snippet-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.snippet-tab{padding:5px 12px;border:1px solid #1e2a3a;background:transparent;color:#7a8da6;border-radius:6px;cursor:pointer;font-size:.78rem;transition:all .2s}.snippet-tab:hover{border-color:#3a7bd5;color:#c0d0e8}.snippet-tab.active{background:#1e2a3a;color:#00d2ff;border-color:#3a7bd5}.kw{color:#c678dd}.str{color:#98c379}.cm{color:#5c6370;font-style:italic}.fn{color:#61afef}.num{color:#d19a66}.strength-meter{display:flex;align-items:center;gap:10px;margin-bottom:16px;padding:10px 14px;background:#0a0e17;border:1px solid #1e2a3a;border-radius:8px}.strength-label{font-size:.82rem;color:#7a8da6;white-space:nowrap}.strength-bar{flex:1 1;height:6px;background:#1e2a3a;border-radius:3px;overflow:hidden}.strength-fill{height:100%;border-radius:3px;transition:width .3s,background .3s;width:75%;background:linear-gradient(90deg,#1dd1a1,#10ac84)}.strength-fill.weak{width:25%;background:linear-gradient(90deg,#ee5a24,#e74c3c)}.strength-fill.fair{width:50%;background:linear-gradient(90deg,#feca57,#f9ca24)}.strength-fill.strong{width:75%;background:linear-gradient(90deg,#1dd1a1,#10ac84)}.strength-fill.very-strong{width:100%;background:linear-gradient(90deg,#00d2ff,#3a7bd5)}.strength-text{font-size:.82rem;font-weight:600;white-space:nowrap;min-width:80px}.strength-text.weak{color:#e74c3c}.strength-text.fair{color:#f9ca24}.strength-text.strong{color:#1dd1a1}.strength-text.very-strong{color:#00d2ff}.apikey-list{display:flex;flex-direction:column;gap:0;border:1px solid #1e2a3a;border-radius:8px;overflow:hidden;max-height:400px;overflow-y:auto}.apikey-list-item{display:flex;align-items:center;gap:10px;padding:8px 14px;font-family:Cascadia Code,Fira Code,monospace;font-size:.82rem;color:#00d2ff;word-break:break-all;border-bottom:1px solid #1e2a3a;transition:background .15s}.apikey-list-item:last-child{border-bottom:none}.apikey-list-item:nth-child(odd){background:#0a0e17}.apikey-list-item:nth-child(2n){background:#0d1320}.apikey-list-item:hover{background:#131d2e}.apikey-list-item .apikey-num{color:#3a5068;font-size:.7rem;min-width:24px;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none}.apikey-list-item .apikey-val{flex:1 1;-webkit-user-select:all;-moz-user-select:all;user-select:all}.apikey-inline{padding:14px;background:#0a0e17;border:1px solid #1e2a3a;border-radius:8px;font-family:Cascadia Code,Fira Code,monospace;font-size:.82rem;color:#00d2ff;word-break:break-all;line-height:1.8;max-height:400px;overflow-y:auto}.apikey-output-wrapper{display:flex;flex-direction:column;gap:10px;animation:fadeIn .25s ease}.apikey-actions,.regex-grid{display:flex;gap:8px}.regex-grid{flex-direction:column}.regex-card{background:#0a0e17;border:1px solid #1e2a3a;border-radius:10px;padding:14px 16px;animation:fadeIn .25s ease;transition:border-color .2s}.regex-card:hover{border-color:#3a7bd5}.regex-card-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.regex-card-name{font-size:.9rem;font-weight:600;color:#c0d0e8;flex:1 1}.regex-card-badge{font-size:.68rem;padding:2px 8px;border-radius:10px;background:#1e2a3a;color:#7a8da6;white-space:nowrap}.regex-card-pattern{font-family:Cascadia Code,Fira Code,monospace;font-size:.82rem;color:#00d2ff;background:#0d1320;padding:8px 12px;border-radius:6px;word-break:break-all;margin-bottom:8px;display:flex;align-items:center;gap:8px}.regex-card-pattern code{flex:1 1;-webkit-user-select:all;-moz-user-select:all;user-select:all}.regex-card-desc{font-size:.78rem;color:#5a6e86;margin-bottom:6px}.regex-card-examples{font-size:.75rem;color:#4a5e78}.regex-card-examples span{color:#1dd1a1;font-family:Cascadia Code,Fira Code,monospace}.regex-test-result{margin-top:6px;font-size:.78rem;font-weight:600;padding:4px 10px;border-radius:6px;display:inline-block}.regex-test-result.match{background:rgba(29,209,161,.12);color:#1dd1a1}.regex-test-result.no-match{background:rgba(231,76,60,.12);color:#e74c3c}.faker-text-block{background:#0a0e17;border:1px solid #1e2a3a;border-radius:10px;padding:18px;color:#b8cce4;font-size:.9rem;line-height:1.7;max-height:450px;overflow-y:auto;position:relative;white-space:pre-wrap}.faker-text-block p{margin-bottom:12px}.faker-text-block p:last-child{margin-bottom:0}.faker-list{display:flex;flex-direction:column;gap:0;border:1px solid #1e2a3a;border-radius:8px;overflow:hidden;max-height:450px;overflow-y:auto}.faker-list-item{display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:.88rem;color:#c0d0e8;border-bottom:1px solid #1e2a3a;transition:background .15s}.faker-list-item:last-child{border-bottom:none}.faker-list-item:nth-child(odd){background:#0a0e17}.faker-list-item:nth-child(2n){background:#0d1320}.faker-list-item:hover{background:#131d2e}.faker-list-item .faker-num{color:#3a5068;font-size:.7rem;min-width:22px;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none}.faker-list-item .faker-val{flex:1 1;-webkit-user-select:all;-moz-user-select:all;user-select:all}.faker-list-item .faker-secondary{color:#5a6e86;font-size:.78rem}.faker-output-wrapper{display:flex;flex-direction:column;gap:10px;animation:fadeIn .25s ease}.faker-actions{display:flex;gap:8px}.palette-desc{font-size:.82rem;color:#5a6e86;margin-bottom:16px}.palette-help{background:#0a0e17;border:1px solid #1e2a3a;border-radius:8px;padding:12px 16px;margin-bottom:16px;font-size:.78rem;color:#7a8da6;line-height:1.8;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}.palette-help strong{color:#c0d0e8;width:100%;margin-bottom:2px;font-size:.8rem}.palette-help b{color:#00d2ff}.palette-help-badge{font-size:.65rem;font-weight:700;padding:1px 5px;border-radius:4px;letter-spacing:.3px;vertical-align:middle}.palette-help-badge.pass{background:rgba(29,209,161,.12);color:#1dd1a1;border:1px solid rgba(29,209,161,.25)}.palette-help-badge.fail{background:rgba(231,76,60,.12);color:#e74c3c;border:1px solid rgba(231,76,60,.25)}.palette-color-row{display:flex;align-items:center;gap:10px}.palette-color-row input[type=color]{width:42px;height:42px;border:2px solid #253245;border-radius:8px;cursor:pointer;background:none;padding:2px}.palette-color-row input[type=color]::-moz-color-swatch{border:none;border-radius:5px}.palette-color-row input[type=color]::-webkit-color-swatch-wrapper{padding:2px}.palette-color-row input[type=color]::-webkit-color-swatch{border:none;border-radius:5px}.palette-color-row input[type=text]{width:110px;font-family:Cascadia Code,Fira Code,monospace}.palette-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));grid-gap:10px;gap:10px}.palette-swatch{background:#111927;border:1px solid #1e2a3a;border-radius:10px;overflow:hidden;transition:transform .15s,box-shadow .15s;cursor:pointer}.palette-swatch:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.35)}.palette-swatch-color{height:70px;position:relative}.palette-swatch-copy{position:absolute;top:6px;right:6px;background:rgba(0,0,0,.55);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:none;color:#fff;width:28px;height:28px;border-radius:6px;cursor:pointer;opacity:0;transition:opacity .15s;display:flex;align-items:center;justify-content:center;font-size:.78rem}.palette-swatch:hover .palette-swatch-copy{opacity:1}.palette-swatch-copy:hover{background:rgba(0,0,0,.75)}.palette-swatch-info{padding:8px 10px}.palette-swatch-step{font-weight:700;font-size:.82rem;color:#c0d0e8}.palette-swatch-hex{font-family:Cascadia Code,Fira Code,monospace;font-size:.75rem;color:#5a6e86;margin-top:2px}.palette-swatch-contrast{margin-top:6px;display:flex;gap:4px;flex-wrap:wrap}.palette-contrast-badge{font-size:.62rem;font-weight:700;padding:2px 5px;border-radius:4px;letter-spacing:.3px}.palette-contrast-badge.pass{background:rgba(29,209,161,.12);color:#1dd1a1;border:1px solid rgba(29,209,161,.25)}.palette-contrast-badge.fail{background:rgba(231,76,60,.12);color:#e74c3c;border:1px solid rgba(231,76,60,.25)}.palette-export-row{display:flex;gap:8px;margin-top:14px}.palette-toast{position:fixed;bottom:2rem;left:50%;transform:translateX(-50%) translateY(100px);background:#111927;border:1px solid #1e2a3a;color:#d0d7e3;padding:8px 18px;border-radius:8px;font-size:.85rem;font-weight:500;opacity:0;transition:all .3s ease;pointer-events:none;z-index:100}.palette-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:#0a0e17;border-radius:3px}::-webkit-scrollbar-thumb{background:#253245;border-radius:3px}.blog-feed{margin-top:8px}.blog-feed-title{font-size:1rem;color:#8aa3c0;font-weight:600;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid #1e2a3a}.blog-empty{color:#5a6e86;font-size:.9rem;text-align:center;padding:40px 0}.blog-posts{display:flex;flex-direction:column;gap:12px}.blog-card{display:flex;gap:16px;background:#111927;border:1px solid #1e2a3a;border-radius:12px;padding:16px;text-decoration:none;transition:border-color .2s,transform .15s,box-shadow .2s;animation:fadeIn .25s ease}.blog-card-thumb{flex-shrink:0;width:160px;height:105px;border-radius:8px;overflow:hidden;background:#0a0e17}.blog-card-body{flex:1 1;min-width:0}.blog-card:hover{border-color:#3a7bd5;transform:translateY(-2px);box-shadow:0 4px 16px rgba(58,123,213,.12)}.blog-card-meta{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.blog-card-date{font-size:.75rem;color:#4a5e78}.blog-card-tags{display:flex;gap:6px;flex-wrap:wrap}.blog-tag{font-size:.68rem;padding:2px 8px;border-radius:10px;background:#1e2a3a;color:#7a8da6;white-space:nowrap}.blog-card-title{font-size:1.05rem;font-weight:600;color:#d0d7e3;margin-bottom:6px;line-height:1.4}.blog-card-desc{font-size:.85rem;color:#6b7a90;line-height:1.6;margin-bottom:10px}.blog-card-read{font-size:.8rem;color:#3a7bd5;font-weight:500}.blog-card:hover .blog-card-read{color:#00d2ff}.blog-post{background:#111927;border:1px solid #1e2a3a;border-radius:14px;padding:28px;animation:fadeIn .25s ease}.blog-back{display:inline-block;font-size:.82rem;color:#3a7bd5;text-decoration:none;margin-bottom:16px;transition:color .2s}.blog-back:hover{color:#00d2ff}.blog-post-meta{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.blog-post-title{font-size:1.5rem;font-weight:700;color:#d0d7e3;margin-bottom:24px;line-height:1.3}.blog-post-image{margin-bottom:24px;border-radius:10px;overflow:hidden}.blog-post-image img{width:100%;height:auto;display:block}.share-buttons{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap}.share-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid #1e2a3a;background:#0a0e17;color:#7a8da6;border-radius:8px;cursor:pointer;font-size:.78rem;font-weight:500;font-family:inherit;text-decoration:none;transition:all .2s}.share-btn:hover{border-color:#3a7bd5;color:#00d2ff}.blog-content{line-height:1.8;color:#b8cce4;font-size:.92rem}.blog-content h2{font-size:1.2rem;font-weight:600;color:#d0d7e3;margin-top:32px;margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid #1e2a3a}.blog-content h3{font-size:1.05rem;font-weight:600;color:#c0d0e8;margin-top:24px;margin-bottom:8px}.blog-content h4{font-size:.95rem;font-weight:600;color:#8aa3c0;margin-top:20px;margin-bottom:6px}.blog-content p{margin-bottom:16px}.blog-content a{color:#00d2ff;text-decoration:none}.blog-content a:hover{text-decoration:underline}.blog-content strong{color:#d0d7e3;font-weight:600}.blog-content ol,.blog-content ul{margin-bottom:16px;padding-left:24px}.blog-content li{margin-bottom:6px}.blog-content code{font-family:Cascadia Code,Fira Code,monospace;font-size:.85em;background:#0a0e17;border:1px solid #1e2a3a;padding:2px 6px;border-radius:4px;color:#00d2ff}.blog-content pre{background:#0a0e17;border:1px solid #1e2a3a;border-radius:10px;padding:16px;margin-bottom:16px;overflow-x:auto;line-height:1.5}.blog-content pre code{background:none;border:none;padding:0;font-size:.82rem;color:#b8cce4}.blog-content blockquote{border-left:3px solid #3a7bd5;padding-left:16px;margin:16px 0;color:#7a8da6;font-style:italic}.blog-content table{width:100%;border-collapse:collapse;margin-bottom:16px;font-size:.88rem}.blog-content th{text-align:left;background:#0a0e17;color:#d0d7e3;font-weight:600}.blog-content td,.blog-content th{padding:10px 14px;border:1px solid #1e2a3a}.blog-content td{color:#b8cce4}.blog-content tr:nth-child(2n){background:#0d1320}.blog-content hr{border:none;border-top:1px solid #1e2a3a;margin:24px 0}.info-section{background:#111927;border-radius:14px;padding:28px;border:1px solid #1e2a3a;margin-top:16px;animation:fadeIn .25s ease}.info-section h3{font-size:1.05rem;color:#8aa3c0;margin-bottom:16px;font-weight:600}.info-section p{font-size:.88rem;color:#9aacbf;line-height:1.75;margin-bottom:14px}.info-section p:last-child{margin-bottom:0}.info-section strong{color:#c0d0e8;font-weight:600}.info-section .info-highlight{color:#00d2ff;font-weight:500}.info-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-top:16px}.info-card{background:#0a0e17;border:1px solid #1e2a3a;border-radius:10px;padding:16px}.info-card h4{font-size:.85rem;color:#00d2ff;margin-bottom:8px;font-weight:600}.info-card p{font-size:.82rem;color:#7a8da6;line-height:1.6;margin-bottom:0}.home-layout{display:flex;gap:24px;align-items:flex-start}.home-layout .blog-feed{flex:1 1;min-width:0}.tech-facts-aside{flex-shrink:0;width:310px;position:-webkit-sticky;position:sticky;top:24px;margin-top:55px}.tech-facts-panel{background:#111927;border:1px solid #1e2a3a;border-radius:12px;padding:20px}.tech-facts-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #1e2a3a}.tech-facts-header h3{font-size:1.1rem;color:#8aa3c0;font-weight:600;margin:0}.tech-facts-refresh{background:none;border:1px solid #253245;color:#5a6e86;width:28px;height:28px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:.8rem;transition:all .2s}.tech-facts-refresh:hover{border-color:#3a7bd5;color:#00d2ff}.tech-facts-list{display:flex;flex-direction:column;gap:14px}.tech-fact-item{font-size:1.014rem;color:#9aacbf;line-height:1.55;padding-bottom:14px;border-bottom:1px solid #141e2e}.tech-fact-item:last-child{border-bottom:none;padding-bottom:0}.tech-fact-bullet{color:#3a7bd5;margin-right:6px;font-weight:700}.newsletter-panel{background:#111927;border:1px solid #1e2a3a;border-radius:12px;padding:16px;margin-top:16px}.newsletter-title{font-size:.85rem;color:#8aa3c0;font-weight:600;margin:0 0 8px}.newsletter-desc{font-size:.75rem;color:#5a6e86;line-height:1.5;margin:0 0 12px}.newsletter-form{display:flex;flex-direction:column;gap:8px}.newsletter-input{width:100%;padding:8px 10px;border-radius:8px;border:1px solid #1e2a3a;background:#0a0e17;color:#d0d7e3;font-size:.8rem;font-family:inherit;outline:none;transition:border-color .2s;box-sizing:border-box}.newsletter-input:focus{border-color:#3a7bd5}.newsletter-input:disabled{opacity:.6}.newsletter-btn{width:100%;padding:8px 14px;background:linear-gradient(135deg,#3a7bd5,#00d2ff);border:none;border-radius:8px;color:#fff;font-size:.8rem;font-weight:600;cursor:pointer;font-family:inherit;transition:opacity .2s}.newsletter-btn:hover{opacity:.9}.newsletter-btn:disabled{opacity:.6;cursor:not-allowed}.newsletter-error{font-size:.72rem;color:#e74c3c;margin:6px 0 0}.newsletter-privacy{font-size:.68rem;color:#3a5068;margin:8px 0 0;text-align:center}.newsletter-success{display:flex;align-items:center;gap:8px;font-size:.78rem;color:#1dd1a1}.newsletter-check{font-weight:700;font-size:1rem}.site-footer{margin-top:40px;padding-top:28px;border-top:1px solid #1e2a3a}.footer-about{background:#111927;border:1px solid #1e2a3a;border-radius:14px;padding:28px;margin-bottom:20px}.footer-about h3{font-size:1.05rem;color:#8aa3c0;margin-bottom:14px;font-weight:600}.footer-about p{font-size:.88rem;color:#7a8da6;line-height:1.75;margin-bottom:12px}.footer-about p:last-child{margin-bottom:0}.footer-about strong{color:#c0d0e8;font-weight:600}.footer-bottom{text-align:center;padding:16px 0;font-size:.78rem;color:#3a5068}@media (max-width:900px){.home-layout{flex-direction:column}.tech-facts-aside{width:100%;position:static}}@media (max-width:600px){.blog-card{flex-direction:column}.blog-card-thumb{width:100%;height:140px}}@media (max-width:500px){.info-grid{grid-template-columns:1fr}.app{padding:14px 10px 40px}header h1{font-size:1.6rem}.tab{padding:5px 9px;font-size:.74rem}.footer-about,.info-section,.panel{padding:18px 14px}.blog-card{padding:12px}.blog-post{padding:18px 14px}.blog-post-title{font-size:1.25rem}}