:root{--primary-bg: #ffffff;--secondary-bg: #f8f9fa;--border-color: #e5e7eb;--text-primary: #111827;--text-secondary: #6b7280;--accent-color: #8b5cf6;--accent-hover: #7c3aed;--light-purple: #f3f4f6}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--secondary-bg);margin:0;padding:0;overflow:hidden}.app{height:100vh;display:flex;flex-direction:column}.app-header{background:var(--primary-bg);border-bottom:1px solid var(--border-color);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.app-header h1{color:var(--text-primary);font-size:1.5rem;font-weight:600}.header-left{display:flex;align-items:center}.language-selector select{padding:.5rem .75rem;border:1px solid var(--border-color);border-radius:4px;background:var(--primary-bg);color:var(--text-primary);font-size:.875rem;cursor:pointer;min-width:160px}.language-selector select:focus{outline:none;border-color:var(--accent-color)}.language-selector select:hover{background:var(--secondary-bg)}.header-actions{display:flex;gap:.5rem}.reset-btn,.share-btn{padding:.5rem 1rem;border:1px solid var(--border-color);background:var(--primary-bg);color:var(--text-primary);border-radius:4px;cursor:pointer;font-size:.875rem;transition:all .2s}.reset-btn:hover,.share-btn:hover{background:var(--secondary-bg)}.share-btn{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}.share-btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.app-content{flex:1;display:grid;grid-template-columns:320px 1fr 400px;overflow:hidden}.left-panel{background:var(--primary-bg);border-right:1px solid var(--border-color);overflow-y:auto;padding:2rem}.middle-panel{background:var(--secondary-bg);display:flex;flex-direction:column;overflow:hidden}.right-panel{background:var(--primary-bg);border-left:1px solid var(--border-color);overflow-y:auto;padding:1.5rem}.controls,.control-section{display:flex;flex-direction:column}.control-section h3{color:var(--text-primary);font-size:1.125rem;font-weight:600;margin-bottom:0;border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.section-header-collapsible{display:flex;justify-content:space-between;align-items:center;cursor:pointer;margin-bottom:.75rem;border-bottom:1px solid var(--border-color);padding-bottom:.5rem;-webkit-user-select:none;user-select:none}.section-header-collapsible:hover h3{color:var(--accent-hover)}.section-header-collapsible h3{margin:0;border:none;padding:0}.collapse-icon{font-size:.75rem;color:var(--text-secondary);transition:transform .2s ease}.collapse-icon.collapsed{transform:rotate(-90deg)}.section-content{overflow:hidden;transition:max-height .3s ease,opacity .2s ease;max-height:1000px;opacity:1;padding-bottom:2rem;display:flex;flex-direction:column;gap:.5rem}.section-content.collapsed{max-height:0;opacity:0;margin:0;padding-bottom:0}.control-section .bezier-editor{overflow:visible}.section-header{display:flex;justify-content:space-between;align-items:center;color:var(--text-primary);font-size:1.125rem;font-weight:600;margin-bottom:.75rem;border-bottom:1px solid var(--border-color);padding-bottom:.5rem}.section-value{font-size:.875rem;font-weight:600;color:var(--text-primary)}.control-section label{color:var(--text-primary);font-size:.875rem;font-weight:500}.control-section label,.slider-value{margin-top:1rem}.control-group{display:flex;flex-direction:column;gap:.5rem}.label-row{display:flex;justify-content:space-between;align-items:center}.slider-container{display:flex;align-items:center}.slider-value{font-weight:600;color:var(--text-primary);font-size:.875rem}.control-section input[type=range]{flex:1;height:6px;background:var(--border-color);outline:none;border-radius:3px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.control-section input[type=range].hue-slider{background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.control-section input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;background:var(--primary-bg);border:2px solid var(--accent-color);border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0000001a}.control-section input[type=range]::-moz-range-thumb{width:18px;height:18px;background:var(--primary-bg);border:2px solid var(--accent-color);border-radius:50%;cursor:pointer;box-shadow:0 1px 3px #0000001a}.control-section select{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--primary-bg);color:var(--text-primary);font-size:.875rem;cursor:pointer}.control-section select:focus{outline:none;border-color:var(--accent-color)}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.875rem;font-weight:500;color:var(--text-primary)}.checkbox-label input[type=checkbox]{width:16px;height:16px;border:2px solid var(--border-color);border-radius:3px;cursor:pointer;-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--primary-bg);position:relative}.checkbox-label input[type=checkbox]:checked{background:var(--accent-color);border-color:var(--accent-color)}.checkbox-label input[type=checkbox]:checked:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:12px;font-weight:700}.checkbox-label input[type=checkbox]:focus{outline:2px solid var(--accent-color);outline-offset:2px}.graph-controls{display:flex;background:var(--primary-bg);border-bottom:1px solid var(--border-color);padding:0;gap:0}.graph-controls button{width:120px;padding:1rem;border:none;border-bottom:3px solid transparent;background:transparent;color:var(--text-secondary);border-radius:0;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.graph-controls button:hover{color:var(--text-primary);border-bottom-color:var(--border-color)}.graph-controls button.active{color:var(--accent-color);border-bottom-color:var(--accent-color);font-weight:500}.graph{flex:1;padding:2rem;display:flex;align-items:center;justify-content:center;color:var(--text-secondary)}.palette,.minor-steps-controls{display:flex;flex-direction:column;gap:1rem}.minor-steps-buttons{display:flex;gap:.5rem}.add-btn,.clear-btn{padding:.5rem 1rem;border:1px solid var(--border-color);background:var(--primary-bg);color:var(--text-primary);border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.add-btn:hover,.clear-btn:hover{background:var(--secondary-bg)}.step-selector{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--primary-bg);color:var(--text-primary);font-size:.875rem;cursor:pointer}.view-graph-link{color:var(--text-secondary);font-size:.875rem;font-weight:400;text-decoration:underline;cursor:pointer;transition:color .2s}.view-graph-link:hover{color:var(--accent-color)}.graph-container{width:100%;height:100%;display:flex;flex-direction:column;background:var(--primary-bg);padding:0 3rem 3rem}.graph-title{margin:0;padding:1rem 2rem;font-size:1.5rem;font-weight:600;color:var(--text-primary);text-align:center;background:var(--primary-bg)}.graph-content{flex:1;position:relative;background:var(--primary-bg)}.graph-curve-svg{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1}.graph-dot{position:absolute;width:3rem;height:3rem;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:2;transform:translate(-50%,50%);border:2px solid rgba(255,255,255,.3);box-shadow:0 2px 8px #0000}.graph-dot:hover{transform:translate(-50%,50%) scale(1.1);box-shadow:0 4px 12px #00000026}.dot-value{font-size:.75rem;font-weight:600;margin:2px -4px 0;line-height:1}.dot-step{font-size:.75rem;opacity:.8;margin-top:2px;line-height:1}.graph-placeholder{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:1rem;background:var(--secondary-bg)}@media (max-width: 768px){.graph-title{font-size:1.25rem;padding:1rem}.graph-dot{width:50px;height:50px}.dot-value{font-size:.75rem}.dot-step{font-size:.625rem}}.bezier-editor{display:flex;flex-direction:column;gap:.75rem;width:100%}.bezier-svg{width:100%;display:block;aspect-ratio:1 / 1;height:auto}.bezier-inputs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.bezier-inputs label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;color:var(--text-secondary);margin-top:0}.bezier-inputs label:nth-child(1),.bezier-inputs label:nth-child(2){color:#2563eb}.bezier-inputs label:nth-child(3),.bezier-inputs label:nth-child(4){color:#f97316}.bezier-inputs input[type=number]{padding:.35rem .5rem;border:1px solid var(--border-color);border-radius:4px;background:var(--primary-bg);color:var(--text-primary)}.handle{cursor:pointer}.tooltip-container{position:relative;display:inline-block;cursor:pointer}.tooltip-content{position:absolute;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px;background:#000000e6;color:#fff;padding:.5rem .75rem;border-radius:4px;font-size:.75rem;font-weight:500;white-space:nowrap;z-index:1000;box-shadow:0 2px 8px #0003}.tooltip-content:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border:6px solid transparent;border-top-color:#000000e6}.tooltip-content{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.palette-preview{height:100%;display:flex;flex-direction:column;background:var(--primary-bg)}.palette-colors{flex:1;overflow-y:auto;border-radius:.5rem}.palette-placeholder{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);font-size:1rem}.color-swatch{height:50px;position:relative;transition:all .2s ease}.color-swatch:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.color-content{position:relative;width:100%;height:100%;display:flex;align-items:center;gap:16px;padding:16px}.color-index{flex:1 0 auto;font-size:12px;font-weight:700;min-width:0;min-height:1px}.contrast-scores{display:flex;gap:16px}.contrast-score{width:80px;display:flex;align-items:center;justify-content:flex-end;gap:6px}.contrast-value{font-size:12px;font-weight:400;white-space:nowrap}.contrast-value-white{color:#fff}.contrast-value-black{color:#000}.wcag-badge{height:20px;width:32px;border-radius:3px;display:flex;align-items:center;justify-content:center;padding:2px 8px}.wcag-badge span{font-size:10px;font-weight:700;color:#fff;white-space:nowrap}.wcag-badge[style*="rgb(224, 183, 0)"] span{color:#1a1600}.color-hex{font-size:12px;font-weight:700;font-family:JetBrains Mono,Monaco,Consolas,Courier New,monospace;cursor:pointer;transition:all .3s ease;position:relative;white-space:nowrap;text-align:right;min-width:70px}.color-hex:hover{opacity:.8}.color-hex.copied{transform:scale(1.1);animation:copyPulse .6s ease-out}@keyframes copyPulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.8}to{transform:scale(1.1);opacity:1}}.copy-feedback{position:absolute;right:0;top:-20px;font-size:12px;padding:4px 8px;border-radius:4px;background:#000c;color:#fff;opacity:0;transform:translateY(10px);transition:all .3s ease}.copy-feedback{position:absolute;top:-2rem;right:0;background:#22c55ee6;color:#fff;padding:.25rem .5rem;border-radius:4px;font-size:.75rem;font-weight:500;pointer-events:none;opacity:0;transform:translateY(10px);transition:all .3s ease;z-index:10}.copy-feedback.show{opacity:1;transform:translateY(0)}.wcag-rating{padding:.125rem .375rem;border-radius:3px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.wcag-aaa{background:#22c55ecc;color:#fff}.wcag-aa{background:#f59e0bcc;color:#fff}.wcag-a{background:#ef4444cc;color:#fff}.wcag-fail{background:#dc2626cc;color:#fff}.color-hsl{font-size:.75rem;opacity:.9;font-family:JetBrains Mono,Monaco,Consolas,Courier New,monospace;margin-bottom:.5rem}.accessibility-info{display:flex;flex-direction:column;align-items:center;gap:.25rem}.accessibility-badge{padding:.125rem .375rem;border-radius:3px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.accessibility-badge.aaa{background:#22c55e;color:#fff}.accessibility-badge.aa{background:#f59e0b;color:#fff}.accessibility-badge.a{background:#ef4444;color:#fff}.accessibility-badge.fail{background:#dc2626;color:#fff}.contrast-ratio{font-size:.625rem;opacity:.8;font-weight:500}@media (max-width: 768px){.palette-title{font-size:1rem;padding:.75rem}.color-swatch{height:70px}.color-content{padding:.375rem}.color-hex{font-size:.875rem}.color-hsl{font-size:.625rem}}.export-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.export-modal{background:var(--primary-bg);border-radius:8px;box-shadow:0 4px 20px #00000026;width:90%;max-width:600px;height:min(80vh,600px);display:flex;flex-direction:column}.export-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid var(--border-color)}.export-modal-header h2{margin:0;color:var(--text-primary);font-size:1.25rem;font-weight:600}.close-button{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer;padding:.25rem;border-radius:4px;transition:all .2s;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.close-button:hover{background-color:var(--secondary-bg);color:var(--text-primary)}.export-format-tabs{display:flex;border-bottom:1px solid var(--border-color)}.format-tab{flex:1;padding:.75rem 1rem;background:none;border:none;color:var(--text-secondary);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;border-bottom:2px solid transparent}.format-tab:hover{background-color:var(--secondary-bg);color:var(--text-primary)}.format-tab.active{color:var(--accent-color);background-color:var(--secondary-bg);border-bottom-color:var(--accent-color)}.export-content{flex:1;overflow:hidden;display:flex;flex-direction:column}.export-preview{flex:1;overflow-y:auto;padding:1rem;background-color:var(--secondary-bg);min-height:0}.export-code{margin:0;padding:1rem;background-color:#f8f9fa;border:1px solid var(--border-color);border-radius:4px;font-family:JetBrains Mono,Monaco,Consolas,Courier New,monospace;font-size:.875rem;line-height:1.5;color:#2d3748;white-space:pre-wrap;word-break:break-all;overflow-x:auto}.export-actions{padding:1rem 1.5rem;border-top:1px solid var(--border-color);display:flex;gap:.75rem;align-items:center}.export-options{display:flex;align-items:center;gap:.75rem}.export-option{display:inline-flex;align-items:center;gap:.4rem;font-size:.8125rem;color:var(--text-secondary)}.export-option input{width:16px;height:16px}.export-buttons{display:flex;gap:.75rem;margin-left:auto}.copy-button,.download-button{padding:.625rem 1.25rem;border:1px solid var(--border-color);border-radius:4px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.copy-button{background:var(--primary-bg);color:var(--text-primary)}.copy-button:hover:not(:disabled){background:var(--secondary-bg)}.copy-button:disabled{background:var(--accent-color);color:#fff;cursor:default}.download-button{background:var(--accent-color);color:#fff;border-color:var(--accent-color)}.download-button:hover{background:var(--accent-hover);border-color:var(--accent-hover)}@media (max-width: 768px){.export-modal{width:95%;height:90vh}.export-modal-header{padding:1rem}.export-modal-header h2{font-size:1.125rem}.format-tab{padding:.5rem;font-size:.8125rem}.export-code{font-size:.8125rem}.export-actions{flex-direction:column;align-items:stretch;gap:.5rem}.export-options{justify-content:flex-start}.export-buttons{margin-left:0;width:100%;justify-content:flex-end}}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#000000de;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}body{margin:0;min-width:320px;min-height:100vh;width:100vw;height:100vh;overflow:hidden}#root{width:100%;height:100%}
