:root{--font-sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font-mono:'JetBrains Mono','Fira Code',monospace;--radius:12px;--transition:0.25s cubic-bezier(0.4,0,0.2,1)}
[data-theme="dark"]{--bg:#0A0A1A;--bg2:#111128;--bg-card:rgba(17,17,40,0.85);--bg-input:rgba(30,30,60,0.6);--border:rgba(83,82,237,0.15);--text:#E8E8F0;--text2:#8888AA;--text3:#555570;--primary:#5352ED;--secondary:#7C7CFF;--accent:#2ED573;--accent-red:#FF4757;--gradient:linear-gradient(135deg,#5352ED,#2ED573);--glass:rgba(10,10,26,0.6);--glyph-bg:rgba(20,20,44,0.9);--glyph-hover:rgba(83,82,237,0.15)}
[data-theme="light"]{--bg:#F4F4FB;--bg2:#FFFFFF;--bg-card:rgba(255,255,255,0.95);--bg-input:rgba(232,232,240,0.7);--border:rgba(83,82,237,0.12);--text:#1A1A2E;--text2:#6B6B8D;--text3:#9999BB;--primary:#4342CC;--secondary:#5B5BDD;--accent:#22B25B;--accent-red:#E8364F;--gradient:linear-gradient(135deg,#4342CC,#22B25B);--glass:rgba(244,244,251,0.6);--glyph-bg:rgba(248,248,255,0.9);--glyph-hover:rgba(83,82,237,0.08)}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
body{font-family:var(--font-sans);background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}
.app{display:flex;flex-direction:column;min-height:100vh}
.header{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:var(--glass);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}
.header-left{display:flex;align-items:center;gap:12px}
.header-right{display:flex;align-items:center;gap:8px}
.logo{display:flex;align-items:center;gap:10px}
.logo h1{font-size:1.05rem;font-weight:700;background:var(--gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.badge{font-size:.72rem;font-weight:500;padding:3px 10px;border-radius:20px;background:var(--bg-input);color:var(--text2);border:1px solid var(--border)}
.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-sans);font-size:.82rem;font-weight:500;padding:8px 14px;border-radius:8px;border:none;cursor:pointer;transition:all var(--transition);white-space:nowrap}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn-primary{background:var(--gradient);color:#fff;box-shadow:0 2px 8px rgba(83,82,237,.2)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(83,82,237,.35)}
.btn-ghost{background:transparent;color:var(--text2);border:1px solid transparent}.btn-ghost:hover{color:var(--text);background:var(--bg-input)}
.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);padding:0 24px;background:var(--bg2)}
.tab{font-family:var(--font-sans);font-size:.82rem;font-weight:500;padding:10px 18px;border:none;background:transparent;color:var(--text2);cursor:pointer;border-bottom:2px solid transparent;transition:all var(--transition)}
.tab:hover{color:var(--text)}
.tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.main{flex:1;overflow-y:auto;padding:24px}
.empty-state{display:flex;align-items:center;justify-content:center;min-height:400px}
.drop-zone{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px;border:2px dashed var(--border);border-radius:var(--radius);text-align:center;cursor:pointer;transition:all var(--transition)}
.drop-zone:hover,.drop-zone.dragover{border-color:var(--primary);background:var(--glyph-hover)}
.drop-zone h2{font-size:1.1rem;font-weight:600;color:var(--text2)}
.drop-zone p{font-size:.82rem;color:var(--text3)}
.tab-content{display:block}
.preview-controls{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.preview-controls input[type="range"]{flex:1;accent-color:var(--primary)}
.size-label{font-size:.82rem;font-family:var(--font-mono);color:var(--text2);min-width:40px}
.preview-text{width:100%;min-height:120px;font-size:48px;padding:16px;background:var(--bg2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);outline:none;resize:vertical;line-height:1.4}
.preview-samples{margin-top:24px;display:flex;flex-direction:column;gap:12px}
.sample{display:flex;align-items:baseline;gap:16px;padding:12px;border-bottom:1px solid var(--border)}
.sample-label{font-size:.72rem;font-family:var(--font-mono);color:var(--text3);min-width:36px}
.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.info-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}
.info-card-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);margin-bottom:6px}
.info-card-value{font-size:1rem;font-weight:600;word-break:break-all}
.glyphs-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.search-input{flex:1;padding:8px 14px;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:.82rem;outline:none}
.search-input:focus{border-color:var(--primary)}
.glyph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px}
.glyph-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 4px;background:var(--glyph-bg);border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:all var(--transition);min-height:72px}
.glyph-cell:hover{background:var(--glyph-hover);transform:scale(1.05)}
.glyph-char{font-size:24px;line-height:1}
.glyph-code{font-size:.6rem;font-family:var(--font-mono);color:var(--text3);margin-top:4px}
.metrics-visual{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;margin-bottom:20px;min-height:200px}
.metrics-table{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.metric-item{display:flex;justify-content:space-between;padding:10px;background:var(--glyph-bg);border-radius:8px;font-size:.85rem}
.metric-item span:first-child{color:var(--text2)}
.metric-item span:last-child{font-weight:600;font-family:var(--font-mono)}
.coverage-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.coverage-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px}
.coverage-card-name{font-size:.85rem;font-weight:600;margin-bottom:6px}
.coverage-bar{height:6px;background:var(--bg-input);border-radius:3px;overflow:hidden;margin-bottom:4px}
.coverage-fill{height:100%;background:var(--gradient);border-radius:3px;transition:width .6s ease}
.coverage-stat{font-size:.72rem;color:var(--text2)}
.toast-container{position:fixed;bottom:20px;right:20px;z-index:300;display:flex;flex-direction:column;gap:8px}
.toast{padding:10px 16px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.2);font-size:.82rem;animation:toastIn .3s ease}
.toast.success{border-left:3px solid var(--accent)}.toast.error{border-left:3px solid var(--accent-red)}.toast.info{border-left:3px solid var(--primary)}
@keyframes toastIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
[data-theme="dark"] .icon-moon{display:none}[data-theme="dark"] .icon-sun{display:block}
[data-theme="light"] .icon-moon{display:block}[data-theme="light"] .icon-sun{display:none}
::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
@media(max-width:768px){.main{padding:16px}.glyph-grid{grid-template-columns:repeat(auto-fill,minmax(52px,1fr))}.info-grid{grid-template-columns:1fr}.header{padding:10px 16px}.tabs{padding:0 16px;overflow-x:auto}}
