*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px}body{color:#1a1a2e;background:#f8f9fc;justify-content:center;align-items:flex-start;min-height:100vh;padding:min(6vh,60px) 24px 24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;display:flex;position:relative;overflow-x:hidden}#root{justify-content:center;width:100%;display:flex}.bg-deco{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.bg-deco .blob{filter:blur(80px);opacity:.3;border-radius:50%;position:absolute}.bg-deco .blob-1{background:radial-gradient(circle,#a78bfa,#7c3aed);width:520px;height:520px;animation:20s ease-in-out infinite blobFloat;top:-120px;right:-80px}.bg-deco .blob-2{background:radial-gradient(circle,#60a5fa,#3b82f6);width:400px;height:400px;animation:25s ease-in-out infinite reverse blobFloat;bottom:-100px;left:-60px}.bg-deco .blob-3{background:radial-gradient(circle,#f472b6,#ec4899);width:300px;height:300px;animation:18s ease-in-out 5s infinite blobFloat;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes blobFloat{0%,to{transform:translate(0)scale(1)}33%{transform:translate(30px,-40px)scale(1.05)}66%{transform:translate(-20px,20px)scale(.95)}}.theme-teal .blob-1{background:radial-gradient(circle,#2dd4bf,#0d9488)}.theme-teal .blob-2{background:radial-gradient(circle,#22d3ee,#0891b2)}.theme-teal .header .icon{background:linear-gradient(135deg,#0d9488,#0f766e);box-shadow:0 8px 24px #0d948840}.theme-teal .mode-toggle .mode-slider{background:linear-gradient(135deg,#0d9488,#0f766e);box-shadow:0 4px 14px #0d94884d}.theme-teal .yaml-input-wrap textarea:focus{border-color:#0d9488;box-shadow:0 0 0 3px #0d94881f}.theme-teal .upload-zone:hover,.theme-teal .upload-zone.dragover{background:#0d94880f;border-color:#0d9488}.theme-teal .proxy-results-header .result-count span{color:#0d9488}.theme-teal .btn-success{background:linear-gradient(135deg,#0d9488,#0f766e);box-shadow:0 4px 14px #0d94884d}.theme-teal .btn-success:hover:not(:disabled){box-shadow:0 6px 24px #0d948866}.theme-teal .proto-badge.accent{color:#0d9488;background:#0d94881f}.glass-wrap{z-index:1;width:100%;max-width:720px;position:relative}.glass{-webkit-backdrop-filter:blur(24px);background:#ffffffb3;border:1px solid #ffffff59;border-radius:28px;padding:36px 32px;transition:box-shadow .3s;box-shadow:0 12px 48px #0000000f,0 4px 16px #00000008}.header{text-align:center;margin-bottom:24px}.header .icon{background:linear-gradient(135deg,#7c3aed,#3b82f6);border-radius:16px;justify-content:center;align-items:center;width:56px;height:56px;margin-bottom:12px;transition:background .35s,box-shadow .35s;display:inline-flex;box-shadow:0 8px 24px #7c3aed40}.header .icon svg{fill:none;stroke:#fff;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:28px;height:28px}.header h1{letter-spacing:-.02em;background:linear-gradient(135deg,#1a1a2e,#4a4a6a);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.5rem;font-weight:700}.header p{color:#6b7280;margin-top:4px;font-size:.88rem}.panel{display:none}.panel.active{animation:.3s ease-out panelFadeIn;display:block}@keyframes panelFadeIn{0%{opacity:0}to{opacity:1}}.privacy-notice{color:#6b7280;background:#3b82f60d;border:1px solid #3b82f61f;border-radius:12px;align-items:flex-start;gap:8px;margin-top:24px;padding:14px 16px;font-size:.75rem;line-height:1.6;display:flex}.privacy-notice svg{stroke:#60a5fa;flex-shrink:0;width:16px;height:16px;margin-top:2px}.privacy-notice strong{color:#4b5563}@media (width<=540px){body{padding:min(6vh,50px) 16px 16px}.glass{border-radius:22px;padding:24px 16px}.header h1{font-size:1.25rem}.bg-deco .blob-1{width:300px;height:300px;top:-80px;right:-60px}.bg-deco .blob-2{width:250px;height:250px;bottom:-60px;left:-40px}.bg-deco .blob-3{display:none}}.mode-toggle{-webkit-user-select:none;user-select:none;background:#e5e7eb80;border-radius:40px;margin-bottom:22px;padding:4px;display:flex;position:relative}.mode-toggle .mode-btn{color:#6b7280;cursor:pointer;z-index:2;text-align:center;background:0 0;border:none;border-radius:36px;flex:1;justify-content:center;align-items:center;gap:4px;padding:10px 16px;font-family:inherit;font-size:.88rem;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex;position:relative}.mode-toggle .mode-btn:hover{color:#4b5563}.mode-toggle .mode-btn.active{color:#fff}.mode-toggle .mode-slider{z-index:1;background:linear-gradient(135deg,#7c3aed,#6d28d9);border-radius:36px;transition:all .35s cubic-bezier(.4,0,.2,1);position:absolute;top:4px;bottom:4px;box-shadow:0 4px 14px #7c3aed4d}.mode-toggle .mode-slider.left{left:4px;right:50%}.mode-toggle .mode-slider.right{left:50%;right:4px}.proto-selector{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.proto-btn{color:#6b7280;cursor:pointer;text-align:center;-webkit-user-select:none;user-select:none;background:#ffffff80;border:1.5px solid #e5e7eb;border-radius:40px;flex:1;min-width:68px;padding:8px 12px;font-family:inherit;font-size:.8rem;font-weight:600;transition:all .2s}.proto-btn:hover{color:#7c3aed;border-color:#c4b5fd}.proto-btn.active{color:#fff;background:linear-gradient(135deg,#7c3aed,#6d28d9);border-color:#0000;box-shadow:0 4px 12px #7c3aed4d}.proto-btn.disabled{pointer-events:none;opacity:.45}.form-group{margin-bottom:16px}.form-group .label-row{justify-content:space-between;align-items:center;min-height:20px;margin-bottom:6px;display:flex}.form-group .label-row label{color:#374151;font-size:.85rem;font-weight:600}.input-wrap{background:#fffc;border:1.5px solid #e5e7eb;border-radius:14px;align-items:center;padding:0 16px;transition:border-color .25s,box-shadow .25s;display:flex}.input-wrap:focus-within{border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed1f}.input-wrap svg{stroke:#9ca3af;stroke-width:1.8px;flex-shrink:0;width:20px;height:20px}.input-wrap input{color:#1a1a2e;background:0 0;border:none;outline:none;flex:1;min-width:0;padding:14px 12px;font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:.92rem}.input-wrap input::placeholder{color:#aaa}.input-wrap input:disabled{color:#6b7280;-webkit-text-fill-color:#6b7280;background:0 0}.input-wrap.locked{background:#f3f4f680;border-color:#d1d5db}.yaml-input-wrap textarea{resize:vertical;color:#1f2937;tab-size:2;background:#fffc;border:1.5px solid #e5e7eb;border-radius:14px;outline:none;width:100%;min-height:180px;padding:16px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.82rem;line-height:1.6;transition:border-color .25s,box-shadow .25s}.yaml-input-wrap textarea:focus{border-color:#7c3aed;box-shadow:0 0 0 3px #7c3aed1f}.yaml-input-wrap textarea::placeholder{color:#aaa}.yaml-input-wrap textarea.input-error{border-color:#ef4444;box-shadow:0 0 0 3px #ef44441f}.validate-hint{color:#9ca3af;font-size:.75rem}.validate-hint.ok{color:#10b981}.validate-hint.error{color:#ef4444}.upload-zone{text-align:center;cursor:pointer;background:#fff6;border:2px dashed #d1d5db;border-radius:16px;margin-top:12px;padding:24px 20px;transition:all .25s}.upload-zone:hover,.upload-zone.dragover{background:#7c3aed0f;border-color:#7c3aed}.upload-zone svg{stroke:#9ca3af;stroke-width:1.5px;width:32px;height:32px;margin-bottom:8px}.upload-zone .upload-text{color:#6b7280;font-size:.88rem}.upload-zone .upload-text strong{color:#7c3aed}.upload-zone .upload-hint{color:#9ca3af;margin-top:4px;font-size:.75rem}.upload-zone .file-name{color:#7c3aed;background:#7c3aed14;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:8px 14px;font-size:.85rem;font-weight:500;display:none}.upload-zone.has-file .file-name{display:inline-flex}.upload-zone.has-file .upload-icon-big,.upload-zone.has-file .upload-text,.upload-zone.has-file .upload-hint,.upload-zone input[type=file]{display:none}.btn-row{gap:12px;margin-top:16px;display:flex}.btn-row .btn{cursor:pointer;white-space:nowrap;border:none;border-radius:14px;flex:1;justify-content:center;align-items:center;gap:8px;min-width:0;padding:14px 20px;font-family:inherit;font-size:.92rem;font-weight:600;transition:transform .15s,box-shadow .25s,opacity .2s;display:inline-flex}.btn-row .btn:active{transform:scale(.97)}.btn-row .btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{color:#fff;background:linear-gradient(135deg,#7c3aed,#6d28d9);box-shadow:0 4px 14px #7c3aed4d}.btn-primary:hover:not(:disabled){box-shadow:0 6px 24px #7c3aed66}.btn-secondary{color:#fff;background:linear-gradient(135deg,#0d9488,#0f766e);box-shadow:0 4px 14px #0d94884d}.btn-secondary:hover:not(:disabled){box-shadow:0 6px 24px #0d948866}.btn-edit{color:#fff;background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 4px 14px #f59e0b4d}.btn-edit:hover:not(:disabled){box-shadow:0 6px 24px #f59e0b66}.btn-success{color:#fff;background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 14px #10b9814d}.btn-success:hover:not(:disabled){box-shadow:0 6px 24px #10b98166}.btn-outline{color:#374151;background:#fff9;border:1.5px solid #e5e7eb}.btn-outline:hover:not(:disabled){background:#ffffffe6;border-color:#d1d5db}.btn-sm{border-radius:10px;padding:8px 14px;font-size:.8rem}.spinner{border:2.5px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.6s linear infinite spin;display:inline-block}.spinner.dark{border-color:#7c3aed #7c3aed33 #7c3aed33}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=540px){.btn-row{flex-direction:column}.proto-selector{gap:6px}.proto-btn{min-width:0;padding:8px 4px;font-size:.72rem}}.output-area{margin-top:24px;display:none}.output-area.visible{animation:.35s ease-out fadeSlideUp;display:block}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.sub-section{background:linear-gradient(135deg,#7c3aed0f,#6d28d90a);border:1px solid #7c3aed2e;border-radius:16px;margin-bottom:20px;padding:18px 20px}.theme-teal .sub-section{background:linear-gradient(135deg,#0d948812,#0f766e0a);border-color:#0d948833}.sub-section .sub-label{color:#6d28d9;align-items:center;gap:6px;margin-bottom:8px;font-size:.85rem;font-weight:600;display:flex}.theme-teal .sub-section .sub-label{color:#0f766e}.sub-section .sub-label svg{width:18px;height:18px}.sub-hint{color:#6b7280;margin-bottom:10px;font-size:.78rem;line-height:1.5}.sub-hint.error{color:#b45309;background:#f59e0b14;border-radius:8px;margin-bottom:10px;padding:8px 10px}.sub-hint code{background:#0000000f;border-radius:5px;padding:1px 5px;font-family:SF Mono,Fira Code,monospace;font-size:.74rem}.link-btn{color:#7c3aed;font:inherit;cursor:pointer;background:0 0;border:none;padding:0 2px;font-weight:600;text-decoration:underline}.sub-url-box{background:#ffffffb3;border:1px solid #e5e7eb;border-radius:12px;align-items:center;gap:10px;padding:0 14px;display:flex}.sub-url-box input{color:#1f2937;-webkit-user-select:all;user-select:all;background:0 0;border:none;outline:none;flex:1;min-width:0;padding:12px 4px;font-family:SF Mono,Fira Code,monospace;font-size:.85rem}.sub-url-box .btn-copy-sub{color:#fff;cursor:pointer;background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:10px;flex-shrink:0;align-items:center;gap:5px;padding:8px 16px;font-family:inherit;font-size:.8rem;font-weight:600;transition:background .2s,box-shadow .2s,opacity .2s;display:flex;box-shadow:0 4px 12px #7c3aed40}.theme-teal .sub-url-box .btn-copy-sub{background:linear-gradient(135deg,#0d9488,#0f766e);box-shadow:0 4px 12px #0d948840}.sub-url-box .btn-copy-sub:hover:not(:disabled){box-shadow:0 6px 20px #7c3aed59}.sub-url-box .btn-copy-sub:disabled{opacity:.55;cursor:not-allowed}.yaml-section summary{cursor:pointer;color:#374151;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 0;font-size:.85rem;font-weight:600;list-style:none;display:flex}.yaml-section summary::-webkit-details-marker{display:none}.yaml-section summary .chevron{transition:transform .25s}.yaml-section details[open] summary .chevron{transform:rotate(180deg)}.yaml-preview{color:#1f2937;white-space:pre;tab-size:2;-webkit-user-select:all;user-select:all;background:#f9fafbd9;border:1px solid #e5e7eb;border-radius:14px;max-height:320px;margin-top:8px;padding:18px 20px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.78rem;line-height:1.55;overflow:auto}.yaml-preview::-webkit-scrollbar{width:6px;height:6px}.yaml-preview::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}.output-actions{gap:12px;margin-top:16px;display:flex}.output-actions .btn-action{cursor:pointer;white-space:nowrap;border:none;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:12px 20px;font-family:inherit;font-size:.85rem;font-weight:600;transition:all .25s;display:inline-flex}.output-actions .btn-action:active{transform:scale(.97)}.output-actions .btn-primary-act{color:#fff;background:linear-gradient(135deg,#7c3aed,#6d28d9);box-shadow:0 4px 14px #7c3aed40}.output-actions .btn-primary-act:hover{transform:translateY(-1px);box-shadow:0 6px 24px #7c3aed59}.output-actions .btn-soft-act{color:#4b5563;background:#ffffff8c;border:1.5px solid #e5e7ebb3}.output-actions .btn-soft-act:hover{color:#7c3aed;background:#ffffffd9;border-color:#c4b5fd}.proxy-results-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.proxy-results-header .result-count{color:#374151;font-size:.85rem;font-weight:600}.proxy-results-header .result-count span{color:#7c3aed}.proxy-grid{flex-direction:column;gap:12px;display:flex}.proxy-card{background:#ffffffbf;border:1px solid #e5e7eb;border-radius:16px;padding:16px 18px;transition:all .25s;animation:.3s ease-out backwards cardSlide}.proxy-card:hover{border-color:#d1d5db;box-shadow:0 4px 16px #0000000a}.proxy-card.error{border-left:3px solid #ef4444}.proxy-card.success{border-left:3px solid #10b981}.proxy-card .card-top{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.proxy-card .card-left{align-items:center;gap:10px;min-width:0;display:flex}.proxy-card .proto-badge{text-transform:uppercase;letter-spacing:.03em;border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:3px 10px;font-size:.72rem;font-weight:700;display:inline-flex}.proto-badge.vless{color:#7c3aed;background:#7c3aed1f}.proto-badge.vmess{color:#2563eb;background:#3b82f61f}.proto-badge.ss{color:#059669;background:#10b9811f}.proto-badge.ssr{color:#d97706;background:#f59e0b1f}.proto-badge.trojan{color:#dc2626;background:#ef44441f}.proto-badge.unknown{color:#6b7280;background:#9ca3af26}.proxy-card .card-name{color:#1f2937;text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600;overflow:hidden}.proxy-card .card-body{align-items:center;gap:10px;display:flex}.proxy-card .card-url{color:#6b7280;text-overflow:ellipsis;white-space:nowrap;-webkit-user-select:all;user-select:all;background:#f3f4f680;border-radius:8px;flex:1;min-width:0;padding:6px 10px;font-family:SF Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.78rem;overflow:hidden}.proxy-card .card-url:hover{white-space:normal;word-break:break-all;overflow:visible}.proxy-card .card-url.error-text{color:#ef4444}.proxy-card .card-actions{flex-shrink:0;gap:6px;display:flex}.proxy-card .card-actions .btn{color:#fff;cursor:pointer;border:none;border-radius:8px;align-items:center;gap:4px;padding:7px 12px;font-family:inherit;font-size:.75rem;font-weight:600;display:inline-flex}@keyframes cardSlide{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.copy-all-bar{border-top:1px solid #f3f4f6;align-items:center;gap:12px;margin-top:12px;padding:12px 4px 0;display:flex}.empty-state{text-align:center;color:#9ca3af;padding:40px 20px}.empty-state svg{stroke:#d1d5db;width:48px;height:48px;margin-bottom:12px}.empty-state p{font-size:.9rem}@media (width<=540px){.output-actions{flex-direction:column}.sub-url-box{flex-direction:column;padding:12px 14px}.sub-url-box input{width:100%;padding:8px 4px}.sub-url-box .btn-copy-sub{justify-content:center;width:100%}.proxy-card .card-body{flex-direction:column;align-items:stretch}.proxy-card .card-actions{justify-content:flex-end}.proxy-results-header{flex-direction:column;align-items:flex-start;gap:8px}}.toast{z-index:1000;opacity:0;pointer-events:none;width:calc(100% - 48px);max-width:520px;transition:transform .4s cubic-bezier(.34,1.56,.64,1),opacity .3s;position:fixed;top:24px;left:50%;transform:translate(-50%)translateY(-120px)}.toast.show{opacity:1;pointer-events:auto;transform:translate(-50%)translateY(0)}.toast.fading{opacity:0;pointer-events:none;transition:transform 3s,opacity 3s;transform:translate(-50%)translateY(-30px)}.toast-inner{-webkit-backdrop-filter:blur(16px);cursor:default;background:#ffffffe0;border:1px solid #fff6;border-radius:16px;align-items:center;gap:12px;padding:14px 20px;display:flex;box-shadow:0 8px 32px #0000001a,0 2px 8px #0000000a}.toast-inner .ti{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.toast-inner .ti svg{stroke:#fff;stroke-width:2.8px;stroke-linecap:round;stroke-linejoin:round;fill:none;width:15px;height:15px}.toast-inner .ti.success{background:linear-gradient(135deg,#10b981,#059669)}.toast-inner .ti.error{background:linear-gradient(135deg,#ef4444,#dc2626)}.toast-inner .ti.info{background:linear-gradient(135deg,#3b82f6,#2563eb)}.toast-inner .tt{color:#1f2937;flex-shrink:0;font-size:.88rem;font-weight:600}.toast-inner .tm{color:#6b7280;flex:1;min-width:0;font-size:.85rem;line-height:1.4}.toast-inner .tm strong{color:#374151}.toast-inner .tm code{background:#0000000d;border-radius:5px;padding:1px 5px;font-family:SF Mono,Fira Code,monospace;font-size:.8rem}.toast-inner .dismiss{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;transition:background .2s,color .2s;display:flex}.toast-inner .dismiss:hover{color:#6b7280;background:#0000000f}.toast-inner .dismiss svg{stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;fill:none;width:14px;height:14px}@media (width<=540px){.toast-inner{flex-wrap:wrap}.toast-inner .tm{order:10;width:100%;margin-top:2px}}
