:root{font-family:Plus Jakarta Sans,Inter,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#ffffffde;background-color:#0a0a0a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}html,body{margin:0;padding:0;width:100%;min-height:100vh;overflow-x:hidden}#root{width:100%;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.app{min-height:100vh;width:100%;max-width:100vw;box-sizing:border-box;background:#0a0a0a;color:#f5f5f5;font-family:Plus Jakarta Sans,Inter,-apple-system,BlinkMacSystemFont,sans-serif;padding:2rem}.onboarding-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem;animation:onboardingFadeIn .3s ease-out}@keyframes onboardingFadeIn{0%{opacity:0}to{opacity:1}}.onboarding-backdrop{position:absolute;inset:0;background:linear-gradient(160deg,#140a1ef2,#0a0f19f2,#0f0a14f2);cursor:pointer}.onboarding-card{position:relative;width:100%;max-width:480px;padding:2.5rem 2rem;background:linear-gradient(180deg,#1a1a22,#141419);border:1px solid #2a2a35;border-radius:16px;box-shadow:0 24px 48px #00000080,0 0 0 1px #ffffff0a inset;animation:onboardingCardIn .35s cubic-bezier(.16,1,.3,1)}.onboarding-card--step-0{border-color:#ffb46440;box-shadow:0 24px 48px #00000080,0 0 60px #ffb46414,0 0 0 1px #ffb4641a inset}.onboarding-card--step-1{border-color:#8c64ff40;box-shadow:0 24px 48px #00000080,0 0 60px #8c64ff14,0 0 0 1px #8c64ff1a inset}.onboarding-card--step-2{border-color:#ff8ca040;box-shadow:0 24px 48px #00000080,0 0 60px #ff8ca014,0 0 0 1px #ff8ca01a inset}@keyframes onboardingCardIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.onboarding-visual{display:flex;justify-content:center;margin-bottom:1.5rem;min-height:80px}.onboarding-icon--photo{position:relative;width:72px;height:56px}.onboarding-icon__frame{display:block;position:absolute;inset:0;border:2px solid rgba(255,180,100,.5);border-radius:6px;animation:onboardingFramePulse 2.5s ease-in-out infinite}@keyframes onboardingFramePulse{0%,to{opacity:.6;box-shadow:0 0 #ffb46433}50%{opacity:1;box-shadow:0 0 20px 2px #ffb46426}}.onboarding-icon__dot{position:absolute;width:10px;height:10px;border-radius:50%;animation:onboardingDotAppear 2s ease-out infinite}.onboarding-icon__dot--1{top:8px;left:12px;background:#ff6b6b;animation-delay:.1s}.onboarding-icon__dot--2{top:8px;right:12px;background:#4ecdc4;animation-delay:.3s}.onboarding-icon__dot--3{bottom:8px;left:12px;background:#ffe66d;animation-delay:.5s}.onboarding-icon__dot--4{bottom:8px;right:12px;background:#95e1d3;animation-delay:.7s}@keyframes onboardingDotAppear{0%{opacity:0;transform:scale(.5)}40%,to{opacity:1;transform:scale(1)}}.onboarding-icon--sections{display:flex;flex-direction:column;gap:8px;width:64px}.onboarding-icon__bar{height:8px;border-radius:4px;background:linear-gradient(90deg,#8c64ffcc,#6496ffcc);transform-origin:left;animation:onboardingBarSlide 1.8s ease-out infinite}.onboarding-icon__bar--1{width:100%;animation-delay:0s}.onboarding-icon__bar--2{width:85%;animation-delay:.15s}.onboarding-icon__bar--3{width:70%;animation-delay:.3s}.onboarding-icon__bar--4{width:55%;animation-delay:.45s}@keyframes onboardingBarSlide{0%{opacity:.3;transform:scaleX(0)}50%{opacity:1;transform:scaleX(1)}to{opacity:1;transform:scaleX(1)}}.onboarding-icon--skin{position:relative;width:64px;height:64px}.onboarding-icon__circle{position:absolute;inset:0;border:2px solid rgba(255,140,160,.5);border-radius:50%;background:#ffb4a014;animation:onboardingCircleBreathing 2.5s ease-in-out infinite}@keyframes onboardingCircleBreathing{0%,to{transform:scale(1);opacity:.8}50%{transform:scale(1.05);opacity:1}}.onboarding-icon__picker{position:absolute;top:50%;left:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border:2px solid rgba(255,100,120,.9);border-radius:50%;background:#ff8ca04d;animation:onboardingPickerPulse 1.5s ease-in-out infinite}@keyframes onboardingPickerPulse{0%,to{transform:scale(1);box-shadow:0 0 #ff8ca066}50%{transform:scale(1.1);box-shadow:0 0 0 6px #ff8ca000}}.onboarding-content{animation:onboardingContentIn .35s ease-out}@keyframes onboardingContentIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.onboarding-skip{position:absolute;top:1.25rem;right:1.25rem;padding:.25rem .5rem;font-size:.85rem;color:#888;background:none;border:none;cursor:pointer;transition:color .2s}.onboarding-skip:hover{color:#ccc}.onboarding-title{margin:0 0 1rem;font-size:1.75rem;font-weight:600;color:#fff;letter-spacing:-.02em;line-height:1.3}.onboarding-card--step-0 .onboarding-title{color:#ffd4a8}.onboarding-card--step-1 .onboarding-title{color:#c4b4ff}.onboarding-card--step-2 .onboarding-title{color:#ffb8c4}.onboarding-body{margin:0 0 2rem;font-size:1.15rem;color:#bbb;line-height:1.6;max-width:40ch;text-align:justify;-webkit-hyphens:auto;hyphens:auto}.onboarding-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem}.onboarding-dots{display:flex;gap:.5rem}.onboarding-dot{width:8px;height:8px;border-radius:50%;background:#444;transition:background .3s,transform .3s}.onboarding-card--step-0 .onboarding-dot.active{background:#ffb366}.onboarding-card--step-1 .onboarding-dot.active{background:#8c64ff}.onboarding-card--step-2 .onboarding-dot.active{background:#ff6b8a}.onboarding-btn{padding:.6rem 1.5rem;font-size:.95rem;font-weight:500;color:#0a0a0a;background:linear-gradient(135deg,#f0f0f0,#e8e8e8);border:none;border-radius:10px;cursor:pointer;transition:transform .2s,box-shadow .2s}.onboarding-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #ffffff26}.upload-screen{display:flex;flex-direction:column;min-height:calc(100vh - 4rem)}.app-header{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:center;margin-bottom:2rem}.app-header--upload{grid-template-columns:1fr;text-align:center;margin-bottom:1.5rem}.upload-hero-title{font-family:Plus Jakarta Sans,sans-serif;font-size:4rem;font-weight:700;letter-spacing:-.04em;line-height:1.15;margin:0 0 .1rem;padding-bottom:.15em;background:linear-gradient(to bottom right,#d4ca38,#c53ba2);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.app-header--upload .subtitle{margin:0 auto}.header-title{min-width:0}.header-actions{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.new-image-btn{padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:#ccc;background:#252525;border:1px solid #444;border-radius:6px;cursor:pointer;transition:all .2s}.new-image-btn:hover{color:#fff;background:#333;border-color:#555}.feedback-btn{font-size:.8rem;color:#666;background:none;border:none;cursor:pointer;text-decoration:none;padding:.25rem 0;transition:color .2s}.feedback-btn:hover{color:#999}header h1{font-family:Plus Jakarta Sans,sans-serif;font-size:2.5rem;font-weight:700;margin:0 0 .25rem;letter-spacing:-.04em;line-height:1.15;padding-bottom:.15em;background:linear-gradient(to bottom right,#aebaf8,#fff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.subtitle{font-family:Plus Jakarta Sans,sans-serif;font-weight:500;font-size:.95rem;color:#888;margin:0;letter-spacing:.01em}.upload-screen .upload-zone{display:flex;flex:1;justify-content:center;align-items:center;min-height:200px;margin-top:-3rem}.upload-box{display:flex;align-items:center;justify-content:center;width:100%;max-width:500px;height:200px;border:2px dashed #555;border-radius:8px;background:#1e1e1e;cursor:pointer;transition:border-color .2s,background .2s}.upload-box:hover:not(.loading){border-color:#777;background:#252525}.upload-box.loading{opacity:.7;cursor:wait}.upload-progress{padding:1.5rem 1.75rem;width:100%;max-width:340px;background:linear-gradient(180deg,#1a1a22,#141419);border:1px solid #2a2a35;border-radius:12px;box-shadow:0 8px 24px #0006,0 0 0 1px #ffffff08 inset}.upload-progress__steps{display:flex;flex-direction:column;gap:1rem}.upload-step{display:flex;align-items:center;gap:1rem;font-size:1rem;color:#888;text-align:justify;-webkit-hyphens:auto;hyphens:auto;transition:color .3s}.upload-step--prepare.upload-step--active{color:#ffb366}.upload-step--prepare.upload-step--done{color:#6bcf7f}.upload-step--prepare.upload-step--failed{color:#ff6b6b}.upload-step--upload.upload-step--active{color:#c4b4ff}.upload-step--upload.upload-step--done{color:#6bcf7f}.upload-step--upload.upload-step--failed{color:#ff6b6b}.upload-step--analyze.upload-step--active{color:#ffb8c4}.upload-step--analyze.upload-step--done{color:#6bcf7f}.upload-step--analyze.upload-step--failed{color:#ff6b6b}.upload-step__graphic{flex-shrink:0;width:36px;display:flex;align-items:center;justify-content:center}.upload-step__label{max-width:38ch;line-height:1.4}.upload-step-visual{position:relative;display:block}.upload-step-visual--photo{width:36px;height:28px}.upload-step-visual__frame{display:block;position:absolute;inset:0;border:2px solid currentColor;border-radius:4px;opacity:.5}.upload-step--active .upload-step-visual__frame,.upload-step--done .upload-step-visual__frame{animation:uploadFramePulse 1.5s ease-in-out infinite}.upload-step--failed .upload-step-visual__frame{border-color:#ff6b6b;opacity:.8}@keyframes uploadFramePulse{0%,to{opacity:.6}50%{opacity:1}}.upload-step-visual__dot{position:absolute;width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.4}.upload-step-visual__dot--1{top:4px;left:6px}.upload-step-visual__dot--2{top:4px;right:6px;background:#4ecdc4}.upload-step-visual__dot--3{bottom:4px;left:6px;background:#ffe66d}.upload-step-visual__dot--4{bottom:4px;right:6px;background:#95e1d3}.upload-step--active .upload-step-visual__dot,.upload-step--done .upload-step-visual__dot{animation:uploadDotBlink 1.2s ease-in-out infinite}.upload-step-visual__dot--2{animation-delay:.15s}.upload-step-visual__dot--3{animation-delay:.3s}.upload-step-visual__dot--4{animation-delay:.45s}.upload-step--done .upload-step-visual__dot{opacity:1;animation:none}@keyframes uploadDotBlink{0%,to{opacity:.5}50%{opacity:1}}.upload-step-visual--upload{width:36px;height:28px}.upload-step-visual__arrow{position:absolute;left:4px;top:50%;margin-top:-6px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:10px solid currentColor;opacity:.6}.upload-step--active .upload-step-visual__arrow{animation:uploadArrowMove 1.2s ease-in-out infinite}.upload-step--done .upload-step-visual__arrow{opacity:1;animation:none}@keyframes uploadArrowMove{0%,to{transform:translate(0);opacity:.5}50%{transform:translate(6px);opacity:1}}.upload-step-visual__bar{position:absolute;left:18px;top:50%;margin-top:-3px;width:14px;height:6px;background:linear-gradient(90deg,currentColor,rgba(255,255,255,.5));border-radius:3px;opacity:.7}.upload-step-visual--analyze{width:36px;height:28px}.upload-step-visual__ring{position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid currentColor;border-radius:50%;opacity:.6}.upload-step--active .upload-step-visual__ring{animation:uploadRingPulse 1.5s ease-in-out infinite}.upload-step--done .upload-step-visual__ring{opacity:1;animation:none}@keyframes uploadRingPulse{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.08);opacity:1}}.upload-step-visual__center{position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;background:currentColor;border-radius:50%;opacity:.8}.upload-step--active .upload-step-visual__center{animation:uploadCenterPulse 1.2s ease-in-out infinite}.upload-step--done .upload-step-visual__center{opacity:1;animation:none}@keyframes uploadCenterPulse{0%,to{transform:scale(1);opacity:.7}50%{transform:scale(1.2);opacity:1}}.upload-step--done .upload-step-visual:after{content:"✓";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:1rem;font-weight:700;color:#6bcf7f;z-index:1}.upload-step--failed .upload-step-visual:after{content:"✗";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:1rem;font-weight:700;color:#ff6b6b;z-index:1}.workspace{width:100%;max-width:min(1400px,100%);margin:0 auto;box-sizing:border-box}.error{background:#3d1a1a;color:#ff6b6b;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem}.main-row{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:start;min-width:0}@media(max-width:900px){.main-row{grid-template-columns:1fr}}.image-panel{overflow:hidden}.image-panel img{display:block;width:100%;height:auto;max-height:500px;object-fit:contain;border:none;outline:none;vertical-align:bottom}.controls{padding:1rem 1.5rem;border-top:1px solid #333}.controls label{display:block;margin-bottom:1rem;font-size:.9rem;color:#ddd}.controls label:last-child{margin-bottom:0}.controls input[type=range]{display:block;width:100%;margin-top:.35rem;accent-color:#ff5a5f}.chart-panel{background:#1e1e1e;border-radius:10px;border:1px solid #333;padding:1.5rem;position:relative}.chart-panel h3{margin:0 0 1rem;font-size:1.1rem;color:#fff}.spinner{position:absolute;top:50%;left:50%;width:24px;height:24px;margin:-12px 0 0 -12px;border:2px solid #444;border-top-color:#ff5a5f;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stats{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1rem;font-size:.85rem;color:#aaa}.stats span{background:#252525;padding:.35rem .6rem;border-radius:4px}.mode-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem}.mode-tabs button{padding:.5rem 1.25rem;background:#252525;border:1px solid #555;border-radius:6px;color:#ccc;font-size:.95rem;cursor:pointer;transition:all .2s}.mode-tabs button:hover{background:#333;color:#fff}.mode-tabs button.active{background:#ff5a5f;border-color:#ff5a5f;color:#fff}.color-teacher h2{font-size:1.25rem;color:#fff;margin:0 0 1rem}.ct-mode-section{padding:1.25rem 1.5rem;margin-bottom:1rem;background:linear-gradient(135deg,#ff5a5f0f,#ff5a5f05);border:1px solid rgba(255,90,95,.2);border-radius:10px}.ct-sub-tabs{display:flex;gap:.5rem;margin-bottom:.75rem}.ct-sub-tabs button{padding:.6rem 1.25rem;font-size:.95rem;font-weight:500;background:#252525;border:1px solid #444;border-radius:8px;color:#999;cursor:pointer;transition:all .2s}.ct-sub-tabs button:hover{background:#333;color:#fff}.ct-sub-tabs button.active{background:#ff5a5f;border-color:#ff5a5f;color:#fff}.ct-mode-description{font-size:.95rem;color:#aaa;margin:0;line-height:1.5;font-style:italic}.ct-skin-section{display:flex;flex-direction:column;justify-content:center;padding:.6rem 1rem;margin-bottom:1rem;min-height:0;background:#1a1a1e;border:1px solid #2a2a30;border-radius:8px}.ct-checkboxes{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-bottom:.25rem}.ct-checkboxes label{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#bbb;cursor:pointer}.ct-checkboxes input[type=checkbox]{accent-color:#ff8a8e}.ct-creative-intent{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}.ct-creative-label{font-size:.9rem;color:#aaa}.ct-intent-btn{padding:.25rem .6rem;font-size:.85rem;background:#252525;border:1px solid #444;border-radius:4px;color:#999;cursor:pointer;transition:all .2s}.ct-intent-btn:hover{background:#333;color:#fff}.ct-intent-btn.active{background:#ff5a5f;border-color:#ff5a5f;color:#fff}.ct-skin-section .ct-caption{font-size:.85rem;color:#888;margin:0 0 .25rem}.ct-skin-section .ct-success{font-size:.9rem;color:#4caf50;margin:0}.ct-success{font-size:.9rem;color:#4caf50;margin:0 0 1rem}.image-panel img.clickable{cursor:crosshair}.ct-zoom-controls{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#252525;border-bottom:1px solid #444}.ct-zoom-controls button{padding:.25rem .6rem;background:#333;border:1px solid #555;border-radius:4px;color:#ddd;font-size:1rem;cursor:pointer}.ct-zoom-controls button:hover{background:#444;color:#fff}.ct-zoom-controls span{font-size:.9rem;color:#999;min-width:3rem;text-align:center}.ct-image-viewport{overflow:hidden;position:relative;width:100%;max-height:500px;min-height:200px}.ct-image-viewport.clickable{cursor:crosshair}.ct-image-inner{flex-shrink:0}.report-panel{background:#1e1e1e;border-radius:10px;border:1px solid #333;padding:1.5rem}.report-section{margin-bottom:1.5rem}.report-section:last-of-type{margin-bottom:0}.report-section .section-purpose{font-size:.85rem;color:#888;margin:-.25rem 0 .5rem}.report-section h4{font-size:1rem;color:#ff5a5f;margin:0 0 .5rem}.report-section .summary{font-size:.95rem;color:#fff;margin:0 0 .35rem;line-height:1.5}.report-section .detail{font-size:.85rem;color:#aaa;margin:0;line-height:1.5}.perceptual-diagnosis-section .diagnosis-list{list-style:none;margin:0;padding:0}.perceptual-diagnosis-section .diagnosis-item{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #333}.perceptual-diagnosis-section .diagnosis-item:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.perceptual-diagnosis-section .diagnosis-label{font-size:.95rem;color:#fff;font-weight:500}.perceptual-diagnosis-section .diagnosis-confidence{font-size:.7rem;color:#888;margin-left:.5rem;text-transform:uppercase}.perceptual-diagnosis-section .diagnosis-why{font-size:.85rem;color:#aaa;margin:.25rem 0 0;line-height:1.4}.perceptual-diagnosis-section .diagnosis-fix{font-size:.85rem;color:#bbb;margin:.35rem 0 0;line-height:1.4}.perceptual-diagnosis-section .perceptual-subsection-title{font-size:.85rem;color:#aaa;margin:.75rem 0 .5rem;font-weight:500}.perceptual-diagnosis-section .perceptual-subsection-title:first-of-type{margin-top:0}.perceptual-diagnosis-section .whats-working{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid #333}.perceptual-diagnosis-section .whats-working.whats-working-only{margin-top:0;padding-top:0;border-top:none}.perceptual-diagnosis-section .whats-working-list{list-style:disc;margin:0;padding-left:1.25rem}.perceptual-diagnosis-section .whats-working-list li{font-size:.9rem;color:#bbb;margin-bottom:.35rem;line-height:1.4}.show-the-work{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid #333}.show-the-work h4{font-size:1rem;color:#ff5a5f;margin:0 0 .5rem}.mini-stats{display:flex;flex-wrap:wrap;gap:.75rem;margin:.5rem 0 .75rem;font-size:.8rem;color:#999}.mini-stats span{background:#252525;padding:.25rem .5rem;border-radius:4px}.technical-details{margin-top:.5rem;font-size:.8rem}.technical-details summary{cursor:pointer;color:#888;-webkit-user-select:none;user-select:none}.technical-details summary:hover{color:#aaa}.technical-metrics{margin-top:.5rem}.mini-vectorscope{margin-top:.75rem;padding-top:22px;height:200px;overflow:visible}.vectorscope-with-labels{position:relative;overflow:visible}.vectorscope-quadrant-labels{position:absolute;inset:10px;pointer-events:none}.vectorscope-quadrant-labels span{position:absolute;font-size:9px;font-weight:500;letter-spacing:.04em;opacity:.45;white-space:nowrap}.vectorscope-quadrant-labels .q-tr{top:-6px;left:22%;transform:translate(-50%);color:#ff8a65}.vectorscope-quadrant-labels .q-tl{top:-6px;left:78%;transform:translate(-50%);color:#8bc34a}.vectorscope-quadrant-labels .q-bl{bottom:18px;left:22%;transform:translate(-50%);color:#4dd0e1}.vectorscope-quadrant-labels .q-br{bottom:18px;left:78%;transform:translate(-50%);color:#b39ddb}.vectorscope-quadrant-labels--large{inset:20px}.vectorscope-quadrant-labels--large span{font-size:10px}.vectorscope-quadrant-labels--large .q-tr{top:-8px;left:22%}.vectorscope-quadrant-labels--large .q-tl{top:-8px;left:78%;transform:translate(-50%)}.vectorscope-quadrant-labels--large .q-bl{bottom:20px;left:22%}.vectorscope-quadrant-labels--large .q-br{bottom:20px;left:78%}
