:root{--color-primary:#1d1d1f;--color-secondary:#86868b;--color-tertiary:#f5f5f7;--color-quaternary:#fbfbfd;--color-accent:#0071e3;--color-accent-hover:#0077ed;--color-surface:#fff;--color-surface-secondary:#f5f5f7;--color-border:#d2d2d7;--color-border-light:#e8e8ed;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px;--spacing-3xl:64px;--radius-sm:6px;--radius-md:12px;--radius-lg:18px;--radius-xl:24px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--color-primary);background-color:var(--color-quaternary);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,system-ui,sans-serif;font-weight:400;line-height:1.47059}*{box-sizing:border-box}body{background:var(--color-quaternary);min-width:320px;min-height:100vh;margin:0}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{letter-spacing:-.022em;margin:0;font-weight:600;line-height:1.07143}h1{letter-spacing:-.03em;font-size:48px;font-weight:700}h2{letter-spacing:-.02em;font-size:32px;font-weight:600}h3{font-size:24px;font-weight:600}p{letter-spacing:-.022em;margin:0;font-size:17px;font-weight:400;line-height:1.47059}button{cursor:pointer;border:none;outline:none;font-family:inherit;font-size:17px;font-weight:400;transition:all .3s cubic-bezier(.25,.46,.45,.94)}button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::-webkit-scrollbar{width:14px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#0003 padding-box content-box;border:3px solid #0000;border-radius:7px}::-webkit-scrollbar-thumb:hover{background:#0000004d padding-box content-box}.drawing-container{width:100%;height:100%}.horizontal-content{gap:var(--spacing-xl);grid-template-columns:1fr 1fr;align-items:start;height:100%;display:grid}.controls-panel,.grid-panel{gap:var(--spacing-md);flex-direction:column;display:flex}.controls-panel h3,.grid-panel h3{color:var(--color-primary);text-align:center;margin:0 0 var(--spacing-md)0;letter-spacing:-.022em;font-size:20px;font-weight:600}.pattern-generator{-webkit-backdrop-filter:blur(20px);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg);background:#fffc;box-shadow:0 4px 20px #0000000f}.pattern-generator h4{margin:0 0 var(--spacing-md)0;color:var(--color-primary);text-align:center;letter-spacing:-.022em;font-size:16px;font-weight:600}.manual-controls{-webkit-backdrop-filter:blur(20px);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);background:#fffc;box-shadow:0 4px 20px #0000000f}.manual-controls h4{margin:0 0 var(--spacing-md)0;color:var(--color-primary);text-align:center;letter-spacing:-.022em;font-size:16px;font-weight:600}.control-buttons{gap:var(--spacing-sm);display:flex}.letter-selector{gap:var(--spacing-sm);margin-bottom:var(--spacing-md);flex-direction:column;display:flex}.letter-selector label{color:var(--color-primary);letter-spacing:-.022em;font-size:14px;font-weight:500}.letter-buttons{gap:var(--spacing-sm);justify-content:center;display:flex}.letter-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;width:40px;height:40px;color:var(--color-secondary);background:0 0;justify-content:center;align-items:center;font-size:18px;font-weight:600;transition:all .3s cubic-bezier(.25,.46,.45,.94);display:flex}.letter-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:#1d1d1f0d;transform:translateY(-1px)}.letter-btn.selected{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:0 2px 8px #00000026}.distortion-slider{gap:var(--spacing-sm);margin-bottom:var(--spacing-md);flex-direction:column;display:flex}.distortion-slider label{color:var(--color-primary);letter-spacing:-.022em;text-align:center;font-size:14px;font-weight:500}.slider{background:var(--color-border-light);appearance:none;cursor:pointer;border-radius:3px;outline:none;width:100%;height:6px}.slider::-webkit-slider-thumb{appearance:none;background:var(--color-primary);cursor:pointer;border:2px solid #fff;border-radius:50%;width:20px;height:20px;transition:all .2s;box-shadow:0 2px 8px #00000026}.slider::-webkit-slider-thumb:hover{transform:scale(1.1);box-shadow:0 4px 12px #0003}.slider::-moz-range-thumb{background:var(--color-primary);cursor:pointer;border:2px solid #fff;border-radius:50%;width:20px;height:20px;box-shadow:0 2px 8px #00000026}.generate-btn{padding:calc(var(--spacing-sm) + var(--spacing-xs))var(--spacing-lg);border:1px solid var(--color-primary);border-radius:var(--radius-md);background:var(--color-primary);color:#fff;cursor:pointer;letter-spacing:-.022em;width:100%;font-size:14px;font-weight:500;transition:all .3s cubic-bezier(.25,.46,.45,.94);box-shadow:0 2px 8px #0000001a}.generate-btn:hover{background:var(--color-secondary);border-color:var(--color-secondary);transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.mode-btn{padding:var(--spacing-md)var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(20px);cursor:pointer;color:var(--color-primary);letter-spacing:-.022em;background:#fffc;flex:1;justify-content:center;align-items:center;font-size:14px;font-weight:500;transition:all .3s cubic-bezier(.25,.46,.45,.94);display:flex;box-shadow:0 1px 3px #0000001a}.mode-btn:hover{border-color:var(--color-secondary);background:#fffffff2;transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.mode-btn.active{color:#fff;border-color:var(--color-primary);-webkit-backdrop-filter:blur(20px);background:#1d1d1ff2}.mode-btn.active:hover{border-color:var(--color-primary);background:#1d1d1f}.clear-btn{color:var(--color-secondary);-webkit-backdrop-filter:blur(20px);background:#86868b1a;border-color:#86868b4d}.clear-btn:hover{color:var(--color-primary);background:#86868b26;border-color:#86868b80}.grid-container{border:2px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);padding:var(--spacing-md);cursor:crosshair;width:fit-content;margin:0 auto;position:relative;overflow:hidden;box-shadow:0 4px 20px #0000000f}.grid-container:before{content:"";background:linear-gradient(45deg,transparent 49%,var(--color-border-light)49%,var(--color-border-light)51%,transparent 51%);opacity:.3;pointer-events:none;background-size:20px 20px;position:absolute;inset:0}.grid-row{display:flex}.grid-cell{border:.5px solid var(--color-border-light);cursor:pointer;z-index:1;width:32px;height:32px;transition:all .15s cubic-bezier(.25,.46,.45,.94);position:relative}.grid-cell:hover{border-color:var(--color-border);box-shadow:inset 0 0 0 1px var(--color-accent)}.grid-cell.empty{background:0 0}.grid-cell.filled{background:var(--color-primary);border-color:var(--color-primary);box-shadow:inset 0 0 0 1px var(--color-primary)}.grid-cell.filled:hover{background:var(--color-secondary);border-color:var(--color-secondary)}.grid-info{text-align:center;color:var(--color-secondary);margin-top:var(--spacing-md)}.grid-info p{margin:var(--spacing-xs)0;font-size:14px;line-height:1.47059}.grid-info .tip{opacity:.8;font-size:12px;font-weight:400}.grid-info strong{color:var(--color-primary);font-weight:600}@media (max-width:1024px){.horizontal-content{gap:var(--spacing-lg);grid-template-columns:1fr}.controls-panel h3,.grid-panel h3{font-size:18px}}@media (max-width:640px){.horizontal-content{gap:var(--spacing-md)}.pattern-generator,.manual-controls{padding:var(--spacing-md)}.controls-panel h3,.grid-panel h3{font-size:16px}.pattern-generator h4,.manual-controls h4{font-size:14px}.letter-btn{width:36px;height:36px;font-size:16px}.control-buttons{gap:var(--spacing-xs);flex-direction:column}.mode-btn,.clear-btn{padding:var(--spacing-sm)var(--spacing-md);font-size:13px}.grid-cell{width:28px;height:28px}.generate-btn{padding:var(--spacing-sm)var(--spacing-md);font-size:14px}}.drawing-mode-section{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.mode-selector{border-radius:var(--radius-lg);border:1px solid var(--color-border);-webkit-backdrop-filter:blur(10px);margin-bottom:var(--spacing-md);background:#f2f2f7cc;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.mode-option{padding:var(--spacing-sm)var(--spacing-md);border-radius:var(--radius-md);color:var(--color-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:13px;font-weight:500;transition:all .3s cubic-bezier(.25,.46,.45,.94);display:flex}.mode-option:hover{color:var(--color-primary);background:#fff9;transform:translateY(-1px)}.mode-option.active{background:var(--color-primary);color:#fff;box-shadow:0 2px 8px #00000026}.mode-option.active:hover{background:var(--color-primary);transform:translateY(0)}.clear-btn{width:100%;padding:calc(var(--spacing-sm) + var(--spacing-xs))var(--spacing-lg);border-radius:var(--radius-md);color:#ff3b30;cursor:pointer;-webkit-backdrop-filter:blur(10px);background:#ff3b300d;border:1px solid #ff3b304d;font-size:14px;font-weight:500;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.clear-btn:hover{color:#d70015;background:#ff3b301a;border-color:#ff3b3080;transform:translateY(-1px);box-shadow:0 2px 8px #ff3b3033}.manual-controls{display:none}.predictor-container{align-items:center;gap:var(--spacing-lg);flex-direction:column;justify-content:flex-start;min-height:360px;display:flex}.predict-btn{padding:var(--spacing-md)var(--spacing-2xl);-webkit-backdrop-filter:blur(20px);color:#fff;border-radius:var(--radius-md);cursor:pointer;letter-spacing:-.022em;background:#1d1d1ff2;border:1px solid #1d1d1f4d;width:100%;max-width:280px;font-size:17px;font-weight:400;transition:all .3s cubic-bezier(.25,.46,.45,.94);position:relative;overflow:hidden;box-shadow:0 2px 8px #0003}.predict-btn:before{content:"";background:linear-gradient(90deg,#0000,#ffffff1a,#0000);width:100%;height:100%;transition:left .5s;position:absolute;top:0;left:-100%}.predict-btn:hover:not(:disabled):before{left:100%}.predict-btn:hover:not(:disabled){background:#1d1d1f;border-color:#86868b80;transform:translateY(-1px);box-shadow:0 8px 20px #00000040}.predict-btn:disabled{color:var(--color-secondary);cursor:not-allowed;background:#86868b4d;border-color:#86868b33;transform:none;box-shadow:0 1px 3px #0000001a}.loading-spinner{align-items:center;gap:var(--spacing-sm);display:flex}.prediction-result{background:var(--color-surface-secondary);width:100%;padding:var(--spacing-lg);border-radius:var(--radius-lg);border:1px solid var(--color-border-light);animation:.6s cubic-bezier(.25,.46,.45,.94) slideUp}.predicted-letter-simple{text-align:center}.predicted-letter-simple h3{margin-bottom:var(--spacing-lg);color:var(--color-secondary);letter-spacing:-.022em;font-size:17px;font-weight:500}.letter-display{color:var(--color-primary);letter-spacing:-.05em;margin:var(--spacing-lg)0;text-shadow:0 2px 8px #0000001a;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,system-ui,sans-serif;font-size:120px;font-weight:700;line-height:1}.confidence-info{margin-top:var(--spacing-lg);padding-top:var(--spacing-md);border-top:1px solid var(--color-border-light)}.confidence-info p{color:var(--color-secondary);margin-bottom:var(--spacing-sm);font-size:15px}.probabilities{gap:var(--spacing-md);margin-top:var(--spacing-sm);justify-content:center;display:flex}.probabilities div{padding:var(--spacing-sm)var(--spacing-md);border-radius:var(--radius-sm);color:var(--color-secondary);background:#86868b1a;font-size:13px;font-weight:500}.error-message{border-radius:var(--radius-lg);padding:var(--spacing-lg);color:#ff3b30;text-align:center;background:#ff3b301a;border:1px solid #ff3b304d;width:100%;animation:.4s cubic-bezier(.25,.46,.45,.94) slideUp}.error-message p{margin:0;font-size:14px;line-height:1.4}.prediction-result{animation:.6s cubic-bezier(.25,.46,.45,.94) slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.predict-btn{width:100%;max-width:none}.letter-display{font-size:96px}.prediction-result{padding:var(--spacing-lg)}}.app{background:var(--color-quaternary);flex-direction:column;min-height:100vh;display:flex}.app-header{text-align:center;padding:var(--spacing-xl)var(--spacing-lg)var(--spacing-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border-light)}.app-header h1{color:var(--color-primary);margin-bottom:var(--spacing-sm);font-size:clamp(28px,3vw,36px);font-weight:700}.subtitle{color:var(--color-secondary);letter-spacing:-.022em;max-width:580px;margin:0 auto;font-size:17px;font-weight:400;line-height:1.47059}.subtitle strong{color:var(--color-primary);font-weight:600}.app-main{padding:var(--spacing-xl)var(--spacing-lg)var(--spacing-3xl);flex:1;width:100%;max-width:1200px;margin:0 auto}.horizontal-layout{gap:var(--spacing-xl);grid-template-columns:2fr 1fr;align-items:start;min-height:600px;display:grid}.drawing-section,.prediction-section{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg);border:1px solid var(--color-border-light);flex-direction:column;height:fit-content;display:flex;box-shadow:0 4px 24px #0000000a}.prediction-section h2{color:var(--color-primary);text-align:center;margin-bottom:var(--spacing-md);letter-spacing:-.02em;font-size:20px;font-weight:600}.app-footer{text-align:center;padding:var(--spacing-md);background:var(--color-surface-secondary);border-top:1px solid var(--color-border-light);color:var(--color-secondary);font-size:15px}.app-footer p{margin:var(--spacing-xs)0}.team{opacity:.8;font-size:13px}@media (max-width:1024px){.horizontal-layout{gap:var(--spacing-lg);grid-template-columns:1fr;min-height:auto}.app-main{padding:var(--spacing-lg)var(--spacing-lg)var(--spacing-xl)}.drawing-section,.prediction-section{min-height:auto}}@media (max-width:640px){.app-header{padding:var(--spacing-lg)var(--spacing-md)var(--spacing-md)}.app-main{padding:var(--spacing-md)var(--spacing-md)var(--spacing-lg)}.drawing-section,.prediction-section{padding:var(--spacing-md)var(--spacing-lg);min-height:auto}.drawing-section h2,.prediction-section h2{margin-bottom:var(--spacing-md);font-size:24px}}.drawing-section,.prediction-section{animation:.8s cubic-bezier(.25,.46,.45,.94) fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
