@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU-Cpd2YT5r.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU-C5ekK6td.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU-Ai74Rjx-.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU-BQL42Lnq.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU-YEzCLjIM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-B_-bZUTo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:300;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-8kRkwJBP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU-Cpd2YT5r.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU-C5ekK6td.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU-Ai74Rjx-.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU-BQL42Lnq.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU-YEzCLjIM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-B_-bZUTo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-8kRkwJBP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU-Cpd2YT5r.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU-C5ekK6td.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU-Ai74Rjx-.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU-BQL42Lnq.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU-YEzCLjIM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-B_-bZUTo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-8kRkwJBP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU-Cpd2YT5r.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU-C5ekK6td.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU-Ai74Rjx-.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU-BQL42Lnq.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU-YEzCLjIM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-B_-bZUTo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-8kRkwJBP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU-Cpd2YT5r.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU-C5ekK6td.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU-Ai74Rjx-.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU-BQL42Lnq.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU-YEzCLjIM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-B_-bZUTo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-8kRkwJBP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2JL7W0Q5n-wU-Cpd2YT5r.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa0ZL7W0Q5n-wU-C5ekK6td.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2ZL7W0Q5n-wU-Ai74Rjx-.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1pL7W0Q5n-wU-BQL42Lnq.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa2pL7W0Q5n-wU-YEzCLjIM.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa25L7W0Q5n-wU-B_-bZUTo.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:800;font-display:swap;src:url(./UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7W0Q5nw-8kRkwJBP.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(./nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_k-UXtXA-X-oE0qsEw-DHHktDxO.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(./nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_k-UXt7A-X-oE0qsEw-BySQfYvw.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(./nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_k-UXt_A-X-oE0qsEw-C23s1127.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:italic;font-weight:700;font-display:swap;src:url(./nuFRD-vYSZviVYUb_rj3ij__anPXDTnCjmHKM4nYO7KN_k-UXtHA-X-oE0o-D8Pu5Cws.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(./nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKeiunDTbtPK_l2qI0s-D3D0u84E.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(./nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKeiunDYbtPK_l2qI0s-BBdWV-hv.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(./nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKeiunDZbtPK_l2qI0s-DVpdFgJg.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:normal;font-weight:700;font-display:swap;src:url(./nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKeiunDXbtPK_l2q-u3F3NHtq.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-deep:#06080f;--bg-base:#0a0e1a;--bg-surface:#111627;--bg-elevated:#181e33;--bg-card:#111627a6;--glass-bg:#ffffff0a;--glass-border:#ffffff14;--glass-blur:24px;--glass-hover:#ffffff12;--accent-1:#f0c040;--accent-2:#e6a020;--accent-3:#e67e22;--accent-gradient:linear-gradient(135deg, #f0c040, #e67e22);--accent-glow:#f0c04040;--accent-subtle:#f0c04014;--success:#34d399;--success-bg:#34d3991f;--warning:#fbbf24;--warning-bg:#fbbf241f;--info:#60a5fa;--info-bg:#60a5fa1f;--danger:#f87171;--danger-bg:#f871711f;--text-primary:#f0f2f8;--text-secondary:#9ba3bf;--text-muted:#5a6380;--text-accent:#f0c040;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 4px 16px #0006;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 20px var(--accent-glow);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.4s;--sidebar-width:260px;--header-height:64px;--max-content:1200px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;scroll-behavior:smooth;font-size:16px}body{background:var(--bg-deep);color:var(--text-primary);min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.6;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(600px 400px at 15% 20%,#f0c0400f 0%,#0000 70%),radial-gradient(500px 500px at 85% 75%,#e67e220a 0%,#0000 70%),radial-gradient(400px 300px,#60a5fa08 0%,#0000 70%);position:fixed;inset:0}.app-container{z-index:1;min-height:100vh;display:flex;position:relative}.sidebar{width:var(--sidebar-width);background:var(--bg-card);min-height:100vh;backdrop-filter:blur(var(--glass-blur));border-right:1px solid var(--glass-border);padding:var(--space-lg);z-index:100;transition:transform var(--duration-slow) var(--ease-out);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-brand{align-items:center;gap:var(--space-md);padding-bottom:var(--space-xl);border-bottom:1px solid var(--glass-border);margin-bottom:var(--space-lg);display:flex}.sidebar-brand .brand-icon{background:var(--accent-gradient);border-radius:var(--radius-md);width:44px;height:44px;box-shadow:var(--shadow-glow);justify-content:center;align-items:center;font-size:1.5rem;display:flex}.sidebar-brand h1{background:var(--accent-gradient);-webkit-text-fill-color:transparent;letter-spacing:-.02em;-webkit-background-clip:text;background-clip:text;font-family:Playfair Display,serif;font-size:1.35rem;font-weight:700}.sidebar-brand .brand-sub{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem}.sidebar-nav{gap:var(--space-xs);flex-direction:column;flex:1;list-style:none;display:flex}.sidebar-nav li a{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--duration-normal) var(--ease-out);font-size:.9rem;font-weight:500;text-decoration:none;display:flex;position:relative;overflow:hidden}.sidebar-nav li a:before{content:"";background:var(--accent-gradient);border-radius:var(--radius-full);width:3px;height:60%;transition:transform var(--duration-normal) var(--ease-spring);position:absolute;top:50%;left:0;transform:translateY(-50%)scaleY(0)}.sidebar-nav li a:hover{background:var(--glass-hover);color:var(--text-primary)}.sidebar-nav li a.active{background:var(--accent-subtle);color:var(--text-accent)}.sidebar-nav li a.active:before{transform:translateY(-50%)scaleY(1)}.sidebar-nav li a .nav-icon{text-align:center;width:24px;font-size:1.15rem}.sidebar-streak{padding:var(--space-md);background:var(--accent-subtle);border-radius:var(--radius-lg);text-align:center;border:1px solid #f0c04026;margin-top:auto}.sidebar-streak .streak-number{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2rem;font-weight:800}.sidebar-streak .streak-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;font-size:.75rem}.mobile-bottom-nav{z-index:200;backdrop-filter:blur(20px);border-top:1px solid var(--glass-border);padding:var(--space-xs) 0;padding-bottom:max(var(--space-xs), env(safe-area-inset-bottom));background:#0a0e1af2;justify-content:space-around;align-items:center;display:none;position:fixed;bottom:0;left:0;right:0}.mobile-bottom-nav .bnav-item{padding:var(--space-xs) var(--space-sm);color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast);-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;align-items:center;gap:2px;min-width:54px;font-size:.65rem;font-weight:500;display:flex}.mobile-bottom-nav .bnav-item .bnav-icon{font-size:1.3rem;line-height:1}.mobile-bottom-nav .bnav-item.active{color:var(--accent-1)}.mobile-bottom-nav .bnav-item:active{transform:scale(.92)}.mobile-bottom-nav .bnav-item.bnav-more .bnav-icon{font-size:1.5rem}.sidebar-backdrop{display:none}.main-content{margin-left:var(--sidebar-width);padding:var(--space-xl) var(--space-2xl);flex:1;min-height:100vh}.page-header{margin-bottom:var(--space-2xl)}.page-header h2{margin-bottom:var(--space-xs);font-family:Playfair Display,serif;font-size:2rem;font-weight:700}.page-header p{color:var(--text-secondary);font-size:.95rem}.section{animation:fadeSlideIn var(--duration-slow) var(--ease-out);display:none}.section.active{display:block}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.glass-card{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--space-lg);transition:all var(--duration-normal) var(--ease-out)}.glass-card:hover{background:var(--glass-hover);box-shadow:var(--shadow-md);border-color:#ffffff1f;transform:translateY(-2px)}.glass-card.no-hover:hover{box-shadow:none;transform:none}.stats-grid{gap:var(--space-lg);margin-bottom:var(--space-2xl);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.stat-card{text-align:center;padding:var(--space-xl) var(--space-lg)}.stat-card .stat-icon{margin-bottom:var(--space-sm);font-size:1.8rem}.stat-card .stat-value{background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:2.2rem;font-weight:800;line-height:1.2}.stat-card .stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:var(--space-xs);font-size:.75rem}.piano-container{margin:var(--space-xl) auto;max-width:900px;position:relative}.piano-keyboard{user-select:none;border-radius:0 0 var(--radius-lg) var(--radius-lg);height:200px;box-shadow:var(--shadow-lg), inset 0 -4px 12px #0000004d;display:flex;position:relative;overflow:hidden}.piano-key{cursor:pointer;transition:all 80ms;position:relative}.piano-key.white{z-index:1;background:linear-gradient(#f8f8f8 0%,#e8e8e8 85%,#d4d4d4 100%);border:1px solid #bbb;border-top:none;border-radius:0 0 6px 6px;flex:1;height:200px}.piano-key.white:hover{background:linear-gradient(#fff 0%,#f0f0f0 85%,#e0e0e0 100%)}.piano-key.white.pressed{transform-origin:top;background:linear-gradient(#f0c040 0%,#e6a020 85%,#d4900a 100%);transform:scaleY(.98);box-shadow:inset 0 2px 6px #00000026}.piano-key.black{z-index:2;background:linear-gradient(#2a2a2a 0%,#1a1a1a 75%,#111 100%);border-radius:0 0 5px 5px;width:2.85714%;height:130px;position:absolute;box-shadow:0 4px 8px #00000080,inset 0 -2px 4px #3c3c3c4d}.piano-key.black:hover{background:linear-gradient(#3a3a3a 0%,#2a2a2a 75%,#1a1a1a 100%)}.piano-key.black.pressed{background:linear-gradient(#c8960a 0%,#a07008 75%,#806008 100%);height:126px;box-shadow:0 2px 4px #0006}.piano-key .key-label{color:#999;pointer-events:none;opacity:.6;font-size:.6rem;font-weight:600;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.piano-key.black .key-label{color:#888;font-size:.5rem;bottom:8px}.piano-controls{justify-content:center;align-items:center;gap:var(--space-lg);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.piano-controls label{color:var(--text-secondary);align-items:center;gap:var(--space-sm);font-size:.85rem;display:flex}.piano-controls select,.piano-controls input[type=range]{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);outline:none;font-size:.85rem}.piano-controls input[type=range]{accent-color:var(--accent-1)}.curriculum-track{padding-left:var(--space-2xl);position:relative}.curriculum-track:before{content:"";background:var(--glass-border);width:2px;position:absolute;top:0;bottom:0;left:14px}.curriculum-item{margin-bottom:var(--space-lg);padding:var(--space-lg);cursor:pointer;position:relative}.curriculum-item .node{left:calc(-1 * var(--space-2xl) + 4px);top:var(--space-lg);border:2px solid var(--glass-border);background:var(--bg-base);width:22px;height:22px;transition:all var(--duration-normal) var(--ease-out);z-index:2;border-radius:50%;justify-content:center;align-items:center;font-size:.6rem;display:flex;position:absolute}.curriculum-item[data-status=in-progress] .node{border-color:var(--accent-1);background:var(--accent-subtle);box-shadow:0 0 10px var(--accent-glow)}.curriculum-item[data-status=completed] .node{border-color:var(--success);background:var(--success-bg);color:var(--success)}.curriculum-item .topic-title{margin-bottom:var(--space-xs);font-size:1.05rem;font-weight:600}.curriculum-item .topic-desc{color:var(--text-secondary);font-size:.85rem;line-height:1.5}.curriculum-item .topic-status{margin-top:var(--space-sm);padding:2px var(--space-sm);border-radius:var(--radius-full);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;font-weight:600;display:inline-block}.status-not-started{color:var(--text-muted);background:#ffffff0d}.status-in-progress{background:var(--warning-bg);color:var(--warning)}.status-completed{background:var(--success-bg);color:var(--success)}.repertoire-filters{gap:var(--space-sm);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.filter-btn{padding:var(--space-sm) var(--space-md);border:1px solid var(--glass-border);border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:0 0;font-size:.8rem;font-weight:500}.filter-btn:hover{background:var(--glass-hover);color:var(--text-primary)}.filter-btn.active{background:var(--accent-subtle);border-color:var(--accent-1);color:var(--text-accent)}.song-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.song-card{padding:var(--space-lg);position:relative;overflow:hidden}.song-card .song-difficulty{top:var(--space-md);right:var(--space-md);letter-spacing:1px;font-size:.8rem;position:absolute}.song-card .song-title{margin-bottom:2px;padding-right:60px;font-size:1.1rem;font-weight:700}.song-card .song-composer{color:var(--text-muted);margin-bottom:var(--space-md);font-size:.8rem}.song-card .song-links{gap:var(--space-sm);margin-bottom:var(--space-md);flex-wrap:wrap;display:flex}.song-card .song-links a{color:var(--info);padding:2px var(--space-sm);background:var(--info-bg);border-radius:var(--radius-full);transition:opacity var(--duration-fast);font-size:.75rem;text-decoration:none}.song-card .song-links a:hover{opacity:.8}.song-status-toggle{gap:var(--space-xs);display:flex}.song-status-toggle button{padding:var(--space-xs) var(--space-sm);border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);text-transform:uppercase;letter-spacing:.03em;background:0 0;flex:1;font-size:.7rem;font-weight:600}.song-status-toggle button:hover{background:var(--glass-hover);color:var(--text-secondary)}.song-status-toggle button.active-want{background:var(--info-bg);border-color:var(--info);color:var(--info)}.song-status-toggle button.active-learning{background:var(--warning-bg);border-color:var(--warning);color:var(--warning)}.song-status-toggle button.active-mastered{background:var(--success-bg);border-color:var(--success);color:var(--success)}.song-midi-actions{gap:var(--space-sm);margin-top:var(--space-sm);margin-bottom:var(--space-sm);display:flex}.song-waterfall-btn{flex:1;min-height:38px;font-size:.8rem!important}.song-upload-btn{cursor:pointer;align-items:center;min-height:38px;font-size:.75rem!important;display:flex!important}.rep-waterfall-panel{margin-bottom:var(--space-xl);padding:var(--space-lg);-webkit-backdrop-filter:blur(40px)saturate(180%);background:#121218d9;border:1px solid #ffffff1a;border-radius:20px;box-shadow:0 8px 32px #0006,inset 0 1px #ffffff0f}.rwp-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.rwp-header h3{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;color:#f5f5f7;font-size:1.05rem;font-weight:600;overflow:hidden}.rwp-header .btn{color:#f5f5f7;background:#ffffff14;border:1px solid #ffffff1f;border-radius:12px;padding:6px 14px;font-size:.78rem;transition:all .2s}.rwp-header .btn:hover{background:#ffffff26}.wf-info{gap:var(--space-lg);color:#ffffff80;margin-bottom:var(--space-md);flex-wrap:wrap;font-size:.78rem;font-weight:500;display:flex}.wf-info span{align-items:center;gap:4px;display:flex}.wf-loading{align-items:center;gap:var(--space-md);padding:var(--space-2xl);color:var(--text-secondary);flex-direction:column;display:flex}.wf-spinner{border:3px solid #ffffff14;border-top-color:#0a84ff;border-radius:50%;width:36px;height:36px;animation:.7s cubic-bezier(.4,0,.2,1) infinite wfSpin}@keyframes wfSpin{to{transform:rotate(360deg)}}.wf-fallback{padding:var(--space-lg);text-align:center}.wf-error-msg{color:var(--warning);margin-bottom:var(--space-sm);font-weight:600}.wf-fallback-actions{gap:var(--space-md);margin-top:var(--space-lg);flex-wrap:wrap;justify-content:center;display:flex}.wf-controls-bar{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);flex-wrap:wrap;display:flex}.wf-controls-bar .wf-play-btn{color:#fff;letter-spacing:-.01em;background:linear-gradient(135deg,#ff9f0a 0%,#ff6f00 100%);border:none;border-radius:14px;min-width:100%;padding:10px 20px;font-size:.88rem;font-weight:600;transition:all .25s}.wf-controls-bar .wf-play-btn:hover{transform:scale(1.02);box-shadow:0 4px 16px #ff9f0a4d}.wf-controls-bar .wf-play-btn:active{transform:scale(.98)}.wf-speed-ctrl{color:#fff6;align-items:center;gap:6px;font-size:.75rem;font-weight:500;display:flex}.wf-speed-ctrl input[type=range]{appearance:none;background:#ffffff1f;border-radius:2px;outline:none;width:60px;height:3px}.wf-speed-ctrl input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#f5f5f7;border-radius:50%;width:14px;height:14px;box-shadow:0 1px 4px #0000004d}.wf-time-display{font-variant-numeric:tabular-nums;color:#fff6;margin-left:auto;font-size:.82rem;font-weight:500}.wf-progress-bar{height:4px;margin-bottom:var(--space-sm);background:#ffffff14;border-radius:2px;position:relative;overflow:visible}.wf-progress-fill{pointer-events:none;background:linear-gradient(90deg,#ff9f0a,#ff6f00);border-radius:2px;width:0%;height:100%;transition:width .1s linear}.wf-progress-slider{appearance:none;cursor:pointer;z-index:2;background:0 0;width:100%;height:16px;position:absolute;top:-6px;left:0}.wf-progress-slider::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#f5f5f7;border-radius:50%;width:16px;height:16px;transition:transform .15s;box-shadow:0 1px 6px #0006}.wf-progress-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.wf-stage-full{background:linear-gradient(#00000080 0%,#080814cc 100%);border-radius:16px 16px 0 0;width:100%;height:350px;margin-bottom:0;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0a}.wf-stage-full canvas{width:100%;height:100%;display:block}.wf-piano-bar{background:linear-gradient(#1a1a1a 0%,#0d0d0d 100%);border-radius:0 0 16px 16px;height:56px;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0d}.wf-piano-bar .wfp-whites{height:100%;display:flex;position:relative}.wf-piano-bar .wfp-key.wfp-white{background:linear-gradient(#f8f8f8 0%,#e8e8e8 60%,#ddd 100%);border-right:1px solid #b4b4b499;border-radius:0 0 3px 3px;flex:1;height:100%;transition:background .12s,box-shadow .12s;position:relative}.wf-piano-bar .wfp-key.wfp-white:last-child{border-right:none}.wf-piano-bar .wfp-key.wfp-white.wfp-active{box-shadow:inset 0 0 12px #ff9f0a66,0 0 12px #ff9f0a33;background:linear-gradient(#ffcc02 0%,#ff9f0a 100%)!important}.wf-piano-bar .wfp-blacks{pointer-events:none;height:62%;position:absolute;top:0;left:0;right:0}.wf-piano-bar .wfp-key.wfp-black{z-index:2;background:linear-gradient(#333 0%,#1a1a1a 40%,#0a0a0a 100%);border-radius:0 0 4px 4px;height:100%;transition:background .12s,box-shadow .12s;position:absolute;box-shadow:0 2px 4px #0006,inset 0 -1px #ffffff0d}.wf-piano-bar .wfp-key.wfp-black.wfp-active{box-shadow:0 0 10px #ff9f0a4d,inset 0 0 8px #ff9f0a33;background:linear-gradient(#d4850a 0%,#a06808 100%)!important}.wf-piano-bar .wfp-label{color:#787882cc;pointer-events:none;white-space:nowrap;letter-spacing:.03em;font-size:.42rem;font-weight:600;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}.wf-legend-bar{gap:var(--space-sm);color:#ffffff4d;padding:var(--space-sm) 0;text-align:center;flex-wrap:wrap;justify-content:center;font-size:.68rem;font-weight:500;display:flex}.practice-section-grid{gap:var(--space-xl);margin-bottom:var(--space-2xl);grid-template-columns:1fr 1fr;display:grid}.timer-display{text-align:center;padding:var(--space-2xl) var(--space-xl)}.timer-time{font-variant-numeric:tabular-nums;letter-spacing:-.02em;background:var(--accent-gradient);-webkit-text-fill-color:transparent;margin-bottom:var(--space-lg);-webkit-background-clip:text;background-clip:text;font-size:4.5rem;font-weight:800;line-height:1}.timer-display.running .timer-time{animation:2s ease-in-out infinite timerPulse}@keyframes timerPulse{0%,to{opacity:1}50%{opacity:.85}}.timer-controls{gap:var(--space-md);margin-bottom:var(--space-lg);justify-content:center;display:flex}.timer-tag{text-align:center}.timer-tag select{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);outline:none;width:100%;max-width:280px;font-size:.85rem}.metronome-container{text-align:center;padding:var(--space-xl)}.metronome-bpm{color:var(--text-primary);margin-bottom:var(--space-xs);font-variant-numeric:tabular-nums;font-size:3rem;font-weight:800}.metronome-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-lg);font-size:.75rem}.metronome-slider{width:80%;max-width:300px;margin-bottom:var(--space-lg)}.metronome-dot{background:var(--glass-border);width:16px;height:16px;margin:0 auto var(--space-lg);border-radius:50%;transition:all 80ms}.metronome-dot.tick{background:var(--accent-1);box-shadow:0 0 16px var(--accent-glow);transform:scale(1.3)}.btn{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-normal) var(--ease-out);border:none;font-size:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent-gradient);color:#1a1a2e;box-shadow:var(--shadow-glow)}.btn-primary:hover{box-shadow:0 0 30px var(--accent-glow);transform:translateY(-1px)}.btn-secondary{background:var(--glass-bg);color:var(--text-primary);border:1px solid var(--glass-border)}.btn-secondary:hover{background:var(--glass-hover)}.btn-danger{background:var(--danger-bg);color:var(--danger);border:1px solid #f8717133}.btn-danger:hover{background:#f8717133}.btn-lg{padding:var(--space-md) var(--space-xl);border-radius:var(--radius-lg);font-size:1rem}.btn-icon{border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;padding:0;font-size:1.1rem;display:flex}.session-log{margin-top:var(--space-xl)}.session-log h3{margin-bottom:var(--space-md);font-size:1.1rem;font-weight:600}.session-list{gap:var(--space-sm);flex-direction:column;max-height:400px;display:flex;overflow-y:auto}.session-item{align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);flex-wrap:wrap;display:flex}.session-item .session-notes{color:var(--text-secondary);flex:100%;margin-top:2px;font-size:.8rem;font-style:italic}.timer-notes textarea{border:1px solid var(--glass-border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);padding:var(--space-sm);resize:vertical;background:#00000040;min-height:64px;font-family:inherit;font-size:.85rem}.timer-notes textarea:focus{border-color:var(--text-accent);outline:none}.session-item .session-duration{min-width:70px;color:var(--text-accent);font-variant-numeric:tabular-nums;font-size:1rem;font-weight:700}.session-item .session-tag{padding:2px var(--space-sm);background:var(--info-bg);color:var(--info);border-radius:var(--radius-full);font-size:.8rem}.session-item .session-date{color:var(--text-muted);margin-left:auto;font-size:.8rem}.session-item .session-delete{color:var(--text-muted);cursor:pointer;transition:color var(--duration-fast);background:0 0;border:none;border-radius:4px;padding:4px;font-size:.9rem}.session-item .session-delete:hover{color:var(--danger)}.charts-grid{gap:var(--space-xl);margin-bottom:var(--space-xl);grid-template-columns:1fr 1fr;display:grid}.chart-card{padding:var(--space-xl)}.chart-card h3{margin-bottom:var(--space-lg);color:var(--text-secondary);font-size:1rem;font-weight:600}.heatmap-container{padding-bottom:var(--space-sm);overflow-x:auto}.heatmap{grid-template-rows:repeat(7,14px);grid-auto-flow:column;gap:3px;display:grid}.heatmap-cell{background:var(--glass-bg);width:14px;height:14px;transition:all var(--duration-fast);border-radius:3px}.heatmap-cell[data-level="1"]{background:#f0c04026}.heatmap-cell[data-level="2"]{background:#f0c0404d}.heatmap-cell[data-level="3"]{background:#f0c04080}.heatmap-cell[data-level="4"]{background:#f0c040bf}.heatmap-cell:hover{outline:1px solid var(--accent-1);transform:scale(1.2)}.bar-chart{align-items:flex-end;gap:var(--space-sm);height:160px;padding-top:var(--space-md);display:flex}.bar-item{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.bar-fill{border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--accent-gradient);width:100%;max-width:40px;min-height:4px;transition:height var(--duration-slow) var(--ease-out);position:relative}.bar-label{color:var(--text-muted);margin-top:var(--space-xs);text-transform:uppercase;font-size:.65rem}.bar-value{color:var(--text-secondary);margin-bottom:var(--space-xs);font-size:.65rem;font-weight:600}.progress-ring-container{justify-content:center;align-items:center;gap:var(--space-xl);display:flex}.progress-ring{width:120px;height:120px;position:relative}.progress-ring svg{transform:rotate(-90deg)}.progress-ring circle{fill:none;stroke-width:8px}.progress-ring .ring-bg{stroke:var(--glass-border)}.progress-ring .ring-fill{stroke:url(#goldGradient);stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease-out)}.progress-ring .ring-text{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.progress-ring .ring-text .ring-value{color:var(--text-primary);font-size:1.5rem;font-weight:800}.progress-ring .ring-text .ring-label{color:var(--text-muted);text-transform:uppercase;font-size:.65rem}.progress-legend{gap:var(--space-sm);flex-direction:column;display:flex}.legend-item{align-items:center;gap:var(--space-sm);color:var(--text-secondary);font-size:.8rem;display:flex}.legend-dot{border-radius:50%;width:10px;height:10px}.resources-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.resource-card{padding:var(--space-lg)}.resource-card .resource-icon{margin-bottom:var(--space-md);font-size:2rem}.resource-card h4{margin-bottom:var(--space-xs);font-size:1rem;font-weight:600}.resource-card p{color:var(--text-secondary);margin-bottom:var(--space-md);font-size:.85rem}.resource-card a{color:var(--info);font-size:.85rem;font-weight:500;text-decoration:none}.resource-card a:hover{text-decoration:underline}.modal-overlay{backdrop-filter:blur(8px);z-index:1000;animation:fadeIn var(--duration-normal) var(--ease-out);background:#0009;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.show{display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:var(--space-2xl);width:90%;max-width:500px;animation:slideUp var(--duration-slow) var(--ease-spring)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-content h3{margin-bottom:var(--space-lg);font-size:1.3rem;font-weight:700}.form-group{margin-bottom:var(--space-md)}.form-group label{color:var(--text-secondary);margin-bottom:var(--space-xs);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:600;display:block}.form-group input,.form-group select,.form-group textarea{width:100%;padding:var(--space-sm) var(--space-md);background:var(--bg-base);border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:var(--text-primary);transition:border-color var(--duration-fast);outline:none;font-family:inherit;font-size:.9rem}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--accent-1)}.form-group textarea{resize:vertical;min-height:60px}.modal-actions{gap:var(--space-md);margin-top:var(--space-xl);justify-content:flex-end;display:flex}.weekly-goal{margin-bottom:var(--space-xl)}.goal-bar-track{background:var(--glass-bg);border-radius:var(--radius-full);width:100%;height:12px;margin-top:var(--space-sm);overflow:hidden}.goal-bar-fill{background:var(--accent-gradient);border-radius:var(--radius-full);height:100%;transition:width 1s var(--ease-out);min-width:4px}.goal-text{color:var(--text-secondary);margin-top:var(--space-xs);justify-content:space-between;font-size:.8rem;display:flex}.mobile-toggle{top:var(--space-md);left:var(--space-md);z-index:200;background:var(--bg-surface);border:1px solid var(--glass-border);border-radius:var(--radius-md);cursor:pointer;width:44px;height:44px;color:var(--text-primary);-webkit-tap-highlight-color:transparent;justify-content:center;align-items:center;font-size:1.3rem;display:none;position:fixed}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--glass-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@media (max-width:1024px){.charts-grid,.practice-section-grid{grid-template-columns:1fr}}@media (max-width:768px){.mobile-toggle{display:none}.sidebar{background:var(--bg-base);backdrop-filter:none;width:85vw;max-width:320px;transform:translate(-100%);box-shadow:10px 0 40px #000c}.sidebar.open{transform:translate(0)}.sidebar-backdrop{z-index:99;background:#000000a6;display:none;position:fixed;inset:0}.sidebar-backdrop.show{animation:.2s ease-out fadeIn;display:block}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.main-content{padding:var(--space-md);padding-top:var(--space-lg);padding-bottom:calc(var(--space-md) + 80px);margin-left:0}.page-header h2{font-size:1.5rem}.page-header p{font-size:.85rem}.page-header{margin-bottom:var(--space-lg)}.piano-container{-webkit-overflow-scrolling:touch;max-width:100%;margin:var(--space-md) 0;overflow-x:auto}.piano-keyboard{min-width:100%;height:160px}.piano-key.white{height:160px}.piano-key.black{width:2.61905%;height:100px;margin-left:-1.30952%}.piano-key .key-label{opacity:.8;font-size:.45rem;bottom:4px}.piano-key.black .key-label{font-size:.35rem;bottom:3px}.piano-controls{align-items:stretch;gap:var(--space-sm);flex-direction:column}.piano-controls label{justify-content:space-between;align-items:center;font-size:.85rem;display:flex}.timer-time{font-size:3rem}.song-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}.repertoire-filters{-webkit-overflow-scrolling:touch;padding-bottom:var(--space-sm);flex-wrap:nowrap;overflow-x:auto}.filter-btn{white-space:nowrap;flex-shrink:0}.rep-waterfall-panel{padding:var(--space-sm)}.rwp-header h3{font-size:.95rem}.wf-info{gap:var(--space-sm);font-size:.7rem}.wf-controls-bar{gap:4px}.wf-controls-bar .wf-play-btn{min-width:90px;padding:6px 10px;font-size:.78rem}.wf-speed-ctrl input[type=range]{width:50px}.wf-stage-full{height:300px}.wf-piano-bar{height:40px}.song-midi-actions{flex-direction:column}.wf-legend-bar{flex-direction:column;font-size:.6rem}.ed-actions{flex-direction:column}.ed-actions .btn{text-align:center;justify-content:center;width:100%;min-height:44px}.btn,button,select,.sidebar-nav li a{min-height:44px}.sidebar-nav li a{padding:var(--space-md);font-size:1rem}.modal-content{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:100%;max-height:100vh;margin-top:auto}.modal-overlay{align-items:flex-end}.glass-card{padding:var(--space-md)}.heatmap-container{-webkit-overflow-scrolling:touch;overflow-x:auto}.toast{left:var(--space-md);right:var(--space-md);bottom:calc(80px + var(--space-md));text-align:center}.mobile-bottom-nav{display:flex!important}.sidebar-streak{display:none}}@media (max-width:380px){.main-content{padding:var(--space-sm);padding-top:calc(var(--space-sm) + 56px);padding-bottom:calc(var(--space-sm) + 80px)}.page-header h2{font-size:1.3rem}.exercise-level-tabs{gap:var(--space-xs);grid-template-columns:repeat(2,1fr)}.exercise-level-tab{padding:var(--space-sm)}.stats-grid{grid-template-columns:1fr}}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);background:var(--bg-elevated);color:var(--text-primary);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;opacity:0;transition:all var(--duration-fast) var(--ease-out);border:1px solid var(--glass-border);padding:4px 8px;font-size:.7rem;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(4px)}[data-tooltip]:hover:after{opacity:1;transform:translate(-50%)translateY(0)}.empty-state{text-align:center;padding:var(--space-3xl) var(--space-xl);color:var(--text-muted)}.empty-state .empty-icon{margin-bottom:var(--space-md);opacity:.5;font-size:3rem}.empty-state p{font-size:.9rem}.toast{bottom:var(--space-xl);right:var(--space-xl);background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);color:var(--text-primary);box-shadow:var(--shadow-lg);z-index:2000;animation:toastIn var(--duration-slow) var(--ease-spring);font-size:.85rem;position:fixed}.toast.exit{animation:toastOut var(--duration-normal) var(--ease-out) forwards}@keyframes toastIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}.daily-tip-card{padding:var(--space-xl);margin-bottom:var(--space-2xl);background:linear-gradient(135deg,#f0c0400f,#e67e220a);border:1px solid #f0c04033;position:relative;overflow:hidden}.daily-tip-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.daily-tip-badge{text-transform:uppercase;letter-spacing:.1em;color:var(--accent-1);background:var(--accent-subtle);border-radius:var(--radius-full);padding:4px 12px;font-size:.75rem;font-weight:700}.daily-tip-category{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}.daily-tip-body{align-items:flex-start;gap:var(--space-lg);display:flex}.daily-tip-icon{flex-shrink:0;font-size:2.5rem;line-height:1}.daily-tip-text{color:var(--text-primary);font-size:1.1rem;font-weight:400;line-height:1.6}.tips-section{margin-bottom:var(--space-2xl)}.tips-section h3{margin-bottom:var(--space-xs);font-size:1.3rem;font-weight:700}.tips-section-desc{color:var(--text-secondary);margin-bottom:var(--space-lg);font-size:.9rem}.technique-guides{gap:var(--space-sm);flex-direction:column;display:flex}.technique-guide{transition:all var(--duration-normal) var(--ease-out);overflow:hidden}.guide-header{align-items:center;gap:var(--space-md);cursor:pointer;user-select:none;padding:0;display:flex}.guide-icon{text-align:center;flex-shrink:0;width:40px;font-size:1.5rem}.guide-title{flex:1;font-size:1rem;font-weight:600}.guide-chevron{color:var(--text-muted);transition:transform var(--duration-normal) var(--ease-out);font-size:1rem}.technique-guide.expanded .guide-chevron{transform:rotate(90deg)}.guide-body{max-height:0;transition:max-height var(--duration-slow) var(--ease-out), margin var(--duration-slow) var(--ease-out);opacity:0;margin-top:0;overflow:hidden}.technique-guide.expanded .guide-body{max-height:600px;margin-top:var(--space-lg);opacity:1;transition:max-height var(--duration-slow) var(--ease-out), margin var(--duration-slow) var(--ease-out), opacity var(--duration-normal) var(--ease-out)}.guide-body h4{margin-bottom:var(--space-md);color:var(--text-accent);font-size:.95rem;font-weight:600}.guide-body ul,.guide-body ol{padding-left:var(--space-lg);margin-bottom:var(--space-md)}.guide-body li{color:var(--text-secondary);margin-bottom:var(--space-xs);font-size:.88rem;line-height:1.7}.guide-body li strong{color:var(--text-primary)}.guide-tip{padding:var(--space-md);background:var(--accent-subtle);border-radius:var(--radius-md);color:var(--text-secondary);border-left:3px solid var(--accent-1);margin-top:var(--space-md);font-size:.85rem}.video-resources-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.video-level-group{padding:var(--space-lg)}.video-level-title{margin-bottom:var(--space-md);font-size:1rem;font-weight:700}.video-channels{gap:var(--space-sm);flex-direction:column;display:flex}.video-channel-link{gap:2px var(--space-md);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);transition:background var(--duration-fast);border:1px solid #0000;grid-template-rows:auto auto;grid-template-columns:1fr auto;text-decoration:none;display:grid}.video-channel-link:hover{background:var(--glass-hover);border-color:var(--glass-border)}.channel-name{color:var(--info);font-size:.9rem;font-weight:600}.channel-desc{color:var(--text-muted);grid-column:1;font-size:.75rem}.channel-arrow{color:var(--text-muted);grid-row:1/-1;align-self:center;font-size:1.1rem}.real-piano-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));display:grid}.real-piano-card{text-align:center;padding:var(--space-xl)}.real-piano-card .rp-icon{margin-bottom:var(--space-md);font-size:2rem}.real-piano-card h4{margin-bottom:var(--space-sm);font-size:1rem;font-weight:600}.real-piano-card p{color:var(--text-secondary);font-size:.85rem;line-height:1.6}.theory-tabs{gap:var(--space-xs);margin-bottom:var(--space-xl);padding-bottom:var(--space-md);border-bottom:1px solid var(--glass-border);flex-wrap:wrap;display:flex}.theory-tab{padding:var(--space-sm) var(--space-lg);border:1px solid var(--glass-border);border-radius:var(--radius-full);color:var(--text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);background:0 0;font-size:.85rem;font-weight:500}.theory-tab:hover{background:var(--glass-hover);color:var(--text-primary)}.theory-tab.active{background:var(--accent-subtle);border-color:var(--accent-1);color:var(--text-accent)}.notation-lessons{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(320px,1fr));display:grid}.notation-card{text-align:center;padding:var(--space-xl)}.notation-icon{margin-bottom:var(--space-md);font-size:2.5rem;line-height:1}.notation-card h4{margin-bottom:var(--space-md);font-size:1.05rem;font-weight:600}.notation-content{color:var(--text-secondary);text-align:left;font-size:.88rem;line-height:1.6}.note-values-grid{gap:var(--space-sm);margin-top:var(--space-sm);grid-template-columns:repeat(auto-fit,minmax(100px,1fr));display:grid}.nv-item{text-align:center;padding:var(--space-sm);background:var(--glass-bg);border-radius:var(--radius-sm)}.nv-symbol{margin-bottom:4px;font-size:1.5rem;display:block}.scale-controls,.chord-controls{align-items:flex-end;gap:var(--space-lg);margin-bottom:var(--space-xl);padding:var(--space-lg);flex-wrap:wrap;display:flex}.scale-control-group{gap:var(--space-xs);flex-direction:column;display:flex}.scale-control-group label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.75rem;font-weight:600}.scale-control-group select{background:var(--bg-elevated);color:var(--text-primary);border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);outline:none;min-width:140px;font-size:.9rem}.scale-control-group select:focus{border-color:var(--accent-1)}.scale-notes-display{margin-bottom:var(--space-lg);padding:var(--space-xl);text-align:center}.scale-notes-display h4{margin-bottom:var(--space-lg);background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.3rem;font-weight:700}.scale-note-badges,.chord-note-badges{justify-content:center;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);flex-wrap:wrap;display:flex}.scale-badge{padding:var(--space-sm) var(--space-md);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text-primary);font-size:1rem;font-weight:600}.scale-badge.root{background:var(--accent-subtle);border-color:var(--accent-1);color:var(--text-accent);box-shadow:0 0 10px var(--accent-glow)}.scale-arrow{color:var(--text-muted);font-size:.8rem}.scale-fingering{gap:var(--space-xl);margin-bottom:var(--space-md);color:var(--text-secondary);justify-content:center;font-size:.85rem;display:flex}.scale-pattern{justify-content:center;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.pattern-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem}.pattern-step{background:var(--info-bg);color:var(--info);border-radius:var(--radius-sm);padding:4px 10px;font-size:.8rem;font-weight:600}.mini-keyboard{height:100px;margin:var(--space-lg) auto;border-radius:0 0 var(--radius-md) var(--radius-md);max-width:500px;box-shadow:var(--shadow-md);display:flex;position:relative;overflow:hidden}.mk-key{justify-content:center;align-items:flex-end;padding-bottom:6px;transition:all 80ms;display:flex;position:relative}.mk-key span{pointer-events:none;font-size:.55rem;font-weight:600}.mk-white{z-index:1;background:linear-gradient(#f0f0f0 0%,#d8d8d8 100%);border:1px solid #bbb;border-radius:0 0 4px 4px;flex:1;height:100px}.mk-white span{color:#999}.mk-white.mk-active{border-color:var(--info);background:linear-gradient(#60a5fa4d 0%,#60a5fa26 100%)}.mk-white.mk-root{background:linear-gradient(180deg, var(--accent-1) 0%, var(--accent-3) 100%);border-color:var(--accent-3)}.mk-white.mk-root span{color:#1a1a2e;font-weight:700}.mk-white.mk-active span{color:var(--info)}.mk-black{z-index:2;background:linear-gradient(#2a2a2a 0%,#111 100%);border-radius:0 0 4px 4px;width:24px;height:65px;position:absolute}.mk-black span{color:#777;font-size:.45rem}.mk-black.mk-active{background:linear-gradient(#60a5fab3 0%,#60a5fa66 100%)}.mk-black.mk-root{background:linear-gradient(180deg, var(--accent-1) 0%, var(--accent-3) 100%)}.mk-black.mk-active span,.mk-black.mk-root span{color:#fff}.chord-info{text-align:center;padding:var(--space-xl);margin-bottom:var(--space-lg)}.chord-info h4{margin-bottom:var(--space-md);background:var(--accent-gradient);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.3rem;font-weight:700}.chord-intervals{gap:var(--space-sm);flex-wrap:wrap;justify-content:center;display:flex}.chord-interval-tag{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-full);color:var(--text-secondary);padding:4px 10px;font-size:.75rem}.progressions-section{margin-top:var(--space-2xl)}.progressions-section h3{margin-bottom:var(--space-lg);font-size:1.2rem;font-weight:700}.progressions-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.progression-card{padding:var(--space-lg);text-align:center}.prog-name{margin-bottom:var(--space-xs);font-family:Playfair Display,serif;font-size:1.2rem;font-weight:700}.prog-desc{color:var(--text-muted);margin-bottom:var(--space-md);font-size:.8rem}.prog-numerals{justify-content:center;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);display:flex}.prog-numeral{padding:var(--space-sm) var(--space-md);background:var(--accent-subtle);border-radius:var(--radius-md);color:var(--text-accent);border:1px solid #f0c04033;font-size:1rem;font-weight:700}.prog-dash{color:var(--text-muted)}.btn-sm{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);font-size:.8rem}.intervals-intro{padding:var(--space-xl);margin-bottom:var(--space-xl)}.intervals-intro h4{margin-bottom:var(--space-sm);font-size:1.1rem;font-weight:700}.intervals-intro p{color:var(--text-secondary);font-size:.9rem}.intervals-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.interval-card{text-align:center;padding:var(--space-lg);cursor:pointer}.interval-card:hover{border-color:var(--accent-1)}.interval-abbr{color:var(--text-accent);margin-bottom:var(--space-xs);font-size:1.5rem;font-weight:800}.interval-name{margin-bottom:4px;font-size:.9rem;font-weight:600}.interval-semitones{color:var(--text-muted);margin-bottom:var(--space-sm);font-size:.7rem}.interval-example{color:var(--info);background:var(--info-bg);border-radius:var(--radius-full);padding:3px 8px;font-size:.7rem;display:inline-block}.circle-section{text-align:center}.circle-intro{padding:var(--space-xl);margin-bottom:var(--space-xl);text-align:left}.circle-intro h4{margin-bottom:var(--space-sm);font-size:1.1rem;font-weight:700}.circle-intro p{color:var(--text-secondary);font-size:.9rem}.circle-container{max-width:450px;margin:0 auto var(--space-xl)}.circle-of-fifths-svg{width:100%;height:auto}.cof-major{fill:var(--text-accent);font-size:14px;font-weight:700}.cof-minor{fill:var(--text-secondary);font-size:11px;font-weight:500}.cof-sf{fill:var(--text-muted);font-size:9px}.circle-legend{gap:var(--space-xl);padding:var(--space-md) var(--space-xl);flex-wrap:wrap;justify-content:center;display:inline-flex}.circle-legend-item{align-items:center;gap:var(--space-sm);color:var(--text-secondary);font-size:.8rem;display:flex}.cof-dot{border-radius:50%;width:10px;height:10px}.major-dot{background:var(--accent-1)}.minor-dot{background:var(--text-secondary)}.sf-dot{background:var(--text-muted)}.glossary-search{margin-bottom:var(--space-lg);padding:var(--space-md)}.glossary-search input{width:100%;padding:var(--space-sm) var(--space-md);background:var(--bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--duration-fast);outline:none;font-size:.95rem}.glossary-search input:focus{border-color:var(--accent-1)}.glossary-search input::placeholder{color:var(--text-muted)}.glossary-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.glossary-item{padding:var(--space-md)}.glossary-term{color:var(--text-accent);margin-bottom:2px;font-size:1rem;font-weight:700}.glossary-lang{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-sm);font-size:.65rem}.glossary-def{color:var(--text-secondary);font-size:.85rem;line-height:1.5}.exercise-level-tabs{gap:var(--space-md);margin-bottom:var(--space-xl);grid-template-columns:repeat(4,1fr);display:grid}.exercise-level-tab{padding:var(--space-lg) var(--space-md);background:var(--glass-bg);border:2px solid var(--glass-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--duration-normal) var(--ease-out);color:var(--text-secondary);flex-direction:column;align-items:center;gap:4px;display:flex}.exercise-level-tab:hover{background:var(--glass-hover);transform:translateY(-2px)}.exercise-level-tab.active{background:var(--bg-elevated);transform:translateY(-2px);box-shadow:0 4px 20px #0000004d}.elt-icon{font-size:1.5rem}.elt-label{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-weight:700}.elt-name{opacity:.7;font-size:.82rem;font-weight:500}.exercise-level-desc{align-items:center;gap:var(--space-lg);padding:var(--space-lg) var(--space-xl);margin-bottom:var(--space-xl);display:flex}.eld-icon{font-size:2rem}.exercise-level-desc h3{margin-bottom:4px;font-size:1.15rem;font-weight:700}.exercise-level-desc p{color:var(--text-secondary);font-size:.88rem}.exercises-list{gap:var(--space-md);margin-bottom:var(--space-xl);flex-direction:column;display:flex}.exercise-list-item{align-items:center;gap:var(--space-lg);padding:var(--space-lg) var(--space-xl);cursor:pointer;transition:all var(--duration-normal) var(--ease-out);display:flex}.exercise-list-item:hover{border-color:#ffffff26;transform:translate(4px)}.exercise-list-item.selected{border-color:var(--accent-1);box-shadow:0 0 20px var(--accent-glow)}.eli-number{border-radius:50%;justify-content:center;align-items:center;width:40px;min-width:40px;height:40px;font-size:.95rem;font-weight:800;display:flex}.eli-info{flex:1}.eli-info h4{margin-bottom:4px;font-size:.95rem;font-weight:600}.eli-done{margin-left:4px;font-size:.8rem}.eli-info p{color:var(--text-muted);font-size:.8rem;line-height:1.4}.eli-meta{flex-direction:column;align-items:flex-end;gap:4px;min-width:100px;display:flex}.eli-tempo{color:var(--text-accent);font-size:.75rem;font-weight:600}.eli-count{color:var(--success);font-size:.7rem}.eli-arrow{color:var(--text-muted);transition:transform var(--duration-fast);font-size:1.2rem}.exercise-list-item:hover .eli-arrow{color:var(--accent-1);transform:translate(4px)}.exercise-detail{padding:var(--space-xl);border:2px solid var(--accent-1);animation:.3s ease-out slideUp}.ed-header{margin-bottom:var(--space-xl);justify-content:space-between;align-items:center;display:flex}.ed-header h3{font-size:1.2rem;font-weight:700}.ed-body{gap:var(--space-xl);margin-bottom:var(--space-xl);grid-template-columns:1fr auto;display:grid}.ed-instructions h4{margin-bottom:var(--space-md);font-size:.95rem;font-weight:700}.ed-step{color:var(--text-secondary);padding-left:var(--space-md);border-left:2px solid var(--glass-border);margin-bottom:var(--space-sm);font-size:.88rem;line-height:1.7}.ed-sidebar-info{gap:var(--space-md);flex-direction:column;min-width:180px;display:flex}.ed-info-item{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--space-md)}.ed-info-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px;font-size:.7rem;display:block}.ed-info-value{color:var(--text-primary);font-size:.88rem;font-weight:600}.ed-actions{gap:var(--space-md);padding-top:var(--space-lg);border-top:1px solid var(--glass-border);flex-wrap:wrap;display:flex}.ed-actions a.btn{text-decoration:none}.sr-gen-controls{gap:var(--space-md);margin:var(--space-xl) 0;justify-content:center;display:flex}.sr-generated{padding:var(--space-xl)}.sr-gen-actions{gap:var(--space-md);margin-top:var(--space-lg);justify-content:center;display:flex}.ed-sheet{border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-xl);-webkit-overflow-scrolling:touch;background:#0000004d;border:1px solid #ffffff14;overflow-x:auto}.ed-sheet-label{color:#fff6;text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-md);font-size:.75rem;font-weight:600}.ed-sheet{-webkit-overflow-scrolling:touch;padding-bottom:var(--space-sm);overflow-x:auto}.sheet-music-svg{min-width:500px;min-height:100px;max-height:180px;display:block}.waterfall-container{-webkit-backdrop-filter:blur(40px)saturate(180%);margin-bottom:var(--space-lg);background:#121218d9;border:1px solid #ffffff1a;border-radius:20px;overflow:hidden;box-shadow:0 8px 32px #0006}.wf-controls{align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);flex-wrap:wrap;display:flex}.wf-controls .wf-play-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#ff9f0a 0%,#ff6f00 100%);border:none;border-radius:14px;padding:10px 24px;font-size:.88rem;font-weight:600;transition:all .25s}.wf-controls .wf-play-btn:hover{transform:scale(1.02);box-shadow:0 4px 16px #ff9f0a4d}.wf-speed{color:#ffffff80;align-items:center;gap:8px;font-size:.8rem;font-weight:500;display:flex}.wf-speed input[type=range]{appearance:none;background:#ffffff1f;border-radius:2px;outline:none;width:80px;height:3px}.wf-speed input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;cursor:pointer;background:#f5f5f7;border-radius:50%;width:14px;height:14px;box-shadow:0 1px 4px #0000004d}.wf-stage{width:100%;position:relative}.wf-canvas{background:linear-gradient(#00000080 0%,#080814cc 100%);width:100%;display:block}.wf-piano{background:linear-gradient(#1a1a1a 0%,#0d0d0d 100%);height:56px;position:relative;box-shadow:inset 0 1px #ffffff0d}.wf-piano .wfp-whites{height:100%;display:flex;position:relative}.wf-piano .wfp-key.wfp-white{background:linear-gradient(#f8f8f8 0%,#e8e8e8 60%,#ddd 100%);border-right:1px solid #b4b4b499;border-radius:0 0 3px 3px;flex:1;height:100%;transition:background .12s,box-shadow .12s;position:relative}.wf-piano .wfp-key.wfp-white:last-child{border-right:none}.wf-piano .wfp-key.wfp-white.wfp-active{box-shadow:inset 0 0 12px #ff9f0a66,0 0 12px #ff9f0a33;background:linear-gradient(#ffcc02 0%,#ff9f0a 100%)!important}.wf-piano .wfp-blacks{pointer-events:none;height:62%;position:absolute;top:0;left:0;right:0}.wf-piano .wfp-key.wfp-black{z-index:2;background:linear-gradient(#333 0%,#1a1a1a 40%,#0a0a0a 100%);border-radius:0 0 4px 4px;width:4.5%;height:100%;transition:background .12s;position:absolute;box-shadow:0 2px 4px #0006}.wf-piano .wfp-key.wfp-black.wfp-active{box-shadow:0 0 10px #ff9f0a4d;background:linear-gradient(#d4850a 0%,#a06808 100%)!important}.wf-piano .wfp-label{color:#787882cc;pointer-events:none;white-space:nowrap;font-size:.45rem;font-weight:600;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}.wf-legend{gap:var(--space-sm);color:#ffffff59;padding:var(--space-sm) var(--space-md);text-align:center;border-top:1px solid #ffffff0f;flex-wrap:wrap;justify-content:center;font-size:.7rem;font-weight:500;display:flex}@media (max-width:768px){.sheet-music-svg{min-height:90px;max-height:160px}.wf-controls{gap:var(--space-sm);padding:var(--space-sm);flex-direction:column}.wf-play-btn{width:100%}.wf-speed{justify-content:center;width:100%}.wf-speed input[type=range]{flex:1;max-width:120px}.wf-piano{height:50px}.wfp-key.wfp-white .wfp-label{font-size:.4rem}.wf-legend span{font-size:.6rem}}.curriculum-level-header{align-items:center;gap:var(--space-lg);padding:var(--space-lg);margin-bottom:var(--space-md);margin-top:var(--space-xl);background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);display:flex;position:relative}.curriculum-level-header:first-child{margin-top:0}.curriculum-level-header.locked{opacity:.5}.curriculum-level-header .level-icon{flex-shrink:0;font-size:2rem}.curriculum-level-header .level-info{flex:1}.curriculum-level-header .level-info h3{margin-bottom:var(--space-sm);font-size:1.1rem;font-weight:700}.level-progress-bar{background:var(--glass-bg);border-radius:var(--radius-full);width:100%;height:6px;margin-bottom:var(--space-xs);overflow:hidden}.level-progress-fill{border-radius:var(--radius-full);height:100%;transition:width 1s var(--ease-out)}.level-progress-text{color:var(--text-muted);font-size:.7rem}.level-lock{color:var(--text-muted);white-space:nowrap;font-size:.75rem}.curriculum-item.locked{opacity:.4;pointer-events:none;cursor:default}@media (max-width:768px){.theory-tabs{gap:var(--space-xs)}.theory-tab{padding:var(--space-xs) var(--space-md);font-size:.75rem}.scale-controls,.chord-controls{flex-direction:column;align-items:stretch}.notation-lessons,.progressions-grid,.video-resources-grid,.real-piano-grid{grid-template-columns:1fr}.intervals-grid,.glossary-grid{grid-template-columns:repeat(2,1fr)}.mini-keyboard{height:75px}.daily-tip-body{text-align:center;flex-direction:column;align-items:center}.daily-tip-text{font-size:1rem}.circle-container{max-width:300px}.curriculum-level-header{flex-wrap:wrap}.exercise-level-tabs{gap:var(--space-sm);grid-template-columns:repeat(2,1fr)}.exercise-level-tab{padding:var(--space-md) var(--space-sm)}.elt-icon{font-size:1.2rem}.elt-name{display:none}.exercise-list-item{padding:var(--space-md);gap:var(--space-md)}.eli-meta{display:none}.ed-body{grid-template-columns:1fr}.ed-sidebar-info{flex-flow:wrap;min-width:0}.ed-sidebar-info .ed-info-item{flex:1;min-width:120px}.sr-gen-controls{flex-direction:column;align-items:center}.exercise-detail{padding:var(--space-sm) var(--space-md);box-sizing:border-box;border-width:1px;max-width:100%}.ed-header{gap:var(--space-xs);margin-bottom:var(--space-sm)!important}.ed-header h3{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.95rem;overflow:hidden}.ed-header .btn{white-space:nowrap;flex-shrink:0;padding:4px 10px;font-size:.7rem}.ed-sheet{margin:0 calc(-1 * var(--space-md));padding:var(--space-xs) var(--space-sm);-webkit-overflow-scrolling:touch;border-radius:0;overflow:auto visible;margin-bottom:var(--space-sm)!important}.ed-sheet-label{font-size:.65rem;margin-bottom:var(--space-xs)!important}.sheet-music-svg{min-width:340px;min-height:80px;max-height:120px}.waterfall-container{margin:0 calc(-1 * var(--space-md));border-radius:0;margin-bottom:var(--space-sm)!important}.wf-canvas{max-height:200px!important}.wf-piano{height:40px!important}.wf-piano .wfp-label{font-size:.35rem!important}.wf-legend{padding:4px var(--space-sm);gap:4px;font-size:.6rem}.wf-legend span:last-child{display:none}.wf-controls{padding:var(--space-xs) var(--space-sm);gap:var(--space-xs);justify-content:space-between}.wf-controls .wf-play-btn{flex:1;padding:6px 16px;font-size:.75rem}.wf-speed{font-size:.7rem}.wf-speed input[type=range]{width:60px}.ed-body{margin-bottom:var(--space-sm)!important;gap:var(--space-sm)!important}.ed-instructions h4{font-size:.85rem;margin-bottom:var(--space-xs)!important}.ed-step{padding-left:var(--space-sm);font-size:.8rem;line-height:1.5;margin-bottom:4px!important}.ed-sidebar-info{flex-flow:wrap;min-width:0;gap:var(--space-xs)!important}.ed-sidebar-info .ed-info-item{min-width:100px;padding:var(--space-xs) var(--space-sm);flex:1}.ed-info-label{font-size:.6rem;margin-bottom:2px!important}.ed-info-value{font-size:.8rem}.ed-actions{flex-direction:column;align-items:stretch;padding-top:var(--space-sm)!important;gap:var(--space-xs)!important}.ed-actions .btn{text-align:center;width:100%;padding:var(--space-sm) var(--space-md);font-size:.8rem}.main-content{width:100%;max-width:100vw}.glass-card{box-sizing:border-box;max-width:100%}}@supports (padding:env(safe-area-inset-top)){body{padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.sidebar{padding-top:calc(var(--space-lg) + env(safe-area-inset-top))}.mobile-bottom-nav{padding-bottom:max(var(--space-xs), env(safe-area-inset-bottom))}.main-content{padding-bottom:calc(80px + env(safe-area-inset-bottom))}}html,body{overscroll-behavior-x:none;-webkit-overflow-scrolling:touch}body{overflow-x:hidden;overflow-y:auto!important}body.capacitor-app{overscroll-behavior-y:contain}body.capacitor-app .piano-key,body.capacitor-app .bnav-item,body.capacitor-app .sidebar-nav a,body.capacitor-app .btn,body.capacitor-app .filter-btn,body.capacitor-app .song-status-toggle button{user-select:none;-webkit-touch-callout:none}body.capacitor-app .bnav-item{min-width:60px;min-height:48px}body.capacitor-app .sidebar-nav li a{min-height:44px}body.capacitor-app #midiStatus{display:none}@media (max-width:768px){.keyboard-mapping{display:none}}body.capacitor-app .keyboard-mapping,body.capacitor-app .piano-header-description{display:none}body.capacitor-app .piano-header-description-mobile{display:block!important}@media (max-width:768px){.piano-header-description{display:none}.piano-header-description-mobile{display:block!important}.piano-container{padding:var(--space-sm)}.piano-keyboard,.piano-key.white{height:180px}.piano-key.black{height:110px}}body.capacitor-app .mobile-bottom-nav{z-index:1000;position:fixed;bottom:0;left:0;right:0;display:flex!important}.journal-hero{padding:var(--space-xl);margin-bottom:var(--space-lg)}.journal-kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--text-accent);margin:0 0 var(--space-xs);font-size:.75rem}.journal-hero-title{margin:0 0 var(--space-sm);font-size:1.35rem;line-height:1.3}.journal-hero-sub{color:var(--text-secondary);margin:0 0 var(--space-lg);max-width:40rem;font-size:.9rem}.journal-quick-actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}.journal-stats{gap:var(--space-md);margin-bottom:var(--space-lg);grid-template-columns:repeat(4,1fr);display:grid}.journal-stat{padding:var(--space-md);text-align:center}.journal-stat-value{color:var(--text-accent);font-size:1.5rem;font-weight:700}.journal-stat-label{color:var(--text-muted);margin-top:4px;font-size:.75rem}.journal-tip{padding:var(--space-lg);margin-bottom:var(--space-lg)}.journal-tip-label{color:var(--text-accent);margin-bottom:var(--space-sm);font-size:.75rem}.journal-tip p{margin:0 0 var(--space-md);line-height:1.5}.journal-columns{gap:var(--space-md);grid-template-columns:repeat(3,1fr);display:grid}.journal-panel{padding:var(--space-lg)}.journal-panel h4{margin:0 0 var(--space-sm);font-size:.95rem}.journal-panel-title{margin:0 0 4px;font-weight:600}.journal-panel-desc{color:var(--text-secondary);margin:0 0 var(--space-sm);font-size:.85rem;line-height:1.45}.journal-badge{color:var(--text-accent);background:#f0c04026;border-radius:999px;padding:2px 8px;font-size:.7rem;display:inline-block}.journal-song-list{margin:0 0 var(--space-md);padding:0;list-style:none}.journal-song-list li{border-bottom:1px solid var(--glass-border);flex-direction:column;padding:6px 0;font-size:.9rem;display:flex}.journal-song-list li span{color:var(--text-muted);font-size:.75rem}.journal-session-row{border-bottom:1px solid var(--glass-border);padding:8px 0;font-size:.9rem}.journal-session-row .session-tag{margin-left:8px;font-size:.75rem}.journal-session-date{color:var(--text-muted);margin-left:8px;font-size:.8rem}.journal-session-note{color:var(--text-secondary);margin-top:4px;font-size:.8rem;font-style:italic}.ed-atril-note{color:var(--text-secondary);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-md);background:#f0c04014;border:1px solid #f0c04033;font-size:.85rem}@media (max-width:900px){.journal-stats{grid-template-columns:repeat(2,1fr)}.journal-columns{grid-template-columns:1fr}}.mobile-bottom-nav .bnav-item{min-height:48px}@media (max-width:1024px){.mobile-toggle{justify-content:center;align-items:center;display:flex}.sidebar{width:280px;max-width:85vw;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-backdrop{z-index:99;background:#000000a6;display:none;position:fixed;inset:0}.sidebar-backdrop.show{display:block}.main-content{padding-bottom:calc(var(--space-md) + 80px + env(safe-area-inset-bottom,0px));margin-left:0}.mobile-bottom-nav{display:flex!important}}@media (max-width:380px){.main-content{padding-top:var(--space-sm)}}@media (max-width:768px){.sheet-music-svg{height:auto;min-height:140px;max-height:none}.ed-header h3{white-space:normal;text-overflow:unset;overflow:visible}.ed-header .btn{min-height:44px;padding:8px 14px}.theory-tabs{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:8px;padding-bottom:4px;overflow-x:auto}.theory-tab{white-space:nowrap;flex:none}.curriculum-item .node{width:36px;height:36px;font-size:.85rem}.session-item .session-delete{min-width:44px;min-height:44px}}.guided-sessions{padding:var(--space-lg);margin-bottom:var(--space-xl)}.guided-title{margin:0 0 4px;font-size:1rem}.guided-sub{margin:0 0 var(--space-md);color:var(--text-secondary);font-size:.85rem}.guided-grid{gap:var(--space-sm);grid-template-columns:repeat(3,1fr);display:grid}.guided-card{text-align:left;border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--space-md);color:inherit;cursor:pointer;background:#ffffff0a;flex-direction:column;gap:6px;min-height:72px;display:flex}.guided-card:hover,.guided-card:active{border-color:var(--text-accent);background:#f0c04014}.guided-card strong{font-size:.9rem}.guided-card span{color:var(--text-muted);font-size:.75rem;line-height:1.35}.guided-active{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:#f0c0401a;border:1px solid #f0c04040}.guided-active h4{margin:0 0 8px}.guided-steps{margin:0 0 12px;padding:0;list-style:none}.guided-steps li{border-bottom:1px solid var(--glass-border);align-items:flex-start;gap:10px;padding:8px 0;font-size:.9rem;display:flex}.guided-steps li.done{opacity:.55;text-decoration:line-through}.guided-steps li.current{color:var(--text-accent);font-weight:600}.guided-step-min{font-variant-numeric:tabular-nums;color:var(--text-muted);flex:0 0 42px;font-size:.8rem}@media (max-width:900px){.guided-grid{grid-template-columns:1fr}}.theory-learn-footer{margin-top:var(--space-xl);padding:var(--space-lg)}.theory-learn-footer h4{margin:0 0 8px}.theory-quiz-q{margin:var(--space-md) 0;font-size:.95rem}.theory-quiz-options{flex-direction:column;gap:8px;display:flex}.theory-quiz-options button{text-align:left;min-height:48px}.theory-quiz-options button.correct{background:#34d39926;border-color:#34d399}.theory-quiz-options button.wrong{background:#ff453a1f;border-color:#ff453a}.theory-topic-done{color:#34d399;margin-bottom:var(--space-sm);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.atril-overlay{z-index:2000;padding:max(12px, env(safe-area-inset-top)) 16px max(24px, env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;background:#06080f;position:fixed;inset:0;overflow-y:auto}.atril-overlay .atril-top{z-index:2;background:#06080f;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:8px 0;display:flex;position:sticky;top:0}.atril-overlay .atril-title{margin:0;font-size:1.1rem;font-weight:700}.atril-overlay .sheet-music-svg{width:100%;min-height:180px;max-height:none}.atril-overlay .ed-inst-text .ed-step{border-bottom:1px solid var(--glass-border);padding:10px 0;font-size:1rem}.atril-actions{background:linear-gradient(#0000,#06080f 30%);flex-wrap:wrap;gap:10px;margin-top:16px;padding:16px 0 8px;display:flex;position:sticky;bottom:0}.atril-actions .btn{flex:140px;min-height:48px}body.atril-open .mobile-bottom-nav,body.atril-open .mobile-toggle,body.atril-open .sidebar{visibility:hidden}.curriculum-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.curriculum-actions .btn{min-height:40px;font-size:.8rem}.journal-plan{padding:var(--space-lg);margin-bottom:var(--space-lg)}.journal-plan ol{color:var(--text-secondary);margin:8px 0 12px;padding-left:1.2rem;font-size:.9rem;line-height:1.55}.journal-plan li{margin-bottom:4px}@media (max-width:768px){.mobile-toggle{display:none!important}}.auth-overlay{z-index:5000;background:#06080feb;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.auth-overlay[hidden]{display:none!important}.auth-card{width:100%;max-width:400px;padding:var(--space-xl)}.auth-brand{margin-bottom:8px;font-size:1.4rem;font-weight:700}.auth-card h2{margin:0 0 8px;font-size:1.25rem}.auth-card>p{color:var(--text-secondary);margin:0 0 var(--space-lg);font-size:.9rem;line-height:1.45}.auth-label{color:var(--text-muted);margin:10px 0 4px;font-size:.8rem;display:block}.auth-card input{border-radius:var(--radius-md);border:1px solid var(--glass-border);width:100%;color:var(--text-primary);box-sizing:border-box;background:#00000059;min-height:48px;padding:12px 14px;font-size:1rem}.auth-password-wrap{align-items:center;display:flex;position:relative}.auth-password-wrap input{padding-right:52px}.auth-eye{width:44px;height:44px;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.25rem;display:flex;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.auth-eye:active,.auth-eye:hover{color:var(--text-primary);background:#ffffff14}.auth-error{color:#ff453a;min-height:1.2em;margin:10px 0;font-size:.85rem}.auth-user-chip{padding:0 var(--space-md) var(--space-md);justify-content:space-between;align-items:center;gap:8px;display:flex}.auth-user-name{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}body.auth-locked .app-container,body.auth-locked .mobile-bottom-nav,body.auth-locked .mobile-toggle,body.auth-locked .sidebar{filter:blur(2px);pointer-events:none}.choose-grid{gap:var(--space-md);margin-bottom:var(--space-lg);grid-template-columns:repeat(2,1fr);display:grid}.choose-card{text-align:left;padding:var(--space-lg);cursor:pointer;border:1px solid var(--glass-border);background:var(--glass-bg);color:inherit;flex-direction:column;gap:6px;min-height:110px;display:flex}.choose-card:active,.choose-card:hover{border-color:var(--text-accent)}.choose-icon{font-size:1.5rem}.choose-card strong{font-size:1rem}.choose-card span:last-child{color:var(--text-muted);font-size:.8rem;line-height:1.35}.pick-chips{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.pick-chip{border:1px solid var(--glass-border);min-height:44px;color:inherit;cursor:pointer;background:#ffffff0a;border-radius:999px;padding:8px 14px;font-size:.85rem}.pick-chip.done{color:#34d399;border-color:#34d39980}.pick-chip:active,.pick-chip:hover{border-color:var(--text-accent)}@media (max-width:600px){.choose-grid{grid-template-columns:1fr}}
