*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Manrope,-apple-system,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-3{margin-bottom:.75rem}.mt-2{margin-top:.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.min-h-screen{min-height:100vh}.w-full{width:100%}.min-w-\[8rem\]{min-width:8rem}.max-w-6xl{max-width:72rem}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-neutral-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(245 245 245/var(--tw-divide-opacity,1))}.overflow-x-auto{overflow-x:auto}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-neutral-200{--tw-border-opacity:1;border-color:rgb(229 229 229/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-neutral-100{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.bg-neutral-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-teal-50{--tw-bg-opacity:1;background-color:rgb(240 253 250/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.p-1{padding:.25rem}.p-5{padding:1.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Manrope,-apple-system,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[11px\]{font-size:11px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity,1))}.text-neutral-700{--tw-text-opacity:1;color:rgb(64 64 64/var(--tw-text-opacity,1))}.text-neutral-800{--tw-text-opacity:1;color:rgb(38 38 38/var(--tw-text-opacity,1))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-purple-700{--tw-text-opacity:1;color:rgb(126 34 206/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-teal-700{--tw-text-opacity:1;color:rgb(15 118 110/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[learn\:index\]{learn:index}.\[learn\:lesson\]{learn:lesson}:root{--bg:#fff;--bg-soft:#f5f5f5;--bg-card:#fff;--text:#111;--text-mid:#555;--text-light:#999;--accent:#111;--border:#e0e0e0;--border-hover:silver;--font:"Manrope", -apple-system, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:hidden}::selection{background:var(--text);color:#fff}#voronoi-hero{z-index:0;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}#confetti-bg{z-index:0;pointer-events:none;width:100%;height:100%;position:fixed;top:0;left:0}.content{z-index:1;position:relative}nav{z-index:100;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);background:#ffffffe0;justify-content:space-between;align-items:center;height:64px;padding:0 2.5rem;display:flex;position:fixed;top:0;left:0;right:0}.nav-left{align-items:center;gap:2.5rem;display:flex}.nav-logo{color:var(--text);align-items:center;gap:.6rem;font-size:.95rem;font-weight:700;text-decoration:none;display:flex}.nav-logo img{width:auto;height:28px}.nav-menu{gap:.25rem;display:flex}.nav-menu a{color:var(--text-mid);border-radius:8px;padding:.4rem .85rem;font-size:.85rem;font-weight:500;text-decoration:none;transition:background .2s,color .2s}.nav-menu a:hover{background:var(--bg-soft);color:var(--text)}.nav-cta{text-decoration:none;background:var(--text)!important;color:#fff!important;border-radius:8px!important;padding:.5rem 1.2rem!important;font-size:.82rem!important;font-weight:600!important;transition:opacity .2s!important}.nav-cta:hover{opacity:.85}.nav-cta-attend{background:linear-gradient(90deg,#14b8a6,#a142f4)!important}.hero{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:8rem 2rem 4rem;display:flex;position:relative;overflow:hidden}.hero-logo{opacity:0;margin-bottom:1.5rem;animation:.8s .2s forwards fadeUp}.hero-logo img{width:auto;height:60px}.hero-label{color:var(--text-mid);opacity:0;margin-bottom:1.5rem;font-size:.95rem;font-weight:500;animation:.8s .3s forwards fadeUp}.hero h1{letter-spacing:-.035em;opacity:0;max-width:700px;margin-bottom:1.5rem;font-size:clamp(2.5rem,5.5vw,4.2rem);font-weight:800;line-height:1.1;animation:.8s .5s forwards fadeUp}.hero-sub{color:var(--text-mid);opacity:0;max-width:460px;margin-bottom:2.5rem;font-size:1.05rem;font-weight:400;animation:.8s .7s forwards fadeUp}.hero-actions{opacity:0;flex-wrap:wrap;justify-content:center;gap:.75rem;animation:.8s .9s forwards fadeUp;display:flex}.btn-dark{background:var(--text);color:#fff;font-family:var(--font);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.85rem 1.75rem;font-size:.92rem;font-weight:600;text-decoration:none;transition:opacity .2s,transform .2s;display:inline-flex}.btn-dark:hover{opacity:.85;transform:translateY(-1px)}.btn-outline{color:var(--text);border:1px solid var(--border);font-family:var(--font);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:.5rem;padding:.85rem 1.75rem;font-size:.92rem;font-weight:500;text-decoration:none;transition:border-color .2s,background .2s;display:inline-flex}.btn-outline:hover{border-color:var(--border-hover);background:var(--bg-soft)}section{padding:5rem 2.5rem}.section-header{text-align:center;margin-bottom:3rem}.section-header h2{letter-spacing:-.02em;margin-bottom:.5rem;font-size:clamp(1.6rem,3vw,2.4rem);font-weight:700}.section-header p{color:var(--text-mid);max-width:460px;margin:0 auto;font-size:1rem}.stats-row{border:1px solid var(--border);opacity:0;border-radius:16px;justify-content:center;max-width:800px;margin:0 auto 4rem;animation:.8s 1s forwards fadeUp;display:flex;overflow:hidden}.stat-item{text-align:center;border-right:1px solid var(--border);flex-direction:column;flex:1;justify-content:center;align-items:center;min-width:140px;padding:1.75rem 1.5rem;display:flex}.stat-item:last-child{border-right:none}.stat-num{margin-bottom:.15rem;font-size:1.6rem;font-weight:800}.stat-label{color:var(--text-light);font-size:.8rem;font-weight:500}.gravity-playground{border:1px dashed var(--border);border-radius:16px;max-width:850px;margin:0 auto 4rem;padding:2rem;overflow:hidden}.gp-label{text-align:center;color:var(--text-light);margin-bottom:1rem;font-size:.78rem;font-weight:500}.gp-pills{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.gp-pill{border:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;border-radius:100px;align-items:center;gap:.5rem;padding:.6rem 1.2rem;font-size:.85rem;font-weight:500;transition:box-shadow .2s;display:inline-flex}.gp-pill:active{cursor:grabbing}.gp-pill:hover{box-shadow:0 4px 16px #0000000f}.gp-pill .dot{background:var(--text);border-radius:50%;width:8px;height:8px}.gp-pill:nth-child(2) .dot{background:#888}.gp-pill:nth-child(3) .dot{background:#bbb}.gp-pill:nth-child(4) .dot{background:#666}.gp-pill:nth-child(5) .dot{background:#aaa}.gp-pill:nth-child(6) .dot{background:#444}.gp-pill:nth-child(7) .dot{background:#ddd}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;max-width:1100px;margin:0 auto;display:grid}.project-card{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:16px;transition:transform .3s,box-shadow .3s;overflow:hidden}.project-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #00000012}.project-thumb{aspect-ratio:4/3;background:var(--bg-soft);width:100%;overflow:hidden}.project-thumb img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;transition:transform .4s}.project-card:hover .project-thumb img{transform:scale(1.04)}.img-ph{width:100%;height:100%;color:var(--text-light);flex-direction:column;justify-content:center;align-items:center;gap:.4rem;font-size:.75rem;font-weight:500;display:flex}.img-ph svg{opacity:.2}.project-info{padding:1.25rem}.project-info h3{margin-bottom:.5rem;font-size:.95rem;font-weight:600}.p-tags{flex-wrap:wrap;gap:.35rem;display:flex}.p-tags span{background:var(--bg-soft);color:var(--text-mid);border-radius:100px;padding:.2rem .55rem;font-size:.67rem;font-weight:600}.courses-section{background:var(--bg-soft)}.courses-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;max-width:1000px;margin:0 auto;display:grid}.course-card{border:1px solid var(--border);background:#fff;border-radius:16px;flex-direction:column;padding:2rem;transition:box-shadow .3s,transform .3s;display:flex;position:relative}.course-card:hover{transform:translateY(-2px);box-shadow:0 6px 24px #0000000f}.course-card.featured{background:linear-gradient(#fff,#fff) padding-box padding-box,linear-gradient(90deg,#14b8a6,#a142f4) border-box;border:2px solid #0000}.course-card.featured:after{content:"Most popular";color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border-radius:100px;padding:.25rem .75rem;font-size:.68rem;font-weight:700;position:absolute;top:-12px;left:50%;transform:translate(-50%)}.course-level{letter-spacing:.08em;text-transform:uppercase;border-radius:6px;align-self:flex-start;margin-bottom:1rem;padding:.25rem .65rem;font-size:.68rem;font-weight:700;display:inline-block}.cl-blue{color:#4285f4;background:#4285f41a}.cl-green{color:#34a853;background:#34a8531a}.cl-purple{color:#a142f4;background:#a142f41a}.course-card h3{margin-bottom:.4rem;font-size:1.15rem;font-weight:700}.course-card .desc{color:var(--text-mid);margin-bottom:1.25rem;font-size:.88rem}.feat-list{flex-grow:1;margin-bottom:1.5rem;list-style:none}.feat-list li{color:var(--text-mid);align-items:center;gap:.5rem;padding:.35rem 0;font-size:.82rem;display:flex}.feat-list li:before{content:"+";color:var(--text);font-size:.9rem;font-weight:800}.course-price{align-items:baseline;gap:.4rem;margin-bottom:1.25rem;display:flex}.price-val{font-size:1.8rem;font-weight:800}.price-per{color:var(--text-light);font-size:.78rem}.c-btn{text-align:center;width:100%;font-family:var(--font);cursor:pointer;background:var(--text);color:#fff;border:none;border-radius:10px;padding:.8rem;font-size:.88rem;font-weight:600;text-decoration:none;transition:opacity .2s,transform .2s;display:block}.c-btn:hover{opacity:.85;transform:translateY(-1px)}.c-btn-blue{background:#4285f4}.c-btn-green{background:#34a853}.c-btn-purple{background:#a142f4}.modal-overlay{z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#00000059;justify-content:center;align-items:center;padding:1.5rem;display:none;position:fixed;inset:0}.modal-overlay.active{display:flex}.modal{-webkit-overflow-scrolling:touch;background:#fff;border-radius:20px;width:100%;max-width:440px;max-height:calc(100vh - 3rem);padding:2.5rem;animation:.35s cubic-bezier(.34,1.56,.64,1) modalIn;position:relative;overflow-y:auto;box-shadow:0 24px 80px #0000001f}@media (max-width:480px){.modal{border-radius:16px;padding:1.5rem}}.qr-wrap img{-o-object-fit:contain;object-fit:contain;width:200px;height:200px;display:block}.promo-banner{z-index:110;color:#fff;text-align:center;background:linear-gradient(135deg,#111,#333);padding:.55rem 3rem;font-size:.82rem;font-weight:500;position:fixed;top:0;left:0;right:0}.promo-banner strong{font-weight:700}.promo-banner a{color:#fff;margin-left:.5rem;text-decoration:underline}.promo-banner-close{color:#fff;cursor:pointer;opacity:.7;background:0 0;border:none;padding:.25rem .5rem;font-size:1.1rem;line-height:1;position:absolute;top:50%;right:.85rem;transform:translateY(-50%)}.promo-banner-close:hover{opacity:1}body.has-promo nav{top:36px}body.has-promo .hero{padding-top:9rem}.about-section{grid-template-columns:260px 1fr;align-items:center;gap:3rem;max-width:1000px;margin:0 auto;display:grid}.about-photo{aspect-ratio:1;background:var(--bg-soft);border-radius:16px;width:260px;overflow:hidden}.about-photo img{-o-object-fit:cover;object-fit:cover;border-radius:16px;width:100%;height:100%}.about-content h2{letter-spacing:-.02em;margin-bottom:1.25rem;font-size:clamp(1.6rem,3vw,2.4rem);font-weight:700}.about-content p{color:var(--text-mid);margin-bottom:1rem;font-size:.95rem}.about-credentials{flex-wrap:wrap;gap:.5rem;margin-top:1.5rem;display:flex}.about-credentials span{background:var(--bg-soft);border:1px solid var(--border);border-radius:100px;padding:.4rem .85rem;font-size:.8rem;font-weight:500}@media (max-width:768px){.about-section{text-align:center;grid-template-columns:1fr;justify-items:center;gap:2rem}.about-section .about-credentials{justify-content:center}}.testimonials-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem;max-width:1100px;margin:0 auto;display:grid}.testimonial-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;flex-direction:column;padding:1.75rem;display:flex}.testimonial-stars{color:#f59e0b;letter-spacing:.1em;margin-bottom:.75rem;font-size:.85rem}.testimonial-card blockquote{color:var(--text);flex-grow:1;margin-bottom:1.25rem;font-size:.92rem;font-style:italic;line-height:1.6}.testimonial-author{align-items:center;gap:.75rem;display:flex}.testimonial-avatar{background:var(--bg-soft);width:38px;height:38px;color:var(--text-mid);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.testimonial-author strong{font-size:.88rem;font-weight:600;display:block}.testimonial-author span{color:var(--text-light);font-size:.78rem}.faq-list{max-width:760px;margin:0 auto}.faq-item{border-bottom:1px solid var(--border);padding:1.25rem 0}.faq-item summary{cursor:pointer;justify-content:space-between;align-items:center;gap:1rem;font-size:1rem;font-weight:600;list-style:none;display:flex}.faq-item summary::-webkit-details-marker{display:none}.faq-item summary:after{content:"+";color:var(--text-mid);flex-shrink:0;font-size:1.4rem;transition:transform .2s}.faq-item[open] summary:after{content:"−"}.faq-answer{color:var(--text-mid);padding-top:.85rem;font-size:.92rem;line-height:1.7}.tutorials-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem;max-width:1100px;margin:0 auto;display:grid}.tutorial-card{background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:16px;text-decoration:none;transition:transform .3s,box-shadow .3s;display:block;overflow:hidden}.tutorial-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px #00000012}.tutorial-thumb{aspect-ratio:16/9;background:var(--bg-soft);width:100%;color:var(--text-light);justify-content:center;align-items:center;font-size:.78rem;display:flex}.tutorial-info{padding:1.25rem 1.5rem 1.5rem}.tutorial-meta{color:var(--text-light);text-transform:uppercase;letter-spacing:.06em;gap:.75rem;margin-bottom:.5rem;font-size:.7rem;font-weight:600;display:flex}.tutorial-info h3{margin-bottom:.5rem;font-size:1rem;font-weight:700;line-height:1.35}.tutorial-info p{color:var(--text-mid);font-size:.85rem;line-height:1.55}.section-cta{text-align:center;margin-top:2rem}.section-cta a{color:var(--text);border-bottom:1px solid var(--text);align-items:center;gap:.4rem;padding-bottom:2px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.rating-stars{color:var(--border-hover);cursor:pointer;-webkit-user-select:none;user-select:none;gap:.35rem;font-size:1.9rem;line-height:1;display:flex}.rating-stars span{transition:color .15s}.rating-stars span.active,.rating-stars span.hover-active{color:#f59e0b}.fg textarea{background:var(--bg-soft);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--font);resize:vertical;border-radius:10px;outline:none;min-height:100px;padding:.7rem .85rem;font-size:.88rem;transition:border-color .2s}.fg textarea:focus{border-color:var(--text)}.fg input[type=checkbox]{width:auto;accent-color:var(--text);padding:0}.consent-row{color:var(--text-mid);align-items:flex-start;gap:.55rem;margin-bottom:1.25rem;font-size:.82rem;line-height:1.4;display:flex}.consent-row label{cursor:pointer;margin:0;font-weight:400}.modal-close{background:var(--bg-soft);width:32px;height:32px;color:var(--text-mid);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.1rem;display:flex;position:absolute;top:1rem;right:1rem}.modal-close:hover{background:var(--border)}.modal h3{margin-bottom:.25rem;font-size:1.2rem;font-weight:700}.modal .m-sub{color:var(--text-mid);margin-bottom:1.75rem;font-size:.82rem}.fg{margin-bottom:1rem}.fg label{color:var(--text-mid);margin-bottom:.3rem;font-size:.75rem;font-weight:600;display:block}.fg input,.fg select{background:var(--bg-soft);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--font);border-radius:10px;outline:none;padding:.7rem .85rem;font-size:.88rem;transition:border-color .2s}.fg input:focus,.fg select:focus{border-color:var(--text)}.pay-opts{gap:.5rem;margin-bottom:1.5rem;display:flex}.pay-opt{background:var(--bg-soft);border:1.5px solid var(--border);text-align:center;cursor:pointer;color:var(--text-mid);border-radius:10px;flex:1;padding:.6rem;font-size:.72rem;font-weight:600;transition:border-color .2s}.pay-opt:hover{border-color:var(--border-hover)}.pay-opt.active{border-color:var(--text);color:var(--text)}.pay-opt-icon{margin-bottom:.15rem;font-size:1.1rem}.total-bar{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding:.85rem 0;display:flex}.total-lbl{color:var(--text-mid);font-size:.85rem}.total-val{font-size:1.25rem;font-weight:800}.submit-btn{background:var(--text);color:#fff;width:100%;font-family:var(--font);cursor:pointer;border:none;border-radius:10px;padding:.85rem;font-size:.92rem;font-weight:600;transition:opacity .2s}.submit-btn:hover{opacity:.85}.submit-btn:disabled{opacity:.6;cursor:default}.sec-note{text-align:center;color:var(--text-light);margin-top:.5rem;font-size:.68rem}.pay-box{background:var(--bg-soft);border:1px solid var(--border);text-align:center;border-radius:14px;margin-bottom:1.5rem;padding:1.25rem}.pay-box-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-mid);margin-bottom:.75rem;font-size:.7rem;font-weight:700}.qr-wrap{background:#fff;border-radius:10px;margin-bottom:.85rem;padding:.75rem;display:inline-block;box-shadow:0 1px 3px #0000000f}.qr-wrap canvas,.qr-wrap svg{width:200px;height:200px;display:block}.pay-meta{text-align:left;color:var(--text-mid);gap:.4rem;margin-bottom:.75rem;font-size:.78rem;display:grid}.pay-meta>div{justify-content:space-between;align-items:baseline;display:flex}.pay-meta strong{color:var(--text);font-weight:600}.pay-meta .pay-amt strong{font-size:1rem;font-weight:800}.pay-hint{color:var(--text-light);font-size:.7rem;line-height:1.4}.fg input[type=file]{padding:.55rem .85rem;font-size:.8rem}.cta-section{text-align:center;padding:6rem 2rem}.cta-section h2{letter-spacing:-.02em;margin-bottom:.75rem;font-size:clamp(1.8rem,4vw,2.8rem);font-weight:800}.cta-section p{color:var(--text-mid);max-width:420px;margin:0 auto 2rem;font-size:1rem}.cta-btns{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:2rem 2.5rem;display:flex}.ft-brand{color:var(--text-mid);align-items:center;gap:.5rem;font-size:.88rem;font-weight:700;display:flex}.ft-brand img{height:20px}.ft-links{gap:1.5rem;display:flex}.ft-links a{color:var(--text-light);font-size:.78rem;font-weight:500;text-decoration:none;transition:color .2s}.ft-links a:hover{color:var(--text)}@keyframes fadeUp{0%{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@keyframes modalIn{0%{opacity:0;transform:scale(.95)translateY(-20px)}to{opacity:1;transform:scale(1)translateY(0)}}.fade-in{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(20px)}.fade-in.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.fade-in{opacity:1!important;transform:none!important}.hero-logo,.hero-label,.hero h1,.hero-sub,.hero-actions,.stats-row{opacity:1!important;animation:none!important;transform:none!important}}.back-btn{color:var(--text-mid);border:1px solid var(--border);font-family:var(--font);cursor:pointer;background:#fff;border-radius:100px;align-items:center;gap:.4rem;margin-bottom:1.5rem;padding:.45rem 1rem;font-size:.82rem;font-weight:600;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.back-btn:hover{border-color:var(--border-hover);color:var(--text);background:var(--bg-soft)}.back-btn span{font-size:1.15rem;line-height:1}.c-btn-secondary{text-align:center;width:100%;font-family:var(--font);cursor:pointer;color:var(--text);border:1px solid var(--border);background:#fff;border-radius:10px;margin-top:.6rem;padding:.72rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:border-color .2s,background .2s,transform .2s;display:block}.c-btn-secondary:hover{border-color:var(--border-hover);background:var(--bg-soft);transform:translateY(-1px)}.btn-outline.is-disabled{opacity:.55;cursor:default;pointer-events:none}@media (max-width:768px){nav{padding:0 1.25rem}.nav-menu{display:none}section{padding:3.5rem 1.25rem}.hero{padding:6rem 1.25rem 3rem}.stats-row{flex-direction:column}.stat-item{border-right:none;border-bottom:1px solid var(--border)}.stat-item:last-child{border-bottom:none}.projects-grid,.courses-grid{grid-template-columns:1fr}.modal{padding:1.75rem}footer{text-align:center;flex-direction:column}}.selfpaced-section{background:#fff}.selfpaced-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;max-width:1000px;margin:0 auto;display:grid}.course-eyebrow{letter-spacing:.08em;text-transform:uppercase;border-radius:6px;align-self:flex-start;margin-bottom:1rem;padding:.25rem .65rem;font-size:.68rem;font-weight:700;display:inline-block}.eb-teal{color:#0d9488;background:#14b8a61f}.eb-purple{color:#a142f4;background:#a142f41f}.eb-amber{color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4)}.price-strike{color:var(--text-light);font-size:1rem;font-weight:600;text-decoration:line-through}.price-note{color:#0d9488;margin-bottom:1rem;font-size:.72rem;font-weight:600}.course-meta-row{color:var(--text-light);flex-wrap:wrap;gap:1.25rem;margin-bottom:1rem;font-size:.78rem;font-weight:600;display:flex}.detail-link{color:var(--text-mid);border-bottom:1px solid var(--border);align-self:flex-start;margin-top:.6rem;padding-bottom:2px;font-size:.8rem;text-decoration:none;display:inline-block}.detail-link:hover{color:var(--text);border-color:var(--text)}.hiw-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;max-width:1000px;margin:0 auto;display:grid}.hiw-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.75rem}.hiw-num{background:var(--text);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:.85rem;font-size:.9rem;font-weight:800;display:flex}.hiw-card h3{margin-bottom:.4rem;font-size:1rem;font-weight:700}.hiw-card p{color:var(--text-mid);font-size:.86rem}.skilltree-web{border:1px solid var(--border);background:var(--bg-soft);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:16px;width:100%;max-width:1400px;height:clamp(520px,80vh,880px);margin:0 auto;position:relative;overflow:hidden}.skilltree-web.is-panning{cursor:grabbing}.skilltree-web.is-panning .stw-node{pointer-events:none}.stw-canvas{transform-origin:0 0;will-change:transform;background:radial-gradient(circle at 1px 1px, #0000000d 1px, transparent 0) 0 0 / 22px 22px, var(--bg-soft);border-radius:12px;position:relative}.stw-controls{z-index:6;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:12px;right:12px}.stw-zoom-btn{border:1px solid var(--border);width:38px;height:38px;color:var(--text);font-family:var(--font);cursor:pointer;background:#fff;border-radius:10px;justify-content:center;align-items:center;font-size:1.15rem;font-weight:700;line-height:1;transition:background .15s,border-color .15s;display:flex;box-shadow:0 2px 10px #0000001a}.stw-zoom-btn:hover{background:var(--bg-soft);border-color:var(--border-hover)}.stw-zoom-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px}.stw-zoom-btn.is-fit{letter-spacing:.02em;width:auto;height:38px;padding:0 .7rem;font-size:.76rem}.stw-links{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:visible}.stw-link{fill:none;stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round;transition:opacity .18s,stroke-width .18s}.stw-link.v-rhino{stroke:#14b8a6a6}.stw-link.v-grasshopper{stroke:#a142f499}.stw-link.v-capstone{stroke:#f59e0b}.stw-link.v-cross{stroke:var(--border-hover);stroke-dasharray:6 6}.stw-link.is-dim{opacity:.12}.stw-link.is-lit{opacity:1;stroke-width:3.25px}.stw-node-wrap{left:var(--x);top:var(--y);z-index:1;width:152px;position:absolute}.stw-node-wrap.is-open{z-index:40}.stw-node{text-align:left;cursor:pointer;border:2px solid var(--border);width:100%;min-height:76px;font-family:var(--font);background:#fff;border-radius:14px;flex-direction:column;justify-content:center;gap:.2rem;padding:.6rem .75rem;transition:box-shadow .18s,transform .18s,border-color .18s,opacity .18s;display:flex}.stw-node:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000014}.stw-node:focus-visible{outline:2px solid var(--text);outline-offset:2px}.stw-node.is-open{box-shadow:0 10px 28px #00000024}.stw-node.is-dim{opacity:.34}.stw-code{letter-spacing:-.01em;font-size:.9rem;font-weight:800;line-height:1.1}.stw-name{color:var(--text-mid);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.7rem;font-weight:500;line-height:1.25;display:-webkit-box;overflow:hidden}.stw-tag{letter-spacing:.04em;text-transform:uppercase;color:var(--text-light);margin-top:.1rem;font-size:.56rem;font-weight:700}.stw-deps{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stw-node.v-rhino{border-color:#14b8a68c}.stw-node.v-rhino .stw-code{color:#0d9488}.stw-node.v-grasshopper{border-color:#a142f480}.stw-node.v-grasshopper .stw-code{color:#a142f4}.stw-node.v-capstone{background:#f59e0b12;border-color:#f59e0b}.stw-node.v-capstone .stw-code{color:#b45309}.stw-node.is-optional{background:var(--bg-soft);border-style:dashed}.stw-node{position:relative}.stw-node.is-completed{background:linear-gradient(#fff,#fff) padding-box padding-box,linear-gradient(90deg,#14b8a6,#a142f4) border-box;border:2px solid #0000}.stw-check{color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:.72rem;font-weight:800;line-height:1;display:flex;position:absolute;top:-9px;right:-9px;box-shadow:0 2px 8px #a142f466}.stw-state-sr{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stw-level{width:100%;max-width:1400px;margin:0 auto .9rem}.stw-level-head{justify-content:space-between;align-items:baseline;margin-bottom:.4rem;display:flex}.stw-level-label{letter-spacing:.01em;color:var(--text);font-size:.8rem;font-weight:700}.stw-level-pct{color:#0d9488;font-size:.82rem;font-weight:800}.stw-level-track{background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;height:10px;overflow:hidden}.stw-level-fill{background:linear-gradient(90deg,#14b8a6,#a142f4);border-radius:999px;height:100%;transition:width .45s}.stw-pop{border:1px solid var(--border);z-index:50;text-align:left;cursor:default;background:#fff;border-radius:12px;width:258px;max-width:calc(100vw - 2rem);max-height:230px;padding:.9rem 1rem;position:absolute;top:calc(100% + 10px);left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:0 14px 44px #00000029}.stw-pop-head strong{font-size:.82rem;font-weight:700;line-height:1.3;display:block}.stw-pop-dur{color:var(--text-light);margin-top:.15rem;font-size:.7rem;font-weight:600;display:block}.stw-pop-list{gap:.3rem;margin:.6rem 0 0;list-style:none;display:grid}.stw-pop-list li{color:var(--text-mid);justify-content:space-between;gap:.6rem;font-size:.74rem;display:flex}.stw-pop-min{color:var(--text-light);flex-shrink:0}@media (max-width:768px){.skilltree-web{cursor:default;background:var(--bg-soft);touch-action:auto;-webkit-user-select:auto;user-select:auto;max-width:none;height:auto;overflow:visible}.stw-canvas{will-change:auto;background:0 0;border-radius:0;flex-direction:column;gap:.6rem;padding:1rem;display:flex;position:static;width:auto!important;height:auto!important;transform:none!important}.stw-links,.stw-controls{display:none}.stw-node-wrap{width:100%;position:static;top:auto;left:auto}.stw-node.is-dim{opacity:1}.stw-deps{clip:auto;white-space:normal;width:auto;height:auto;color:var(--text-light);margin:.25rem 0 0;padding:0;font-size:.64rem;font-weight:600;position:static;overflow:visible}.stw-pop{width:100%;max-width:none;box-shadow:none;max-height:none;margin-top:.5rem;position:static;transform:none}}@media (prefers-reduced-motion:reduce){.stw-node,.stw-link{transition:none}.stw-node:hover{transform:none}}.course-detail-wrap{max-width:860px;margin:0 auto}.course-hero{max-width:860px;margin:0 auto;padding:8rem 2.5rem 2rem}.course-hero .course-eyebrow{margin-bottom:.75rem}.course-hero h1{letter-spacing:-.03em;margin-bottom:1rem;font-size:clamp(2rem,4vw,3rem);font-weight:800;line-height:1.1}.course-hero p.lead{color:var(--text-mid);max-width:620px;margin-bottom:1.5rem;font-size:1.05rem}.course-stats{flex-wrap:wrap;gap:2rem;margin-bottom:1.5rem;display:flex}.course-stat .n{font-size:1.4rem;font-weight:800}.course-stat .l{color:var(--text-light);font-size:.78rem;font-weight:600}.whatyoubuild{background:var(--bg-soft);border:1px solid var(--border);border-radius:16px;margin:1.5rem 0;padding:1.5rem}.whatyoubuild h3{margin-bottom:.75rem;font-size:1rem;font-weight:700}.whatyoubuild ul{gap:.4rem;list-style:none;display:grid}.whatyoubuild li{color:var(--text-mid);align-items:flex-start;gap:.5rem;font-size:.86rem;display:flex}.whatyoubuild li:before{content:"+";color:var(--text);font-weight:800}.module{border:1px solid var(--border);background:#fff;border-radius:14px;margin-bottom:.75rem;overflow:hidden}.module.is-completed{position:relative}.module.is-completed:before{content:"";z-index:1;background:linear-gradient(90deg,#14b8a6,#a142f4);width:3px;position:absolute;top:0;bottom:0;left:0}.module-head{text-align:left;cursor:pointer;width:100%;font-family:var(--font);color:var(--text);background:#fff;border:none;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 1.25rem;font-size:.95rem;font-weight:700;display:flex}.module-head:hover{background:var(--bg-soft)}.module-head .mh-meta{color:var(--text-light);flex-shrink:0;font-size:.76rem;font-weight:600}.module-head .mh-left{flex-direction:column;gap:.15rem;display:flex}.module-head .mh-sub{color:var(--text-light);font-size:.74rem;font-weight:500}.module-body{padding:0 1.25rem .5rem}.video-row{border-top:1px solid var(--border);color:var(--text-mid);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 0;font-size:.85rem;display:flex}.video-row .vr-title{align-items:center;gap:.5rem;display:flex}.video-row .vr-dur{color:var(--text-light);flex-shrink:0;font-size:.78rem}.proj-flag{letter-spacing:.04em;color:#b45309;text-transform:uppercase;background:#f59e0b24;border-radius:5px;padding:.1rem .4rem;font-size:.62rem;font-weight:700}.addon-row{background:var(--bg-soft);border:1px solid var(--border);border-radius:12px;align-items:flex-start;gap:.6rem;margin-bottom:1rem;padding:.85rem 1rem;display:flex}.addon-row label{color:var(--text);cursor:pointer;margin:0;font-size:.84rem;font-weight:600}.addon-row .addon-sub{color:var(--text-mid);font-size:.74rem;font-weight:400}.addon-price{white-space:nowrap;margin-left:auto;font-size:.9rem;font-weight:800}.learn-wrap{max-width:860px;margin:0 auto;padding-top:2rem}.lock-banner{background:var(--bg-soft);border:1px dashed var(--border-hover);text-align:center;border-radius:16px;margin-bottom:2rem;padding:2rem}.lock-banner h2{margin-bottom:.5rem;font-size:1.3rem;font-weight:800}.lock-banner p{color:var(--text-mid);max-width:520px;margin:0 auto .5rem;font-size:.92rem}.todo-pill{letter-spacing:.05em;text-transform:uppercase;color:#b45309;background:#f59e0b24;border-radius:6px;margin:0 .2rem;padding:.2rem .55rem;font-size:.68rem;font-weight:700;display:inline-block}.locked-video{border-top:1px solid var(--border);color:var(--text-light);align-items:center;gap:.6rem;padding:.7rem 0;font-size:.86rem;display:flex}@media (max-width:768px){.selfpaced-grid,.hiw-grid{grid-template-columns:1fr}.course-hero{padding:6rem 1.25rem 1.5rem}}.nav-avatar-wrap{align-items:center;display:flex;position:relative}.nav-avatar-btn{background:var(--bg-soft);cursor:pointer;width:34px;height:34px;box-shadow:0 0 0 1px var(--border);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;transition:box-shadow .18s;display:flex;overflow:hidden}.nav-avatar-btn:hover{box-shadow:0 0 0 2px var(--border-hover)}.nav-avatar-btn:focus-visible{outline:2px solid var(--text);outline-offset:2px}.nav-avatar-btn.is-enrolled{box-shadow:none;background:linear-gradient(var(--bg-soft), var(--bg-soft)) padding-box, linear-gradient(90deg, #14b8a6, #a142f4) border-box;border:3px solid #0000}.nav-avatar-btn.is-enrolled:hover{box-shadow:none}.nav-avatar-btn.is-member,.nav-avatar-btn.is-member:hover{box-shadow:0 0 0 2.5px #14b8a6}.nav-avatar-img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.nav-avatar-img.is-sm{border-radius:50%;flex-shrink:0;width:38px;height:38px}.nav-avatar-fallback{width:100%;height:100%;color:var(--text);background:var(--bg-soft);justify-content:center;align-items:center;font-size:.9rem;font-weight:700;display:flex}.nav-avatar-fallback.is-sm{width:38px;height:38px;box-shadow:0 0 0 1px var(--border);border-radius:50%;flex-shrink:0}.nav-menu-pop{z-index:60;border:1px solid var(--border);background:#fff;border-radius:12px;min-width:232px;padding:.4rem;position:absolute;top:calc(100% + 10px);right:0;box-shadow:0 14px 44px #00000029}.nav-menu-id{border-bottom:1px solid var(--border);align-items:center;gap:.6rem;margin-bottom:.3rem;padding:.55rem .65rem .7rem;display:flex}.nav-menu-id-text{flex-direction:column;min-width:0;display:flex}.nav-menu-id-text strong{font-size:.86rem;font-weight:700;line-height:1.25}.nav-menu-id-text span{color:var(--text-light);text-overflow:ellipsis;white-space:nowrap;max-width:168px;font-size:.74rem;overflow:hidden}.nav-menu-item{text-align:left;width:100%;color:var(--text);font-family:var(--font);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:.55rem .65rem;font-size:.85rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:block}.nav-menu-item:hover{background:var(--bg-soft)}.nav-menu-item.is-danger{color:#dc2626}.nav-menu-item.is-danger:hover{background:#dc262614}.learn-hub-header{margin-bottom:2rem}.learn-hub-header h1{letter-spacing:-.02em;margin-bottom:.5rem;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:800;line-height:1.15}.learn-hub-header p{color:var(--text-mid);max-width:560px;font-size:.95rem}.learn-hub-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;display:grid}.learn-hub-card{color:inherit;cursor:pointer;text-decoration:none}.learn-hub-card h3{color:var(--text)}.learn-hub-progress{color:var(--text-mid);margin-top:auto;padding-top:.5rem;font-size:.8rem;font-weight:600}.learn-hub-cta{color:var(--text);margin-top:1rem;font-size:.88rem;font-weight:700;display:inline-block}.learn-empty{align-items:flex-start;max-width:560px}.learn-empty h3{margin-bottom:.5rem;font-size:1.15rem;font-weight:700}.learn-empty-cta{align-self:flex-start;width:auto;margin-top:.5rem;padding:.7rem 1.3rem}.booking-wrap{max-width:1000px;margin:0 auto;padding:6rem 1.5rem 4rem}.booking-banner{background:var(--bg-soft);border:1px dashed var(--border-hover);color:var(--text-mid);border-radius:12px;margin-bottom:1.5rem;padding:.85rem 1.1rem;font-size:.82rem}.booking-banner strong{color:var(--text)}.booking-head{margin-bottom:1.75rem}.booking-head h1{letter-spacing:-.02em;margin-bottom:.5rem;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:800;line-height:1.15}.booking-head p{color:var(--text-mid);max-width:600px;font-size:.95rem}.booking-tabs{border-bottom:1px solid var(--border);gap:.5rem;margin-bottom:1.5rem;display:flex}.booking-tab{cursor:pointer;font-family:var(--font);color:var(--text-light);background:0 0;border:none;padding:.7rem 1rem;font-size:.95rem;font-weight:700;position:relative}.booking-tab:hover,.booking-tab.is-active{color:var(--text)}.booking-tab.is-active:after{content:"";background:linear-gradient(90deg,#14b8a6,#a142f4);height:2px;position:absolute;bottom:-1px;left:0;right:0}.booking-steps{flex-wrap:wrap;gap:1.1rem;margin-bottom:1.5rem;list-style:none;display:flex}.booking-step{color:var(--text-light);align-items:center;gap:.45rem;font-size:.8rem;font-weight:600;display:flex}.booking-step-n{background:var(--bg-soft);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.7rem;display:inline-flex}.booking-step.is-active{color:var(--text)}.booking-step.is-active .booking-step-n{color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border-color:#0000}.booking-step.is-done .booking-step-n{background:var(--text);color:#fff;border-color:#0000}.booking-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;display:grid}.booking-panel{padding:1.5rem}.booking-panel-h{color:var(--text);margin-bottom:1rem;font-size:.95rem;font-weight:800}.booking-empty{color:var(--text-light);font-size:.84rem}.booking-cal-head{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.booking-cal-title{font-size:.95rem;font-weight:800}.booking-cal-nav{border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--text);background:#fff;border-radius:8px;font-size:1.1rem;line-height:1}.booking-cal-nav:hover:not(:disabled){border-color:var(--border-hover)}.booking-cal-nav:disabled{opacity:.35;cursor:not-allowed}.booking-cal-dow,.booking-cal-grid{grid-template-columns:repeat(7,1fr);gap:.25rem;display:grid}.booking-cal-dow{margin-bottom:.35rem}.booking-dow{text-align:center;color:var(--text-light);text-transform:uppercase;letter-spacing:.04em;font-size:.66rem;font-weight:700}.booking-day{aspect-ratio:1;font-family:var(--font);color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;font-size:.82rem;font-weight:600;display:flex}.booking-day.is-empty{cursor:default;background:0 0;border:none}.booking-day.is-available{background:var(--bg-soft);border-color:var(--border)}.booking-day.is-available:hover{border-color:var(--border-hover)}.booking-day.is-unavailable{color:var(--text-light);opacity:.45;cursor:not-allowed}.booking-day.is-selected{color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border-color:#0000}.booking-legend{color:var(--text-light);margin-top:.85rem;font-size:.72rem;line-height:1.9}.booking-legend-dot{vertical-align:middle;border-radius:3px;width:10px;height:10px;margin:0 .3rem 0 .7rem;display:inline-block}.booking-legend-dot.is-available{background:var(--bg-soft);border:1px solid var(--border)}.booking-legend-dot.is-unavailable{border:1px solid var(--border);opacity:.5;background:#fff}.booking-legend-dot.is-selected{background:linear-gradient(90deg,#14b8a6,#a142f4)}.booking-chips{flex-wrap:wrap;gap:.5rem;display:flex}.booking-chip{border:1px solid var(--border);font-family:var(--font);color:var(--text);cursor:pointer;background:#fff;border-radius:10px;align-items:center;gap:.4rem;padding:.55rem .85rem;font-size:.85rem;font-weight:600;display:inline-flex;position:relative}.booking-chip:hover:not(:disabled){border-color:var(--border-hover)}.booking-chip.is-selected{color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border-color:#0000}.booking-chip.is-unavailable{opacity:.4;cursor:not-allowed;text-decoration:line-through}.booking-chip-tag{text-transform:uppercase;letter-spacing:.04em;color:var(--text-light);font-size:.62rem;font-weight:700}.booking-noaccess{align-items:flex-start;gap:.4rem;max-width:560px}.booking-summary{gap:.6rem;margin-bottom:1.1rem;display:grid}.booking-summary>div{border-bottom:1px solid var(--border);justify-content:space-between;gap:1rem;padding-bottom:.5rem;display:flex}.booking-summary dt{color:var(--text-light);font-size:.76rem;font-weight:600}.booking-summary dd{text-align:right;font-size:.84rem;font-weight:700}.booking-confirm-cta{text-align:center;cursor:pointer;width:100%;font-family:var(--font);color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border:none;border-radius:10px;padding:.85rem;font-size:.9rem;font-weight:700;text-decoration:none;transition:opacity .2s,transform .2s;display:block}.booking-confirm-cta:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.booking-confirm-cta:disabled{opacity:.5;cursor:not-allowed}.booking-note{color:var(--text-light);margin-top:.6rem;font-size:.72rem}.booking-error{color:#dc2626;margin-top:.6rem;font-size:.78rem;font-weight:600}.booking-success{align-items:flex-start;max-width:560px}.booking-success-badge{text-transform:uppercase;letter-spacing:.04em;color:#fff;background:linear-gradient(90deg,#14b8a6,#a142f4);border-radius:100px;margin-bottom:.6rem;padding:.25rem .65rem;font-size:.7rem;font-weight:800;display:inline-block}.booking-mine{gap:2rem;display:grid}.booking-list-h{margin-bottom:.85rem;font-size:1.05rem;font-weight:800}.booking-list{gap:.75rem;list-style:none;display:grid}.booking-item{flex-flow:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 1.25rem}.booking-item-main{flex-direction:column;gap:.2rem;display:flex}.booking-item-main strong{font-size:.92rem;font-weight:700}.booking-item-meta{color:var(--text-mid);font-size:.78rem}.booking-pill{text-transform:uppercase;letter-spacing:.04em;border-radius:100px;flex-shrink:0;padding:.25rem .6rem;font-size:.68rem;font-weight:800}.booking-pill.is-confirmed{color:#0d9488;background:#14b8a61f}.booking-pill.is-completed{background:var(--bg-soft);color:var(--text-mid)}.booking-pill.is-cancelled{color:#dc2626;background:#dc26261a}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.hover\:bg-neutral-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\:text-neutral-900:hover{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.focus\:border-neutral-400:focus{--tw-border-opacity:1;border-color:rgb(163 163 163/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-60:disabled{opacity:.6}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-\[2fr_1fr_1fr_auto\]{grid-template-columns:2fr 1fr 1fr auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-6{gap:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}}@media (min-width:1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
