:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;padding:0;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}.text-input-container{display:flex;flex-direction:column;gap:.5rem;width:100%;position:relative}.input-wrapper{position:relative;display:flex;align-items:center;background:#fff;border-radius:var(--radius-lg, 1rem);border:1px solid #d1d5db;transition:all .2s ease;box-shadow:inset 0 1px 2px #0000000d}.input-wrapper:hover{border-color:#e5e7eb;background:#fff}.input-wrapper:focus-within{border-color:var(--primary-color, #111827);background:#fff}.text-input{width:100%;padding:.875rem 1.5rem;font-size:1rem;border:none;border-radius:var(--radius-lg, 1rem);outline:none;background:transparent;color:var(--text-primary, #111827);font-family:inherit}.text-input::placeholder{color:var(--text-secondary, #9ca3af);opacity:.7}.text-input.error{border-color:#ef4444}.text-input:disabled{background-color:#f9fafb;cursor:not-allowed;color:#9ca3af}.character-count{font-size:.75rem;color:var(--text-secondary, #9ca3af);padding-right:1.25rem;white-space:nowrap;font-weight:500;pointer-events:none}.helper-text{font-size:.75rem;color:#6c757d;margin-top:.25rem}.generate-button{background-color:var(--primary-color, #111827);color:#fff;border:none;padding:0 1.5rem;height:48px;border-radius:var(--radius-lg, 1rem);font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;min-width:120px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;letter-spacing:.01em}.generate-button:hover:not(:disabled){background-color:#000;transform:translateY(-1px);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.generate-button:active:not(:disabled){transform:scale(.98)}.generate-button:disabled{background-color:var(--secondary-color, #9ca3af);cursor:not-allowed;opacity:.7;transform:none;box-shadow:none}.loading-spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:#fff;animation:spin .8s linear infinite;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}.error-message{color:#e74c3c;font-size:.875rem;margin-bottom:.75rem;padding:.5rem .75rem;background-color:#fdf2f2;border:1px solid #fecaca;border-radius:4px;display:flex;align-items:center;gap:.5rem}.error-icon{font-size:.875rem;flex-shrink:0}.handwriting-canvas-container{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}.canvas-controls{position:absolute;bottom:1.5rem;right:1.5rem;display:flex;gap:.75rem;opacity:0;transform:translateY(10px);animation:fadeInUp .3s ease forwards}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}.control-btn{padding:.5rem 1rem;border-radius:var(--radius-md, .75rem);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:1px solid var(--border-color, #e5e7eb);background:#ffffffe6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:var(--text-secondary, #4b5563);box-shadow:var(--shadow-sm, 0 1px 2px 0 rgba(0, 0, 0, .05));min-width:80px}.control-btn:hover:not(:disabled){background:var(--surface-color, white);color:var(--text-primary, #111827);border-color:var(--text-secondary, #9ca3af);transform:translateY(-1px);box-shadow:var(--shadow-md, 0 4px 6px -1px rgba(0, 0, 0, .1))}.control-btn:active:not(:disabled){transform:translateY(0)}.control-btn:disabled{opacity:.5;cursor:not-allowed}.handwriting-canvas{border:none;border-radius:var(--radius-lg, 1rem);background-color:#fff;background-image:radial-gradient(#e5e7eb 1px,transparent 1px);background-size:20px 20px;max-width:100%;height:auto;box-shadow:var(--shadow-sm, 0 1px 2px 0 rgba(0, 0, 0, .05));margin:0 auto;display:block}.handwriting-canvas:hover{box-shadow:var(--shadow-md, 0 4px 6px -1px rgba(0, 0, 0, .1))}.canvas-placeholder{background-color:transparent;background-image:radial-gradient(#e5e7eb 1px,transparent 1px);background-size:20px 20px;border:none;border-radius:var(--radius-lg, 1rem);padding:3rem 1.5rem;text-align:center;color:var(--text-secondary, #6b7280);max-width:100%;width:100%;box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center}.canvas-placeholder p{font-size:1.1rem;font-weight:400;margin:0;line-height:1.5;opacity:.6}@media (max-width: 768px){.handwriting-canvas-container{gap:1rem;padding:0}.canvas-controls{gap:.75rem;flex-wrap:wrap;margin-top:1rem}.control-btn{flex:1;min-width:90px;padding:.5rem .75rem}.canvas-placeholder{padding:2rem 1rem}.canvas-placeholder p{font-size:.9rem}}@media (max-width: 480px){.handwriting-canvas-container{gap:.75rem}.canvas-controls{flex-direction:column;width:100%;gap:.5rem}.control-btn{width:100%;max-width:none}.canvas-placeholder{padding:2rem 1rem}}.setting-group{display:flex;flex-direction:column;gap:.5rem;min-width:200px}.setting-group label{font-weight:500;color:#495057;font-size:.9rem;display:flex;justify-content:space-between;margin-bottom:.25rem}.setting-value{font-weight:400;color:#1a1a1a;font-size:.85rem}.slider-container{position:relative;display:flex;flex-direction:column;gap:.25rem}.slider-labels{display:flex;justify-content:space-between;font-size:.75rem;color:#6c757d;margin-top:.5rem;padding:0}.slider-labels span{font-weight:400}.slider-labels span:first-child{text-align:left}.slider-labels span:last-child{text-align:right}.slider-ticks{display:flex;justify-content:space-between;margin:.25rem 10px 0;height:8px;align-items:center}.slider-tick{width:2px;height:8px;background:#dee2e6;border-radius:1px}.slider-tick.major{height:12px;background:#adb5bd}.slider{width:100%;height:6px;border-radius:3px;background:#e9ecef;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;margin:.5rem 0 .25rem;position:relative}.slider::-webkit-slider-track{width:100%;height:6px;border-radius:3px;background:#e9ecef}.slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:#1a1a1a;cursor:pointer;box-shadow:0 2px 4px #0003;transition:all .2s ease;margin-top:-7px}.slider::-webkit-slider-thumb:hover{background:#333;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.slider::-moz-range-track{width:100%;height:6px;border-radius:3px;background:#e9ecef;border:none}.slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:#1a1a1a;cursor:pointer;border:none;box-shadow:0 2px 4px #0003;transition:all .2s ease}.slider::-moz-range-thumb:hover{background:#333;transform:scale(1.1);box-shadow:0 3px 6px #0000004d}.slider::-moz-focus-outer{border:0}.slider::-moz-range-progress{background:#1a1a1a;height:6px;border-radius:3px 0 0 3px}@media (max-width: 768px){.setting-group{min-width:280px}.slider-labels{padding:0;margin-top:.4rem}.slider-labels span:first-child{text-align:left}.slider-labels span:last-child{text-align:right}.slider-ticks{margin:.25rem 8px 0}}:root{--primary-color: #111827;--secondary-color: #6b7280;--accent-color: #3b82f6;--background-color: #f9fafb;--surface-color: #ffffff;--border-color: #e5e7eb;--text-primary: #111827;--text-secondary: #4b5563;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--radius-lg: 1rem;--radius-md: .75rem;--radius-sm: .5rem}.app{min-height:100vh;background-color:var(--background-color);display:flex;flex-direction:column;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text-primary)}.app-header{background:#fffc;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid rgba(0,0,0,.03);padding:1rem 0;position:sticky;top:0;z-index:100}.header-content{max-width:1000px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 2rem}.app-header h1{font-size:1.25rem;margin:0;font-weight:700;color:var(--text-primary);letter-spacing:-.02em}.header-controls{display:flex;align-items:center;gap:1rem}.settings-toggle{background:transparent;border:none;border-radius:50%;color:var(--text-secondary);padding:0;cursor:pointer;font-size:1.25rem;transition:all .2s ease;display:flex;align-items:center;justify-content:center;width:40px;height:40px;margin-right:-1rem}.settings-toggle:hover{background:#0000000d;color:var(--text-primary);transform:rotate(15deg)}.settings-toggle.active{background:var(--primary-color);color:#fff}.chat-container{flex:1;display:flex;flex-direction:column;max-width:1000px;margin:0 auto;width:100%;padding:2rem;gap:3rem}.canvas-area{flex:1;display:flex;align-items:center;justify-content:center;min-height:450px;padding:1.5rem;background:transparent;border-radius:var(--radius-lg);border:2px dashed var(--border-color);box-shadow:none;transition:border-color .3s ease}.settings-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#0003;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:1000;animation:fadeIn .2s ease-out}.settings-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--surface-color);border-radius:var(--radius-lg);border:1px solid var(--border-color);box-shadow:var(--shadow-lg);z-index:1001;min-width:400px;max-width:90vw;overflow:hidden;animation:slideUp .3s cubic-bezier(.16,1,.3,1)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translate(-50%,-48%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.settings-popup-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border-color);background:#ffffff80}.settings-popup-header h3{margin:0;font-size:1.1rem;font-weight:600;color:var(--text-primary)}.close-button{background:transparent;border:none;font-size:1.25rem;color:var(--text-secondary);cursor:pointer;padding:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all .2s ease}.close-button:hover{background:var(--background-color);color:var(--text-primary)}.settings-popup-content{padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem}.settings-popup-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:.5rem;padding-top:1.25rem;border-top:1px solid var(--border-color)}.cancel-button,.save-button{padding:.625rem 1.25rem;border-radius:var(--radius-md);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.cancel-button{background:transparent;color:var(--text-secondary)}.cancel-button:hover{background:var(--background-color);color:var(--text-primary)}.save-button{background:var(--primary-color);color:#fff;box-shadow:var(--shadow-sm)}.save-button:hover{background:#000;transform:translateY(-1px);box-shadow:var(--shadow-md)}.save-button:active{transform:translateY(0)}.input-area{background:transparent;padding:0;border:none;box-shadow:none}.input-container{display:flex;gap:1rem;align-items:stretch}@media (max-width: 768px){.app-header{padding:.75rem 0}.header-content{padding:0 1rem}.chat-container{padding:1.5rem 1rem;gap:1.5rem}.canvas-area{padding:1rem;min-height:300px;border-radius:var(--radius-md)}.input-container{flex-direction:column;gap:.75rem}.settings-popup{min-width:300px;margin:1rem;width:calc(100% - 2rem)}.settings-popup-content{padding:1.25rem;gap:1.25rem}.cancel-button,.save-button{width:100%;padding:.75rem}.settings-popup-actions{flex-direction:column-reverse;gap:.5rem}}@media (max-width: 480px){.header-content{padding:0 1rem}.chat-container{padding:1rem}.canvas-area{padding:.75rem}}
