:root{--primary: #2563eb;--primary-dark: #1d4ed8;--secondary: #64748b;--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--space-xs: .5rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--shadow-sm: 0 1px 2px 0 rgba(0,0,0,.05);--shadow-md: 0 4px 6px -1px rgba(0,0,0,.1);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;color:var(--gray-800);background:var(--gray-50);min-height:100vh;display:flex;flex-direction:column}.container{max-width:1200px;margin:0 auto;padding:0 var(--space-md)}main{flex:1;padding:var(--space-lg) 0}.header{background:#fff;border-bottom:1px solid var(--gray-200);padding:var(--space-lg) 0;box-shadow:var(--shadow-sm)}.header h1{font-size:2rem;color:var(--gray-900);margin-bottom:var(--space-xs)}.subtitle{color:var(--gray-700);font-size:1.125rem;margin-bottom:.25rem}.subtitle-hint{color:var(--gray-500);font-size:.875rem;margin-top:.25rem}.upload-section{margin-bottom:var(--space-lg)}.dropzone{border:2px dashed var(--gray-300);border-radius:var(--radius-lg);background:#fff;padding:var(--space-xl);text-align:center;cursor:pointer;transition:all .3s ease}.dropzone:hover{border-color:var(--primary);background:var(--gray-50)}.dropzone.dragover{border-color:var(--primary);background:#dbeafe;transform:scale(1.02)}.dropzone-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm)}.upload-icon{width:64px;height:64px;color:var(--gray-400);margin-bottom:var(--space-sm)}.dropzone h2{font-size:1.5rem;color:var(--gray-900)}.dropzone p{color:var(--gray-700);font-size:1rem}.file-hint{font-size:.875rem;color:var(--gray-500)}.file-info{background:#fff;border:1px solid var(--gray-200);border-radius:var(--radius-md);padding:var(--space-md);margin-top:var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs)}.file-info-header{display:flex;justify-content:space-between;align-items:center}.file-name{font-weight:600;color:var(--gray-900);word-break:break-all}.file-size{color:var(--gray-700);font-size:.875rem}.btn-clear{background:none;border:none;color:var(--gray-500);font-size:1.25rem;cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm);transition:all .2s}.btn-clear:hover{background:var(--gray-100);color:var(--danger)}.options-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);margin-bottom:var(--space-lg)}.options-section h3{margin-bottom:var(--space-md);color:var(--gray-900)}.option-group{margin-bottom:var(--space-md)}.option-label{display:block;font-weight:600;color:var(--gray-900);margin-bottom:var(--space-sm)}.option-hint{font-size:.875rem;color:var(--gray-700);margin-top:var(--space-xs);margin-left:1.5rem}.format-selector{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-sm)}.format-option{position:relative;cursor:pointer}.format-option input[type=radio]{position:absolute;opacity:0}.format-badge{display:flex;flex-direction:column;padding:var(--space-md);border:2px solid var(--gray-200);border-radius:var(--radius-md);transition:all .2s;background:#fff}.format-option input[type=radio]:checked+.format-badge{border-color:var(--primary);background:#dbeafe}.format-badge strong{color:var(--gray-900);font-size:1rem;margin-bottom:.25rem}.format-badge small{color:var(--gray-700);font-size:.875rem}.btn-primary{width:100%;padding:var(--space-md);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{background:var(--gray-300);cursor:not-allowed;transform:none}.progress-section{background:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);margin-bottom:var(--space-lg)}.progress-bar{width:100%;height:8px;background:var(--gray-200);border-radius:999px;overflow:hidden;margin-bottom:var(--space-sm)}.progress-fill{height:100%;background:var(--primary);border-radius:999px;transition:width .3s ease;width:0%}.progress-text{text-align:center;color:var(--gray-700);font-size:.875rem}.results-section{display:flex;flex-direction:column;gap:var(--space-lg)}.stats-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm)}.stats-card h3{margin-bottom:var(--space-md)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-md);margin-bottom:var(--space-md)}.stat-item{display:flex;flex-direction:column}.stat-label{font-size:.875rem;color:var(--gray-700);margin-bottom:.25rem}.stat-value{font-size:1.5rem;font-weight:700;color:var(--primary)}.language-stats{border-top:1px solid var(--gray-200);padding-top:var(--space-md)}.language-item{display:flex;justify-content:space-between;padding:var(--space-xs) 0;font-size:.875rem}.warnings-card{background:#fef3c7;border:1px solid var(--warning);border-radius:var(--radius-md);padding:var(--space-md)}.warnings-card h4{color:#92400e;margin-bottom:var(--space-sm)}.warnings-list{list-style:none;color:#92400e;font-size:.875rem}.warnings-list li{padding:.25rem 0 .25rem 1rem;position:relative}.warnings-list li:before{content:"⚠️";position:absolute;left:0}.savings-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);border-left:4px solid var(--success)}.savings-card h4{margin-bottom:var(--space-md);color:var(--gray-900);font-size:1rem}.savings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-md);margin-bottom:var(--space-md)}.savings-item{display:flex;flex-direction:column;gap:.25rem}.savings-label{font-size:.8rem;color:var(--gray-500);font-weight:500}.savings-value{font-size:1.4rem;font-weight:700;color:var(--gray-900)}.savings-value small{font-size:.875rem;font-weight:500;color:var(--gray-500)}.savings-value.savings-bad{color:var(--danger)}.savings-value.savings-good{color:var(--success)}.savings-highlight{background:#f0fdf4;border-radius:var(--radius-md);padding:var(--space-sm);border:1px solid #bbf7d0}.savings-note{font-size:.75rem;color:var(--gray-500);margin-top:.125rem}.savings-status{margin-top:var(--space-sm);padding:.625rem var(--space-sm);border-radius:var(--radius-md);border:1px solid;font-size:.875rem;font-weight:500}.savings-footnote{margin-top:var(--space-sm);font-size:.75rem;color:var(--gray-400);line-height:1.5}.cache-card{background:#fff;border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);border-left:4px solid var(--warning)}.cache-card h4{margin-bottom:var(--space-md)}.cache-severity{display:inline-block;padding:.25rem .5rem;border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase;margin-left:.5rem}.cache-severity.high{background:#fee2e2;color:var(--danger)}.cache-severity.medium{background:#fef3c7;color:var(--warning)}.cache-severity.low{background:#dbeafe;color:var(--primary)}.output-card{background:#fff;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.output-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md);border-bottom:1px solid var(--gray-200);flex-wrap:wrap;gap:var(--space-sm)}.output-actions{display:flex;gap:var(--space-sm)}.btn-secondary{padding:var(--space-sm) var(--space-md);background:#fff;color:var(--gray-900);border:1px solid var(--gray-300);border-radius:var(--radius-md);font-size:.875rem;cursor:pointer;transition:all .2s}.btn-secondary:hover{background:var(--gray-50);border-color:var(--gray-400)}.output-preview{max-height:500px;overflow:auto}.output-content{margin:0;padding:var(--space-md);font-family:Monaco,Menlo,Consolas,monospace;font-size:.875rem;line-height:1.6;background:var(--gray-900);color:#f3f4f6;white-space:pre-wrap;word-break:break-word}.action-footer{display:flex;justify-content:center}.btn-outline{padding:var(--space-sm) var(--space-lg);background:#fff;color:var(--primary);border:2px solid var(--primary);border-radius:var(--radius-md);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.btn-outline:hover{background:var(--primary);color:#fff}.footer{background:#fff;border-top:1px solid var(--gray-200);padding:var(--space-lg) 0;margin-top:var(--space-xl);text-align:center;color:var(--gray-700)}.footer a{color:var(--primary);text-decoration:none;margin:0 var(--space-xs)}.footer a:hover{text-decoration:underline}.footer-note{margin-top:var(--space-sm);font-size:.875rem;color:var(--gray-700)}.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-md)}.modal-content{background:#fff;border-radius:var(--radius-lg);max-width:600px;width:100%;max-height:80vh;overflow:auto;box-shadow:var(--shadow-lg)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-lg);border-bottom:1px solid var(--gray-200)}.modal-close{background:none;border:none;font-size:1.5rem;color:var(--gray-500);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-sm)}.modal-close:hover{background:var(--gray-100);color:var(--gray-900)}.modal-body{padding:var(--space-lg)}.modal-body h3{margin-top:var(--space-md);margin-bottom:var(--space-sm);color:var(--gray-900)}.modal-body ul,.modal-body ol{margin-left:var(--space-md);margin-bottom:var(--space-md)}.modal-body li,.modal-body p{margin-bottom:var(--space-xs);line-height:1.6}.modal-body code{background:var(--gray-100);padding:.125rem .375rem;border-radius:var(--radius-sm);font-family:Monaco,Menlo,Consolas,monospace;font-size:.875rem}.toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%) translateY(2rem);background:var(--gray-900);color:#fff;padding:.75rem 1.5rem;border-radius:var(--radius-md);font-size:.9rem;box-shadow:var(--shadow-lg);opacity:0;transition:opacity .3s ease,transform .3s ease;pointer-events:none;z-index:9999;max-width:90vw;text-align:center;white-space:nowrap}.toast-show{opacity:1;transform:translate(-50%) translateY(0)}.toast-error{background:var(--danger)}.toast-success{background:var(--success)}.toast-warning{background:var(--warning);color:var(--gray-900)}.btn-success{background:var(--success)!important;border-color:var(--success)!important}.input-tabs{display:flex;gap:0;margin-bottom:-1px;position:relative;z-index:1}.tab-btn{padding:.625rem 1.25rem;background:var(--gray-100);border:1px solid var(--gray-200);border-bottom:none;border-radius:var(--radius-md) var(--radius-md) 0 0;font-size:.9rem;font-weight:500;color:var(--gray-700);cursor:pointer;transition:all .2s;margin-right:4px}.tab-btn:hover{background:var(--gray-200);color:var(--gray-900)}.tab-btn.active{background:#fff;color:var(--primary);border-color:var(--gray-200);font-weight:600}.tab-panel{background:#fff;border:1px solid var(--gray-200);border-radius:0 var(--radius-lg) var(--radius-lg) var(--radius-lg)}.tab-panel.hidden{display:none}.remote-section{padding:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-md)}.remote-input-group{display:flex;align-items:center;border:2px solid var(--gray-300);border-radius:var(--radius-md);overflow:hidden;transition:border-color .2s;background:#fff}.remote-input-group:focus-within{border-color:var(--primary)}.remote-prefix{padding:.75rem 1rem;background:var(--gray-100);color:var(--gray-700);font-size:.9rem;border-right:1px solid var(--gray-300);white-space:nowrap;-webkit-user-select:none;user-select:none}.remote-input{flex:1;padding:.75rem 1rem;border:none;outline:none;font-size:.95rem;color:var(--gray-900);font-family:Monaco,Menlo,Consolas,monospace;background:transparent}.remote-input::placeholder{color:var(--gray-400);font-family:inherit}.token-group{display:flex;gap:var(--space-xs);align-items:center}.token-input{flex:1;padding:.625rem .875rem;border:1px solid var(--gray-300);border-radius:var(--radius-md);font-size:.875rem;color:var(--gray-800);outline:none;transition:border-color .2s}.token-input:focus{border-color:var(--primary)}.token-input::placeholder{color:var(--gray-400)}.btn-token-help{width:28px;height:28px;border-radius:50%;border:1px solid var(--gray-300);background:var(--gray-100);color:var(--gray-700);font-size:.8rem;font-weight:700;cursor:pointer;flex-shrink:0;transition:all .2s;display:flex;align-items:center;justify-content:center}.btn-token-help:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.token-hint{background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius-md);padding:var(--space-md);font-size:.875rem;color:#1e40af;line-height:1.7}.token-hint a{color:var(--primary);font-weight:600}.btn-fetch{padding:.875rem var(--space-lg);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-sm)}.btn-fetch:hover:not(:disabled){background:var(--primary-dark);transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-fetch:disabled{background:var(--gray-300);cursor:not-allowed;transform:none}.remote-examples{display:flex;align-items:center;gap:var(--space-xs);flex-wrap:wrap;font-size:.875rem;color:var(--gray-700)}.example-btn{padding:.25rem .625rem;background:var(--gray-100);border:1px solid var(--gray-200);border-radius:var(--radius-sm);font-size:.8rem;color:var(--primary);cursor:pointer;font-family:Monaco,Menlo,Consolas,monospace;transition:all .2s}.example-btn:hover{background:#dbeafe;border-color:var(--primary)}@media (max-width: 768px){.header h1{font-size:1.5rem}.subtitle{font-size:1rem}.stats-grid,.savings-grid{grid-template-columns:repeat(2,1fr)}.format-selector{grid-template-columns:1fr}.output-header{flex-direction:column;align-items:flex-start}.output-actions{width:100%;flex-direction:column}.btn-secondary{width:100%}.remote-prefix{display:none}.remote-section{padding:var(--space-md)}.remote-examples{display:none}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease}
