:root{--canvas: #ffffff;--canvas-soft: #fafafa;--card: #ffffff;--strong: #f0f0f3;--ink: #171717;--body: #60646c;--muted: #999999;--muted-soft: #cccccc;--hairline: #f0f0f3;--hairline-soft: #f5f5f7;--hairline-strong: #dcdee0;--link: #0d74ce;--black: #000000;--black-active: #1a1a1a;--success: #16a34a;--danger: #ff3b30;--sky-light: #cfe7ff;--sky-mid: #a8c8e8;--sans: "Inter", -apple-system, system-ui, sans-serif;--mono: "JetBrains Mono", "Fira Code", monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--sans);background:var(--canvas);color:var(--ink);min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}a{color:var(--link)}.header{text-align:center;padding:48px 20px 32px;position:relative;background:radial-gradient(60% 100% at 50% 0%,var(--sky-light) 0%,rgba(207,231,255,0) 100%)}.header h1{font-size:36px;font-weight:600;letter-spacing:-1.08px;line-height:1.15}.header h1 span{color:var(--muted);font-weight:400}.header p{font-size:14px;color:var(--body);margin-top:6px}.header-actions{position:absolute;right:24px;top:48px;display:flex;gap:8px}.icon-btn{background:var(--card);border:1px solid var(--hairline-strong);width:40px;height:40px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--body);transition:background .15s,color .15s}.icon-btn:hover{background:var(--strong);color:var(--ink)}.container{flex:1;max-width:960px;margin:0 auto 32px;width:100%;padding:0 24px;display:flex;flex-direction:column;gap:16px}.panels{display:flex;gap:20px;flex:1;min-height:0}.panel{flex:1;display:flex;flex-direction:column;background:var(--card);border-radius:12px;overflow:hidden;border:1px solid var(--hairline-strong);transition:box-shadow .15s ease}.panel:hover{box-shadow:0 4px 12px #0000000a}.panel-header{padding:16px 20px 12px;border-bottom:1px solid var(--hairline);display:flex;justify-content:space-between;align-items:center}.panel-label{font-size:11px;font-weight:600;color:var(--ink);letter-spacing:.88px;text-transform:uppercase}.panel-badge{background:var(--strong);color:var(--ink);padding:4px 10px;border-radius:9999px;font-size:11px;font-weight:600;letter-spacing:.44px;text-transform:uppercase}.textarea-wrap{flex:1;display:flex;flex-direction:column}textarea{flex:1;width:100%;background:transparent;border:none;outline:none;color:var(--ink);font-size:16px;padding:20px;resize:none;font-family:var(--sans);line-height:1.7;min-height:240px;font-weight:400}textarea::placeholder{color:var(--muted-soft)}.textarea-footer{padding:8px 20px 12px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--body)}.output-wrap{flex:1;display:flex;flex-direction:column}.output{flex:1;padding:20px;overflow-y:auto;position:relative;display:flex;flex-direction:column}.output-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;color:var(--muted-soft);gap:12px}.output-empty-icon{font-size:48px;opacity:.4}.output-empty-text{font-size:15px}.output-text{color:var(--ink);font-size:16px;line-height:1.7;white-space:pre-wrap}.loading-bar{height:3px;background:var(--hairline);border-radius:2px;overflow:hidden;margin:8px 20px 12px}.loading-bar-inner{height:100%;width:0;background:var(--ink);border-radius:2px;animation:loadProgress 1.5s ease-in-out infinite}@keyframes loadProgress{0%{width:0;margin-left:0}50%{width:60%;margin-left:20%}to{width:0;margin-left:100%}}.clear-btn{background:none;border:none;color:var(--body);cursor:pointer;font-size:14px;font-weight:500;padding:4px 10px;border-radius:8px;font-family:var(--sans)}.clear-btn:hover{color:var(--danger);background:#ff3b3014}.copy-btn{background:var(--black);border:1px solid var(--black);color:#fff;padding:10px 18px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;font-family:var(--sans);transition:background .15s;white-space:nowrap}.copy-btn:hover{background:var(--black-active);border-color:var(--black-active)}.copy-btn.copied{background:var(--success);border-color:var(--success)}.mic-btn{background:none;border:none;color:var(--body);cursor:pointer;font-size:16px;padding:4px 8px;border-radius:8px;transition:background .15s,color .15s}.mic-btn:hover{color:var(--ink);background:var(--strong)}.mic-btn:disabled{opacity:.3;cursor:not-allowed}.voice-modal .modal-card{text-align:center;padding:48px 40px}.voice-icon{width:80px;height:80px;border-radius:50%;background:var(--strong);display:flex;align-items:center;justify-content:center;font-size:36px;margin:0 auto 12px;position:relative;transition:background .3s;color:var(--ink)}.voice-icon.active{background:#fef2f2}.voice-red-dot{width:12px;height:12px;border-radius:50%;background:var(--danger);position:absolute;bottom:4px;right:4px;box-shadow:0 0 0 3px #fff}.voice-red-dot.pulse{animation:voicePulse 1.2s ease-in-out infinite}@keyframes voicePulse{0%,to{transform:scale(1);box-shadow:0 0 0 3px #fff,0 0 0 6px #ff3b3026}50%{transform:scale(1.2);box-shadow:0 0 0 3px #fff,0 0 0 12px #ff3b301a}}.voice-status{font-size:15px;color:var(--body);margin-bottom:24px;font-weight:500}.voice-status.listening{color:var(--danger)}.voice-waves{display:flex;align-items:center;justify-content:center;gap:4px;height:40px;margin-bottom:20px}.voice-wave{width:4px;background:var(--danger);border-radius:4px;height:8px;transition:height .1s}.voice-wave.active{animation:waveAnim .6s ease-in-out infinite alternate}.voice-wave:nth-child(1).active{animation-delay:0s;height:12px}.voice-wave:nth-child(2).active{animation-delay:.1s;height:20px}.voice-wave:nth-child(3).active{animation-delay:.2s;height:36px}.voice-wave:nth-child(4).active{animation-delay:.05s;height:28px}.voice-wave:nth-child(5).active{animation-delay:.15s;height:16px}.voice-wave:nth-child(6).active{animation-delay:.08s;height:32px}.voice-wave:nth-child(7).active{animation-delay:.18s;height:24px}@keyframes waveAnim{0%{transform:scaleY(.3)}to{transform:scaleY(1)}}.voice-hint{font-size:12px;color:var(--body)}.footer-bar{text-align:center;padding:16px 24px;font-size:14px;color:var(--body);display:flex;justify-content:center;align-items:center;gap:12px}.footer-bar #modelName:hover{color:var(--ink)}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--success);display:inline-block;vertical-align:middle;margin-right:4px}.status.loading .status-dot{background:var(--ink);animation:dotPulse 1s ease-in-out infinite}@keyframes dotPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}.status.error .status-dot{background:var(--danger)}.offline-banner{position:fixed;bottom:48px;left:50%;transform:translate(-50%);z-index:60;background:var(--danger);color:#fff;padding:6px 16px;border-radius:12px;font-size:12px;font-weight:500;display:none;white-space:nowrap;box-shadow:0 4px 16px #ff3b3040;animation:dropdownIn .2s ease}.modal-overlay{position:fixed;inset:0;background:#0000004d;backdrop-filter:blur(8px);z-index:100;display:none;align-items:center;justify-content:center;overflow-y:auto;padding:20px}.modal-overlay.open{display:flex}.modal-card{background:var(--card);border:1px solid var(--hairline-strong);border-radius:12px;width:500px;max-width:calc(100vw - 48px);box-shadow:0 20px 60px #00000026;animation:modalIn .2s ease}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-title{font-size:18px;font-weight:600;margin-bottom:4px;color:var(--ink)}.modal-desc{font-size:13px;color:var(--body);margin-bottom:20px}.modal-input{width:100%;padding:12px 16px;border:1px solid var(--hairline-strong);border-radius:8px;font-size:14px;font-family:var(--sans);outline:none;color:var(--ink);background:var(--card)}.modal-input:focus{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}#apiKeyInput{font-family:var(--mono);font-size:13px}.modal-select{width:100%;padding:12px 16px;border:1px solid var(--hairline-strong);border-radius:8px;font-size:14px;font-family:var(--sans);outline:none;margin-bottom:14px;background:var(--card);color:var(--ink);cursor:pointer}.modal-select:focus{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}.modal-select optgroup{font-weight:600;font-size:12px;color:var(--body)}.modal-label{font-size:12px;font-weight:600;color:var(--body);margin-bottom:6px;display:block}.modal-actions{display:flex;gap:10px;margin-top:16px;justify-content:flex-end;border-top:1px solid var(--hairline)}.modal-btn{padding:10px 18px;border-radius:8px;font-size:14px;font-weight:500;font-family:var(--sans);cursor:pointer;transition:background .15s;height:40px}.modal-btn-primary{background:var(--black);color:#fff;border:1px solid var(--black)}.modal-btn-primary:hover{background:var(--black-active);border-color:var(--black-active)}.modal-btn-secondary{background:var(--card);color:var(--ink);border:1px solid var(--hairline-strong)}.modal-btn-secondary:hover{background:var(--strong)}.modal-key-preview{background:var(--strong);padding:10px 14px;border-radius:8px;font-family:var(--mono);font-size:13px;color:var(--body);word-break:break-all;margin-bottom:16px}.settings-tabs{display:flex;gap:4px;padding:16px 24px 0;border-bottom:1px solid var(--hairline)}.settings-tab{background:none;border:none;padding:8px 16px;font-size:13px;font-weight:500;font-family:var(--sans);color:var(--body);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s}.settings-tab:hover{color:var(--ink)}.settings-tab.active{color:var(--ink);border-bottom-color:var(--ink)}.settings-body{padding:16px 24px;max-height:60vh;overflow-y:auto;min-height:320px}.prompt-section{margin-bottom:16px;padding:12px;background:var(--canvas-soft);border-radius:12px;border:1px solid var(--hairline)}.prompt-section textarea{width:100%;min-height:80px;font-family:var(--mono);font-size:13px;padding:8px 10px;border:1px solid var(--hairline-strong);border-radius:8px;resize:vertical;outline:none;box-sizing:border-box;line-height:1.5;background:var(--card);color:var(--ink)}.prompt-section textarea:focus{border-color:var(--ink);box-shadow:0 0 0 1px var(--ink)}.settings-tab-content{display:none}.settings-tab-content.active{display:block}.cache-badge{background:var(--strong);color:var(--success);padding:4px 10px;border-radius:9999px;font-size:11px;font-weight:600;margin-left:8px;display:none}.cache-badge.show{display:inline}.lang-dropdown{position:relative}.lang-trigger{background:var(--card);border:1px solid var(--hairline-strong);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:500;font-family:var(--sans);color:var(--ink);cursor:pointer;display:flex;align-items:center;gap:4px;transition:background .15s}.lang-trigger:hover{background:var(--strong)}.lang-menu{position:absolute;top:calc(100% + 4px);right:0;min-width:100px;background:var(--card);border:1px solid var(--hairline-strong);border-radius:8px;padding:4px;box-shadow:0 8px 32px #0000001f;z-index:20;display:none;animation:dropdownIn .15s ease}.lang-option{padding:6px 12px;border-radius:6px;font-size:12px;font-weight:500;color:var(--ink);cursor:pointer;transition:background .1s}.lang-option:hover{background:var(--strong)}.lang-option.active{background:var(--black);color:#fff}.lang-option.active:hover{background:var(--black-active)}@keyframes dropdownIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media(max-width:768px){.header{padding:28px 16px 20px}.header h1{font-size:28px;letter-spacing:-.84px}.header-actions{position:static;justify-content:flex-end;margin-top:12px}.panels{flex-direction:column}.container{padding:0 16px;margin-bottom:20px}textarea{min-height:160px}.modal-card{padding:24px}}.fade-in{animation:fadeUp .3s ease}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.sidebar{position:fixed;top:50%;left:12px;transform:translateY(-50%);z-index:50;display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--hairline-strong);border-radius:16px;padding:8px;box-shadow:0 8px 32px #00000014}.sidebar-btn{background:transparent;border:none;border-radius:8px;padding:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--body);transition:background .15s,color .15s;width:40px;height:40px}.sidebar-btn:hover{background:var(--strong);color:var(--ink)}.sidebar-btn.active{background:var(--ink);color:#fff}.sidebar-btn svg{width:20px;height:20px;display:block}.sidebar-btn.disabled{opacity:.25;cursor:not-allowed;pointer-events:none}@media(max-width:768px){.sidebar{top:auto;bottom:24px;left:50%;transform:translate(-50%);flex-direction:row;gap:6px;padding:6px 10px}.sidebar-btn{width:36px;height:36px;padding:8px}.sidebar-btn svg{width:18px;height:18px}}.tab-panel{display:none;width:100%;flex:1}.tab-panel.active{display:flex;gap:20px;flex:1}@media(max-width:768px){.tab-panel.active{flex-direction:column;gap:12px}}.ship-empty{padding:48px 20px;text-align:center;color:var(--muted);font-size:14px}.ship-field{display:flex;align-items:center;padding:14px 20px;border-bottom:1px solid var(--hairline);gap:12px}.ship-field:last-child{border-bottom:none}.ship-label{font-size:11px;font-weight:600;color:var(--body);text-transform:uppercase;letter-spacing:.44px;min-width:75px;flex-shrink:0}.ship-value{flex:1;font-size:15px;color:var(--ink);word-break:break-all;line-height:1.5}.ship-copy{background:var(--black);border:1px solid var(--black);color:#fff;cursor:pointer;font-size:11px;font-weight:500;font-family:var(--sans);padding:5px 14px;border-radius:8px;transition:background .15s;white-space:nowrap;flex-shrink:0}.ship-copy:hover{background:var(--black-active)}.ship-copy.copied{background:var(--success);border-color:var(--success)}.excel-address{white-space:pre-wrap;font-size:13px;line-height:1.6}@media(max-width:768px){.ship-field{padding:10px 16px}.ship-label{min-width:60px;font-size:9px}}.history-item{margin-bottom:10px}.history-item:last-child{margin-bottom:0}.history-text{font-size:12px;line-height:1.6;color:var(--body);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.history-out{color:var(--ink);margin-top:4px}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.icon-btn:active,.copy-btn:active,.modal-btn:active,.ship-copy:active,.clear-btn:active{transform:scale(.96)}.output::-webkit-scrollbar,.settings-body::-webkit-scrollbar{width:8px}.output::-webkit-scrollbar-thumb,.settings-body::-webkit-scrollbar-thumb{background:#00000026;border-radius:8px}body.dark{--canvas: #0a0a0a;--canvas-soft: #111113;--card: #171717;--strong: #26262a;--ink: #f5f5f7;--body: #a1a1aa;--muted: #71717a;--muted-soft: #3f3f46;--hairline: #26262a;--hairline-soft: #1c1c1f;--hairline-strong: #3f3f46}body.dark .header{background:radial-gradient(60% 100% at 50% 0%,#a8c8e824,#a8c8e800)}body.dark .copy-btn,body.dark .ship-copy,body.dark .modal-btn-primary,body.dark .lang-option.active{background:#fff;border-color:#fff;color:#000}body.dark .copy-btn:hover,body.dark .ship-copy:hover,body.dark .modal-btn-primary:hover,body.dark .lang-option.active:hover{background:#e5e5e5;border-color:#e5e5e5}body.dark .copy-btn.copied,body.dark .ship-copy.copied{background:var(--success);border-color:var(--success);color:#fff}body.dark .sidebar-btn.active{background:#fff;color:#171717}body.dark .voice-icon.active{background:#ff3b3026}body.dark .modal-overlay{background:#0009}body.dark .output::-webkit-scrollbar-thumb,body.dark .settings-body::-webkit-scrollbar-thumb{background:#ffffff26}
