:root{--primary-bg: #0f172a;--secondary-bg: #1e293b;--accent-color: #3b82f6;--success-color: #10b981;--warning-color: #f59e0b;--text-primary: #f8fafc;--text-secondary: #cbd5e1;--border-color: #334155;--gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);--gradient-success: linear-gradient(135deg, #10b981 0%, #059669 100%);--gradient-card: linear-gradient(145deg, #1e293b 0%, #334155 100%);--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);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--transition-fast: all .15s ease-in-out;--transition-normal: all .3s ease-in-out;--transition-slow: all .5s ease-in-out;--border-radius-sm: 8px;--border-radius-md: 12px;--border-radius-lg: 16px;--border-radius-xl: 20px}*{box-sizing:border-box}body{background:var(--primary-bg);width:100%;max-width:100vw;text-align:center;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0;padding:0;color:var(--text-primary);line-height:1.6}.title{background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-align:center;font-size:3.5rem;font-weight:800;margin:2rem 0 1rem;text-shadow:var(--shadow-lg);transition:var(--transition-normal)}.title.completed{background:var(--gradient-success);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.university-name{text-align:center;margin:1rem 0 2rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}.university-text{font-size:2.5rem;font-weight:800;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:.1em;text-shadow:var(--shadow-md)}.university-subtitle{color:var(--text-secondary);font-size:.9rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;opacity:.8}.welcome-section{margin:2rem auto;max-width:900px;padding:0 1rem}.welcome-card{background:var(--gradient-card);border-radius:var(--border-radius-lg);padding:3rem 2rem;box-shadow:var(--shadow-xl);border:1px solid var(--border-color);text-align:center;position:relative;overflow:hidden;animation:fadeIn .8s ease-out}.welcome-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--gradient-primary)}.welcome-icon{display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;background:var(--gradient-primary);border-radius:50%;margin-bottom:1.5rem;color:#fff;box-shadow:var(--shadow-lg)}.welcome-title{color:var(--text-primary);font-size:2.2rem;font-weight:700;margin-bottom:1rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.welcome-description{color:var(--text-secondary);font-size:1.1rem;line-height:1.7;margin-bottom:2.5rem;max-width:600px;margin-left:auto;margin-right:auto}.welcome-description strong{color:var(--accent-color);font-weight:600;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:2.5rem}.feature-item{background:var(--primary-bg);border-radius:var(--border-radius-md);padding:1.5rem;border:1px solid var(--border-color);transition:var(--transition-normal);text-align:left}.feature-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--accent-color)}.feature-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--gradient-primary);border-radius:var(--border-radius-md);color:#fff;margin-bottom:1rem;flex-shrink:0}.feature-text h4{color:var(--text-primary);font-size:1.1rem;font-weight:600;margin:0 0 .5rem}.feature-text p{color:var(--text-secondary);font-size:.9rem;line-height:1.5;margin:0}.welcome-cta{background:var(--secondary-bg);border-radius:var(--border-radius-md);padding:1.5rem;border:1px solid var(--border-color);position:relative;overflow:hidden}.welcome-cta:before{content:"";position:absolute;inset:0;background:var(--gradient-primary);opacity:.05}.cta-text{color:var(--text-primary);font-size:1.1rem;font-weight:500;margin:0;position:relative;z-index:1}.course-selector-container{display:flex;justify-content:center;align-items:center;margin:2rem 0;padding:0 1rem}.course-selector-header{display:flex;align-items:center;gap:1rem;width:100%;max-width:400px;justify-content:center}.home-button{background:var(--gradient-card);border:2px solid var(--border-color);border-radius:var(--border-radius-lg);padding:.875rem;cursor:pointer;transition:var(--transition-normal);box-shadow:var(--shadow-md);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.home-button:before{content:"";position:absolute;inset:0;background:var(--gradient-primary);opacity:0;transition:var(--transition-normal);z-index:-1}.home-button:hover{border-color:var(--accent-color);transform:translateY(-2px);box-shadow:var(--shadow-lg);color:var(--accent-color)}.home-button:hover:before{opacity:.1}.home-button:active{transform:translateY(0)}.custom-select{position:relative;min-width:300px;max-width:400px}.select-trigger{background:var(--gradient-card);border:2px solid var(--border-color);border-radius:var(--border-radius-lg);padding-left:1rem;padding-right:1rem;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1rem;transition:var(--transition-normal);box-shadow:var(--shadow-md);position:relative;overflow:hidden;min-height:3.5rem}.select-trigger:before{content:"";position:absolute;inset:0;background:var(--gradient-primary);opacity:0;transition:var(--transition-normal);z-index:-1}.select-trigger:hover{border-color:var(--accent-color);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.select-trigger:hover:before{opacity:.1}.select-trigger.active{border-color:var(--accent-color);box-shadow:0 0 0 3px #3b82f61a}.select-content{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.select-text{color:var(--text-secondary);font-size:.9rem;font-weight:400;opacity:.8}.selected-course-info{display:flex;flex-direction:column;align-items:center;gap:.25rem;width:100%;text-align:center}.selected-course-info .course-name{color:var(--text-primary);font-size:1.2rem;font-weight:600;line-height:1.3;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.selected-course-info .course-subtitle{color:var(--text-secondary);font-size:.75rem;font-weight:400;text-transform:uppercase;letter-spacing:.1em;opacity:.7}.selected-course-info{opacity:0;transform:translateY(-10px);transition:var(--transition-normal)}.select-icon{color:var(--text-secondary);transition:var(--transition-fast);flex-shrink:0}.select-trigger.active .select-icon{transform:rotate(180deg);color:var(--accent-color)}.select-options{position:absolute;top:100%;left:0;right:0;background:var(--secondary-bg);border:2px solid var(--border-color);border-top:none;border-radius:0 0 var(--border-radius-lg) var(--border-radius-lg);box-shadow:var(--shadow-xl);z-index:1000;max-height:400px;opacity:0;visibility:hidden;transform:translateY(-10px);transition:var(--transition-normal);overflow:hidden}.select-options.show{opacity:1;visibility:visible;transform:translateY(0)}.search-container{padding:1rem;border-bottom:1px solid var(--border-color);position:relative}.course-search{width:100%;background:var(--primary-bg);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:.75rem 2.5rem .75rem 1rem;color:var(--text-primary);font-family:inherit;font-size:.95rem;transition:var(--transition-fast)}.course-search:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #3b82f61a}.course-search::placeholder{color:var(--text-secondary)}.search-icon{position:absolute;right:1.75rem;top:50%;transform:translateY(-50%);color:var(--text-secondary);pointer-events:none}.options-list{max-height:300px;overflow-y:auto}.select-option{padding:.875rem 1rem;cursor:pointer;color:var(--text-primary);font-size:1rem;transition:var(--transition-fast);border-bottom:1px solid rgba(51,65,85,.3);display:flex;align-items:center;position:relative}.select-option:last-child{border-bottom:none}.select-option:hover{background:var(--primary-bg);color:var(--accent-color);transform:translate(4px)}.select-option.selected{background:var(--accent-color);color:#fff;font-weight:600}.select-option.selected:after{content:"✓";position:absolute;right:1rem;font-weight:700}.select-option.focused{background:var(--primary-bg);color:var(--accent-color);outline:2px solid var(--accent-color);outline-offset:-2px}.select-option.hidden{display:none}.no-results{padding:2rem 1rem;text-align:center;color:var(--text-secondary);font-style:italic}select{display:none!important}.progress-container{display:flex;justify-content:center;gap:1rem;margin:2rem 0;flex-wrap:nowrap;overflow-x:auto}.progress-card{background:var(--gradient-card);padding:1rem 1.5rem;border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);min-width:140px;flex-shrink:0;transition:var(--transition-normal);text-align:center}.progress-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl)}.progress-number{font-size:2rem;font-weight:800;color:var(--accent-color);margin:0}.progress-label{color:var(--text-secondary);font-size:.9rem;margin:.5rem 0 0;text-transform:uppercase;letter-spacing:.5px}.container-grid{display:flex;justify-content:center;width:100%;padding:0 1rem}.grid{display:flex;flex-direction:column;width:100%;max-width:1200px;gap:2rem}.semester-title{background:var(--gradient-card);border-radius:var(--border-radius-lg) var(--border-radius-lg) 0 0;color:var(--text-primary);font-size:1rem;font-weight:600;text-align:center;position:relative;border:1px solid var(--border-color);border-bottom:none;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.semester{display:flex;justify-content:center;gap:1.5rem;padding:1.5rem;background:var(--gradient-card);border-radius:0 0 var(--border-radius-lg) var(--border-radius-lg);box-shadow:var(--shadow-md);transition:var(--transition-normal);overflow-x:auto;border:1px solid var(--border-color);border-top:none;flex-wrap:wrap}.semester:hover{box-shadow:var(--shadow-lg)}.node{width:120px;height:80px;flex-shrink:0;border:2px solid var(--border-color);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);cursor:pointer;z-index:1;background:var(--gradient-card);transition:var(--transition-normal);position:relative;overflow:hidden}.node:before{content:"";position:absolute;inset:0;background:var(--gradient-primary);opacity:0;transition:var(--transition-normal);z-index:-1}.node:hover{transform:translateY(-4px) scale(1.05);box-shadow:var(--shadow-xl);border-color:var(--accent-color)}.node:hover:before{opacity:.1}.node[status=concluida]{border-color:var(--success-color);background:var(--gradient-success);box-shadow:0 0 20px #10b9814d}.node[status=concluida]:hover{transform:translateY(-4px) scale(1.05);box-shadow:0 0 30px #10b98180}.node[status=concluida]>p{color:#fff;font-weight:600}.node>p{color:var(--text-primary);text-align:center;margin:0;padding:1rem .5rem;font-size:.8rem;font-weight:500;height:100%;display:flex;align-items:center;justify-content:center;line-height:1.3}.tooltip{position:absolute;background:var(--secondary-bg);color:var(--text-primary);padding:.75rem 1rem;border-radius:var(--border-radius-md);font-size:.85rem;box-shadow:var(--shadow-lg);z-index:1000;max-width:250px;opacity:0;visibility:hidden;transition:var(--transition-fast);pointer-events:none;border:1px solid var(--border-color)}.tooltip.show{opacity:1;visibility:visible}.container-content{width:100%;display:flex;flex-direction:column;align-items:center;padding:0 1rem}.container-content>h3{margin:2rem 0 1rem;color:var(--text-primary);text-align:center;font-size:1.8rem;font-weight:600;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.container-content>p{width:100%;max-width:800px;color:var(--text-secondary);text-align:justify;text-indent:2rem;font-size:.8rem;line-height:1.7}a{color:var(--accent-color);text-decoration:none;transition:var(--transition-normal);padding:.5rem 1rem;border-radius:var(--border-radius-md);display:inline-block;margin:.5rem}a:hover{color:var(--text-primary);background:var(--accent-color);transform:translateY(-2px);box-shadow:var(--shadow-md)}canvas{border:none;position:relative;z-index:0;pointer-events:none;opacity:.8}.node canvas{filter:drop-shadow(0 0 2px rgba(59,130,246,.3))}.node[status=concluida] canvas{filter:drop-shadow(0 0 4px rgba(16,185,129,.5))}@media screen and (max-width: 768px){.title{font-size:2.5rem;margin:1rem 0}.university-text{font-size:2rem}.university-subtitle{font-size:.8rem}.course-selector-container{margin:1rem;padding:0 .5rem}.course-selector-header{max-width:100%;gap:.75rem}.home-button{padding:.75rem}.selected-course-info .course-name{font-size:1.1rem}.welcome-card{padding:2rem 1.5rem}.welcome-title{font-size:1.8rem}.welcome-description{font-size:1rem}.features-grid{grid-template-columns:1fr;gap:1rem}.feature-item{padding:1rem}.custom-select{min-width:280px;max-width:100%}.select-options{max-height:300px}.options-list{max-height:250px}.progress-container{gap:.75rem;margin:1.5rem 0}.progress-card{min-width:120px;padding:.75rem 1rem}.progress-number{font-size:1.5rem}.progress-label{font-size:.8rem}.semester-title{font-size:1rem}.semester{padding:1rem;gap:1rem}.node{width:100px;height:70px}.node>p{font-size:.7rem;padding:.5rem .25rem}.container-content>h3{font-size:1.5rem}.container-content>p{font-size:.9rem;text-indent:1.5rem}.contact-links{gap:1rem}.contact-links a{width:55px;height:55px}.footer-bottom-content{flex-direction:column;text-align:center;gap:.75rem}}@media screen and (max-width: 480px){.title{font-size:2rem}.university-text{font-size:1.6rem}.university-subtitle{font-size:.75rem}.course-selector-container{margin:.5rem;padding:0 .25rem}.course-selector-header{gap:.5rem}.home-button{padding:.625rem}.selected-course-info .course-name{font-size:1rem}.welcome-card{padding:1.5rem 1rem;margin:.5rem}.welcome-icon{width:60px;height:60px}.welcome-title{font-size:1.5rem}.welcome-description{font-size:.95rem}.feature-icon{width:40px;height:40px}.feature-text h4{font-size:1rem}.feature-text p{font-size:.85rem}.cta-text{font-size:1rem}.semester-title{font-size:.8rem}.semester{padding:.75rem;gap:.75rem}.custom-select{min-width:250px}.select-trigger,.select-text{font-size:1rem}.search-container{padding:.75rem}.course-search{padding:.625rem 2rem .625rem .75rem;font-size:.9rem}.select-option{padding:.75rem;font-size:.95rem}.node{width:80px;height:60px}.node>p{font-size:.6rem;padding:.25rem}.progress-container{gap:.5rem;margin:1rem 0}.progress-card{min-width:90px;padding:.5rem .75rem}.progress-number{font-size:1.25rem}.progress-label{font-size:.7rem;margin:.25rem 0 0}.footer{margin-top:2rem}.footer-section h4{font-size:1.1rem}.contact-links{gap:.75rem}.contact-links a{width:50px;height:50px;padding:.75rem}.occam-quote{padding:1.25rem}.occam-quote p{font-size:.85rem}.quote-author{font-size:.75rem}.footer-bottom{padding:1rem}.footer-bottom-content{flex-direction:column;text-align:center;gap:.5rem}.footer-bottom p{font-size:.8rem}}@media screen and (max-width: 480px) and (orientation: portrait){.progress-container{gap:.25rem;margin:.75rem 0}.progress-card{min-width:70px;padding:.4rem .5rem}.progress-number{font-size:1rem}.progress-label{font-size:.6rem;margin:.2rem 0 0;line-height:1.2}}.footer{background:var(--secondary-bg);border-top:1px solid var(--border-color);margin-top:1rem;position:relative}.footer:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--gradient-primary)}.footer-content{max-width:800px;margin:0 auto;text-align:center}.footer-section h4{color:var(--text-primary);font-size:1.3rem;font-weight:600;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.contact-links{display:flex;justify-content:center;gap:1.5rem}.contact-links a{display:flex;align-items:center;justify-content:center;color:var(--text-secondary);text-decoration:none;transition:var(--transition-normal);padding:1rem;background:var(--gradient-card);border-radius:var(--border-radius-lg);border:1px solid var(--border-color);box-shadow:var(--shadow-md);width:60px;height:60px}.contact-links a:hover{color:var(--accent-color);transform:translateY(-3px) scale(1.1);box-shadow:var(--shadow-lg);border-color:var(--accent-color)}.contact-links svg{color:var(--accent-color);flex-shrink:0}.footer-bottom{background:var(--primary-bg);border-top:1px solid var(--border-color);padding:.75rem .5rem}.footer-bottom-content{max-width:1200px;margin:0 auto;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:.5rem}.footer-bottom p{margin:0;color:var(--text-secondary);font-size:.85rem}.footer-tech{display:flex;align-items:center;gap:.5rem;color:var(--text-secondary);font-size:.8rem}.tech-stack{color:var(--accent-color);font-weight:500}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.fade-in{animation:fadeIn .6s ease-out}.pulse{animation:pulse 2s infinite}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--secondary-bg);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--accent-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--success-color)}.modal-overlay{position:fixed;inset:0;background:#000c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:10000;opacity:0;visibility:hidden;transition:var(--transition-normal);padding:1rem}.modal-overlay.show{opacity:1;visibility:visible}.modal{background:var(--secondary-bg);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-xl);max-width:500px;width:100%;transform:scale(.9) translateY(20px);transition:var(--transition-normal);border:1px solid var(--border-color);overflow:hidden}.modal-overlay.show .modal{transform:scale(1) translateY(0)}.modal-header{background:var(--gradient-primary);padding:1.5rem;display:flex;align-items:center;gap:1rem;position:relative}.modal-icon{color:#fff;background:#fff3;border-radius:50%;width:48px;height:48px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-title{color:#fff;margin:0;font-size:1.5rem;font-weight:600;flex:1}.modal-close{background:#fff3;border:none;color:#fff;width:32px;height:32px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast);flex-shrink:0}.modal-close:hover{background:#ffffff4d;transform:scale(1.1)}.modal-body{padding:2rem 1.5rem 1.5rem}.modal-message{color:var(--text-secondary);margin:0 0 1.5rem;font-size:1rem;line-height:1.6;text-align:center}.prerequisites-list{display:flex;flex-direction:column;gap:.75rem}.prerequisite-item{background:var(--primary-bg);border:1px solid var(--border-color);border-radius:var(--border-radius-md);padding:1rem;display:flex;align-items:center;gap:.75rem;transition:var(--transition-fast)}.prerequisite-item:hover{border-color:var(--accent-color);transform:translate(4px)}.prerequisite-icon{color:var(--warning-color);flex-shrink:0}.prerequisite-text{color:var(--text-primary);font-weight:500;margin:0}.modal-footer{padding:1rem 1.5rem 1.5rem;display:flex;justify-content:center}.btn{padding:.75rem 2rem;border:none;border-radius:var(--border-radius-md);font-family:inherit;font-size:1rem;font-weight:600;cursor:pointer;transition:var(--transition-normal);display:inline-flex;align-items:center;justify-content:center;gap:.5rem;text-decoration:none;min-width:120px}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-md)}.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn-primary:active{transform:translateY(0)}@media screen and (max-width: 768px){.modal{max-width:90vw;margin:1rem}.modal-header{padding:1rem}.modal-title{font-size:1.3rem}.modal-body{padding:1.5rem 1rem 1rem}.modal-footer{padding:1rem 1rem 1.5rem}.btn{padding:.75rem 1.5rem;font-size:.9rem}}@media screen and (max-width: 480px){.modal-header{flex-direction:column;text-align:center;gap:.75rem}.modal-title{font-size:1.2rem}.modal-icon{width:40px;height:40px}.prerequisite-item{padding:.75rem}}.loading-container{position:fixed;top:0;left:0;width:100%;height:100%;background:#0f172af2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;transition:opacity .3s ease-in-out}.loading-content{text-align:center;color:var(--text-primary)}.loading-spinner{display:flex;justify-content:center;align-items:center;margin-bottom:2rem;gap:.5rem}.spinner-ring{width:12px;height:12px;border-radius:50%;background:var(--accent-color);animation:loadingPulse 1.5s ease-in-out infinite}.spinner-ring:nth-child(1){animation-delay:0s}.spinner-ring:nth-child(2){animation-delay:.3s}.spinner-ring:nth-child(3){animation-delay:.6s}@keyframes loadingPulse{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1.2);opacity:1}}.loading-text{font-size:1.5rem;font-weight:600;margin-bottom:.5rem;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.loading-subtext{font-size:1rem;color:var(--text-secondary);opacity:.8}@media screen and (max-width: 768px){.loading-text{font-size:1.3rem}.loading-subtext{font-size:.9rem}.spinner-ring{width:10px;height:10px}}@media screen and (max-width: 480px){.loading-text{font-size:1.2rem}.loading-subtext{font-size:.85rem}.spinner-ring{width:8px;height:8px}}
