:root{--bg-color: #f0f2f5;--card-bg-color: #ffffff;--primary-color: #0d6efd;--primary-color-light: #e7f1ff;--border-color: #dee2e6;--text-color-dark: #212529;--text-color-light: #6c757d;--input-bg-color: #ffffff;--box-shadow-color: rgba(0, 0, 0, .05);--error-color: #dc3545;--success-color: #198754;--font-family: "Inter", system-ui, sans-serif;--font-mono: "Fira Code", "Courier New", Courier, monospace;--border-radius: 8px;--transition-speed: .2s}body.dark-mode{--bg-color: #121212;--card-bg-color: #1e1e1e;--primary-color: #4dabf7;--primary-color-light: #1c2e41;--border-color: #444;--text-color-dark: #e0e0e0;--text-color-light: #888;--input-bg-color: #2c2c2c;--box-shadow-color: rgba(0, 0, 0, .2);--error-color: #f87171;--success-color: #238636}body{font-family:var(--font-family);background-color:var(--bg-color);color:var(--text-color-dark);margin:0;padding:24px;line-height:1.6;transition:background-color var(--transition-speed),color var(--transition-speed)}.wrap{max-width:1100px;margin:0 auto}header{display:flex;align-items:center;gap:12px;margin-bottom:24px}header h1{font-size:24px;font-weight:700;margin:0}header i{font-size:28px;color:var(--primary-color)}header img{width:28px;height:28px}.header-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.sidebar{background:var(--card-bg-color);padding:8px;border-radius:var(--border-radius);box-shadow:0 4px 6px var(--box-shadow-color);position:sticky;top:24px;transition:background-color var(--transition-speed)}.sidebar-header{display:none}.sidebar button{position:relative;display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px;border:0;background:transparent;cursor:pointer;border-radius:6px;font-size:14px;font-weight:500;color:var(--text-color-light);transition:background-color var(--transition-speed),color var(--transition-speed)}.sidebar button:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%) scaleY(0);height:60%;width:4px;background-color:var(--primary-color);border-radius:4px;transition:transform var(--transition-speed) ease}.sidebar button:hover{background-color:var(--primary-color-light);color:var(--primary-color)}.sidebar button.active{background-color:var(--primary-color-light);color:var(--primary-color);font-weight:600}.sidebar button.active:before{transform:translateY(-50%) scaleY(1)}.panel{background:var(--card-bg-color);padding:24px;border-radius:var(--border-radius);box-shadow:0 4px 6px var(--box-shadow-color);border-top:4px solid var(--primary-color);transition:background-color var(--transition-speed),opacity var(--transition-speed) ease;max-width:100%;overflow:auto}.panel.fade-out{opacity:.5}.panel h3{margin-top:0;font-size:20px;font-weight:600;border-bottom:1px solid var(--border-color);padding-bottom:12px;margin-bottom:20px}label{display:block;margin-top:16px;margin-bottom:8px;font-size:14px;font-weight:500}table{width:100%;border-collapse:collapse;margin:1.5em 0;overflow-x:auto}th,td{border:1px solid var(--border-color);padding:8px 12px;text-align:left}th{background-color:var(--bg-color);font-weight:600}input,textarea,select{width:100%;padding:10px 12px;border-radius:6px;border:1px solid var(--border-color);box-sizing:border-box;font-family:var(--font-family);font-size:14px;background-color:var(--input-bg-color);color:var(--text-color-dark);transition:border-color var(--transition-speed),box-shadow var(--transition-speed)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px var(--primary-color-light)}.row{display:flex;gap:16px;flex-wrap:wrap;margin-top:20px;align-items:center}button.btn,.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:6px;border:0;background:var(--primary-color);color:#fff;cursor:pointer;font-size:14px;font-weight:500;transition:all var(--transition-speed) ease}button.btn:hover,.theme-toggle:hover{filter:brightness(1.1)}button.btn:active,.theme-toggle:active{transform:scale(.97)}button.ghost{background:var(--primary-color-light);color:var(--primary-color);font-weight:600}.drop-zone{margin-top:20px;padding:32px 16px;border-radius:6px;background:var(--bg-color);border:2px dashed var(--border-color);word-break:break-word;text-align:center;color:var(--text-color-light);transition:background-color var(--transition-speed),border-color var(--transition-speed);cursor:pointer}.drop-zone:hover{border-color:var(--primary-color);background-color:var(--primary-color-light)}.drop-zone.has-file{border-color:var(--success-color);background-color:#f6fff8}body.dark-mode .drop-zone.has-file{background-color:#1c2b22}.drop-zone p{display:flex;align-items:center;justify-content:center;gap:8px;transition:color var(--transition-speed)}.drop-zone.has-file p{color:var(--text-color-dark);font-weight:500}.preview,#editor-canvas{max-width:100%;height:auto;border-radius:var(--border-radius);border:1px solid var(--border-color);margin-top:16px}.result,.info-box,.hint{margin-top:20px;padding:16px;border-radius:6px;background:var(--bg-color);border:1px solid var(--border-color);text-align:left}pre.result{font-family:Courier New,Courier,monospace;font-size:14px;background-color:#2e2e2e;color:green;white-space:pre;padding:16px;overflow-x:auto}pre.result::-webkit-scrollbar{height:6px;width:6px}pre.result::-webkit-scrollbar-track{background:#2e2e2e}pre.result::-webkit-scrollbar-thumb{background-color:#555}pre.result::-webkit-scrollbar-thumb:hover{background-color:#888}body.dark-mode pre.result{background-color:#000;color:green}.hidden-input{display:none}footer{text-align:center;margin-top:32px;font-size:13px;color:var(--text-color-light)}footer a{color:var(--primary-color);text-decoration:none;font-weight:500}footer a:hover{text-decoration:underline}.theme-toggle{padding:8px;background:var(--card-bg-color);border:1px solid var(--border-color)}.theme-toggle i{color:var(--text-color-dark)}.theme-toggle .ph-sun{display:block}.theme-toggle .ph-moon,body.dark-mode .theme-toggle .ph-sun{display:none}body.dark-mode .theme-toggle .ph-moon{display:block}.hamburger-btn,.close-btn{display:none}.tools{display:grid;grid-template-columns:240px 1fr;gap:20px;align-items:flex-start}.backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;z-index:999;opacity:0;visibility:hidden;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}.backdrop.open{opacity:1;visibility:visible}@media (max-width: 768px){body{padding:16px}header{padding:0 8px}.tools{grid-template-columns:1fr}.hamburger-btn{display:block;background:none;border:none;font-size:28px;color:var(--text-color-dark);cursor:pointer;padding:0;z-index:1001;transition:opacity .3s,visibility .3s}body.sidebar-is-open .hamburger-btn{opacity:0;visibility:hidden;pointer-events:none}.sidebar{position:fixed;top:0;left:0;height:100vh;width:280px;z-index:1000;transform:translate(-100%);transition:transform .3s ease-in-out;padding:16px;box-shadow:4px 0 20px #00000026;background-color:#ffffffb3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow-y:auto}body.dark-mode .sidebar{background-color:#1e1e1ebf;box-shadow:4px 0 20px #0006}.sidebar.open{transform:translate(0)}.sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:0 8px 8px;border-bottom:1px solid var(--border-color);margin-bottom:8px}.sidebar-header h3{margin:0}.sidebar-header .close-btn{display:block;background:none;border:none;font-size:28px;cursor:pointer;color:var(--text-color-dark);text-align:end}body.sidebar-is-open{overflow:hidden}}.chat-container{display:flex;flex-direction:column;height:65vh}#chat-box{flex-grow:1;overflow-y:auto;padding:16px;background-color:var(--bg-color);border-radius:var(--border-radius);display:flex;flex-direction:column;gap:16px}.user-message,.ai-message,.ai-error{padding:12px 16px;border-radius:12px;max-width:80%;line-height:1.6}.user-message{background-color:var(--primary-color);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}.ai-message,.ai-error{background-color:var(--card-bg-color);color:var(--text-color-dark);border:1px solid var(--border-color);align-self:flex-start;border-bottom-left-radius:4px}.ai-error{border-color:var(--error-color);color:var(--error-color)}.chat-input-area{margin-top:16px;gap:8px;align-items:flex-end}#chat-input{flex-grow:1;resize:none;max-height:150px;overflow-y:auto;line-height:1.5;width:50%}#send-chat-btn{height:42px;flex-shrink:0}.markdown-body{line-height:1.7;font-size:15px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1.5em;margin-bottom:.75em;font-weight:600;line-height:1.25;border-bottom:1px solid var(--border-color);padding-bottom:.3em}.markdown-body h1{font-size:2em}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body p{margin-top:0;margin-bottom:1em}.markdown-body a{color:var(--primary-color);text-decoration:none;font-weight:500}.markdown-body a:hover{text-decoration:underline}.markdown-body ul,.markdown-body ol{padding-left:2em;margin-top:0;margin-bottom:1em}.markdown-body li{margin-bottom:.5em}.markdown-body code{font-family:var(--font-mono);background:#2e2e2e;color:green;padding:.2em .4em;border-radius:4px;font-size:.9em}.markdown-body pre.code-block{background:#181a1b;color:green;padding:16px;border-radius:var(--border-radius);overflow-x:auto;margin:1em 0;white-space:pre;font-family:var(--font-mono)}.markdown-body pre.code-block code{background-color:transparent;color:inherit;padding:0;border-radius:0;font-size:1em;white-space:pre-wrap;word-break:break-all}.markdown-body blockquote{margin:1em 0;padding:0 1em;color:var(--text-color-light);border-left:.25em solid var(--border-color)}.spinner-container{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--text-color-light);padding:24px}.coffee-section{margin-top:32px;background-color:var(--primary-color-light);border-radius:var(--border-radius);padding:12px 0;overflow:hidden}.marquee-wrapper{width:100%;overflow:hidden}.marquee-content{display:flex;width:fit-content;animation:marquee-text 15s linear infinite}.marquee-content a{white-space:nowrap;padding:0 2rem;font-size:14px;font-weight:500;color:var(--primary-color);text-decoration:none;transition:color var(--transition-speed)}.marquee-content a:hover{color:var(--text-color-dark)}@keyframes marquee-text{0%{transform:translate(0)}to{transform:translate(-50%)}}
