*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
.rpage { min-height: 100vh; min-height: 100svh; }
body { font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; font-size: var(--text-bodyMedium-size, 14px); letter-spacing: var(--text-bodyMedium-spacing, 0.25px); line-height: var(--text-bodyMedium-height, 1.45); font-optical-sizing: none; }
table { border-collapse: collapse; border-spacing: 0; }
button, input, select, textarea { font: inherit; }
img { display: block; max-width: 100%; }
h1, h2, h3, h4, h5, h6 { font: inherit; }
a { color: inherit; text-decoration: none; }
ul, ol, li { list-style: none; }
.rink { position: relative; overflow: hidden; }
.rink, button.rbtn, .rtap { cursor: pointer; -webkit-user-select: none; user-select: none; }
.rhl > * { flex-shrink: 0; }
button.rbtn:disabled, .rtap:disabled { cursor: default; }
input[type="checkbox"], input[type="radio"], input[type="range"], select { cursor: pointer; }
input:disabled, select:disabled { cursor: default; }
a[href] { cursor: pointer; }
.rink::after { content: ""; position: absolute; inset: 0; border-radius: inherit; opacity: 0; transition: opacity .15s; pointer-events: none; }
.rink:hover::after { background: var(--rink-hover); opacity: var(--rink-hover-o, 0); }
.rink:focus-visible::after { background: var(--rink-focus, rgba(0,0,0,.12)); opacity: 1; }
.rink:active::after { background: var(--rink-splash, rgba(0,0,0,.12)); opacity: 1; }
.rink-ripple { position: absolute; border-radius: 50%; pointer-events: none; transform: scale(0); background: var(--rink-splash, rgba(0,0,0,.25)); animation: reeel-ripple .55s ease-out; }
@keyframes reeel-ripple { to { transform: scale(1); opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
  html { scroll-behavior: auto !important; }
  [data-reeel-wait] { animation-duration: revert !important; animation-iteration-count: revert !important; }
}
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20A0-20C0, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0370-03FF; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+1F00-1FFF; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+2190-27BF; }
@font-face { font-family: 'Inter'; src: url('/data/fonts/Inter.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+02CD, U+02D8-02D9, U+02DB, U+0300, U+0302-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+0530-1C7F, U+1C89-1CFF, U+1DC0-1DFF, U+1EA0-1EF1, U+2070-2073, U+2075-209F, U+20C1-2112, U+2114-2115, U+2117-2121, U+2123-218F, U+27C0-2C5F, U+2C80-2DDF, U+2E00-A63F, U+A6A0-A71F, U+A800-D7FF, U+E000-FE2D, U+FE30-FEFE, U+FF00-FFFC, U+FFFE-10FFFF; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20A0-20C0, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0370-03FF; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+1F00-1FFF; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+2190-27BF; }
@font-face { font-family: 'JetBrains Mono'; src: url('/data/fonts/JetBrainsMono.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+02CD, U+02D8-02D9, U+02DB, U+0300, U+0302-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+0530-1C7F, U+1C89-1CFF, U+1DC0-1DFF, U+1EA0-1EF1, U+2070-2073, U+2075-209F, U+20C1-2112, U+2114-2115, U+2117-2121, U+2123-218F, U+27C0-2C5F, U+2C80-2DDF, U+2E00-A63F, U+A6A0-A71F, U+A800-D7FF, U+E000-FE2D, U+FE30-FEFE, U+FF00-FFFC, U+FFFE-10FFFF; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20A0-20C0, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+0370-03FF; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+1F00-1FFF; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+2190-27BF; }
@font-face { font-family: 'FlutterMaterialIcons'; src: url('/data/fonts/FlutterMaterialIcons.otf') format('opentype'); font-weight: 100 900; font-display: swap; unicode-range: U+02CD, U+02D8-02D9, U+02DB, U+0300, U+0302-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+0530-1C7F, U+1C89-1CFF, U+1DC0-1DFF, U+1EA0-1EF1, U+2070-2073, U+2075-209F, U+20C1-2112, U+2114-2115, U+2117-2121, U+2123-218F, U+27C0-2C5F, U+2C80-2DDF, U+2E00-A63F, U+A6A0-A71F, U+A800-D7FF, U+E000-FE2D, U+FE30-FEFE, U+FF00-FFFC, U+FFFE-10FFFF; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20A0-20C0, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+0370-03FF; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+1F00-1FFF; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+2190-27BF; }
@font-face { font-family: 'CupertinoIcons'; src: url('/data/fonts/CupertinoIcons.ttf') format('truetype'); font-weight: 100 900; font-display: swap; unicode-range: U+02CD, U+02D8-02D9, U+02DB, U+0300, U+0302-0303, U+0305-0307, U+0309-0328, U+032A-036F, U+0530-1C7F, U+1C89-1CFF, U+1DC0-1DFF, U+1EA0-1EF1, U+2070-2073, U+2075-209F, U+20C1-2112, U+2114-2115, U+2117-2121, U+2123-218F, U+27C0-2C5F, U+2C80-2DDF, U+2E00-A63F, U+A6A0-A71F, U+A800-D7FF, U+E000-FE2D, U+FE30-FEFE, U+FF00-FFFC, U+FFFE-10FFFF; }
:root {
  --primary: #278DB5FF;
  --accent: #25A97CFF;
  --course: #25A97CFF;
  --courseInk: #127150FF;
  --courseSoft: #E3F5EEFF;
  --link: #1D7299FF;
  --primarySoft: #E4F1F7FF;
  --onPrimary: #FFFFFFFF;
  --backgroundPage: #F6F8FAFF;
  --backgroundSurface: #FFFFFFFF;
  --glass: #FFFFFFD4;
  --guideAccent: #4FB0D8FF;
  --guideAccentSoft: #FFEBD0FF;
  --guideBorder: #FFFFFFFF;
  --backgroundElevated: #EEF3F7FF;
  --textStrong: #15202BFF;
  --textMuted: #4E5A66FF;
  --textFaint: #7F8B97FF;
  --border: #DFE6ECFF;
  --warn: #B7791FFF;
  --warnSoft: #FDF3E1FF;
  --action: #1E7AA2FF;
  --codeKeyword: #8A3FB0FF;
  --codeString: #17734FFF;
  --codeComment: #6E7781FF;
  --codeNumber: #A2530AFF;
  --codeType: #1D6E94FF;
  --codeFunction: #6A45B5FF;
  --codeMeta: #8A6100FF;
  color-scheme: light;
}
body { background: var(--backgroundPage); }
@media (prefers-color-scheme: dark) {
:root:not([data-theme="light"]) {
  --primary: #4FB0D8FF;
  --accent: #3DC292FF;
  --course: #3DC292FF;
  --courseInk: #5FD3A8FF;
  --courseSoft: #2C3A33FF;
  --link: #72C3E4FF;
  --primarySoft: #2B3840FF;
  --onPrimary: #1E1E1EFF;
  --backgroundPage: #282828FF;
  --backgroundSurface: #303030FF;
  --glass: #1E1F24B8;
  --guideAccent: #4FB0D8FF;
  --guideAccentSoft: #4A3214FF;
  --guideBorder: #FFFFFFFF;
  --backgroundElevated: #393836FF;
  --textStrong: #F2EBE0FF;
  --textMuted: #C4A576FF;
  --textFaint: #968A76FF;
  --border: #45423DFF;
  --warn: #E0A84AFF;
  --warnSoft: #3D3528FF;
  --action: #4FB0D8FF;
  --codeKeyword: #D69BFFFF;
  --codeString: #8FD9A8FF;
  --codeComment: #968A76FF;
  --codeNumber: #F0B36AFF;
  --codeType: #72C3E4FF;
  --codeFunction: #E8C47AFF;
  --codeMeta: #C4A576FF;
  color-scheme: dark;
}
}
[data-theme="light"] {
  --primary: #278DB5FF;
  --accent: #25A97CFF;
  --course: #25A97CFF;
  --courseInk: #127150FF;
  --courseSoft: #E3F5EEFF;
  --link: #1D7299FF;
  --primarySoft: #E4F1F7FF;
  --onPrimary: #FFFFFFFF;
  --backgroundPage: #F6F8FAFF;
  --backgroundSurface: #FFFFFFFF;
  --glass: #FFFFFFD4;
  --guideAccent: #4FB0D8FF;
  --guideAccentSoft: #FFEBD0FF;
  --guideBorder: #FFFFFFFF;
  --backgroundElevated: #EEF3F7FF;
  --textStrong: #15202BFF;
  --textMuted: #4E5A66FF;
  --textFaint: #7F8B97FF;
  --border: #DFE6ECFF;
  --warn: #B7791FFF;
  --warnSoft: #FDF3E1FF;
  --action: #1E7AA2FF;
  --codeKeyword: #8A3FB0FF;
  --codeString: #17734FFF;
  --codeComment: #6E7781FF;
  --codeNumber: #A2530AFF;
  --codeType: #1D6E94FF;
  --codeFunction: #6A45B5FF;
  --codeMeta: #8A6100FF;
  color-scheme: light;
}
[data-theme="dark"] {
  --primary: #4FB0D8FF;
  --accent: #3DC292FF;
  --course: #3DC292FF;
  --courseInk: #5FD3A8FF;
  --courseSoft: #2C3A33FF;
  --link: #72C3E4FF;
  --primarySoft: #2B3840FF;
  --onPrimary: #1E1E1EFF;
  --backgroundPage: #282828FF;
  --backgroundSurface: #303030FF;
  --glass: #1E1F24B8;
  --guideAccent: #4FB0D8FF;
  --guideAccentSoft: #4A3214FF;
  --guideBorder: #FFFFFFFF;
  --backgroundElevated: #393836FF;
  --textStrong: #F2EBE0FF;
  --textMuted: #C4A576FF;
  --textFaint: #968A76FF;
  --border: #45423DFF;
  --warn: #E0A84AFF;
  --warnSoft: #3D3528FF;
  --action: #4FB0D8FF;
  --codeKeyword: #D69BFFFF;
  --codeString: #8FD9A8FF;
  --codeComment: #968A76FF;
  --codeNumber: #F0B36AFF;
  --codeType: #72C3E4FF;
  --codeFunction: #E8C47AFF;
  --codeMeta: #C4A576FF;
  color-scheme: dark;
}
@font-face { font-family: 'Material Icons'; src: url('/data/icons/MaterialIcons.otf') format('opentype'); font-display: swap; }
.reeel-icon { font-family: 'Material Icons'; font-feature-settings: 'rlig'; line-height: 1; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden; }
