cognikit 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/app.js CHANGED
@@ -2891,31 +2891,140 @@ function isAssetType(v) {
2891
2891
  }
2892
2892
 
2893
2893
  // src/shared/config.ts
2894
- var defaultCognikitThemeVariables = {
2895
- "--edu-bg": "247 249 252",
2896
- "--edu-card": "255 255 255",
2897
- "--edu-ink": "31 41 55",
2898
- "--edu-second-ink": "71 85 105",
2899
- "--edu-third-ink": "100 116 139",
2900
- "--edu-inverted-ink": "248 250 252",
2901
- "--edu-success": "22 163 74",
2902
- "--edu-error": "220 38 38",
2903
- "--edu-warning": "255 222 33",
2904
- "--edu-neutral": "14 165 233",
2905
- "--edu-first-accent": "49 120 198",
2906
- "--edu-second-accent": "245 158 11",
2907
- "--edu-third-accent": "236 72 153",
2908
- "--edu-border": "229 231 235",
2909
- "--edu-muted": "243 244 246",
2910
- "--edu-radius": "0.375rem",
2911
- "--edu-shadow-color": "0 0 0",
2912
- "--edu-pad": "1rem",
2913
- "--edu-mar": "0"
2894
+ var cognikitThemePresets = {
2895
+ "default-light": {
2896
+ "--edu-bg": "247 249 252",
2897
+ "--edu-card": "255 255 255",
2898
+ "--edu-ink": "31 41 55",
2899
+ "--edu-second-ink": "71 85 105",
2900
+ "--edu-third-ink": "100 116 139",
2901
+ "--edu-inverted-ink": "248 250 252",
2902
+ "--edu-success": "22 163 74",
2903
+ "--edu-error": "220 38 38",
2904
+ "--edu-warning": "255 222 33",
2905
+ "--edu-neutral": "14 165 233",
2906
+ "--edu-first-accent": "49 120 198",
2907
+ "--edu-second-accent": "245 158 11",
2908
+ "--edu-third-accent": "236 72 153",
2909
+ "--edu-border": "229 231 235",
2910
+ "--edu-muted": "243 244 246",
2911
+ "--edu-radius": "0.375rem",
2912
+ "--edu-shadow-color": "0 0 0",
2913
+ "--edu-pad": "1rem",
2914
+ "--edu-mar": "0"
2915
+ },
2916
+ "default-dark": {
2917
+ "--edu-bg": "15 23 42",
2918
+ "--edu-card": "30 41 59",
2919
+ "--edu-ink": "241 245 249",
2920
+ "--edu-second-ink": "203 213 225",
2921
+ "--edu-third-ink": "148 163 184",
2922
+ "--edu-inverted-ink": "15 23 42",
2923
+ "--edu-success": "74 222 128",
2924
+ "--edu-error": "248 113 113",
2925
+ "--edu-warning": "250 204 21",
2926
+ "--edu-neutral": "56 189 248",
2927
+ "--edu-first-accent": "96 165 250",
2928
+ "--edu-second-accent": "251 191 36",
2929
+ "--edu-third-accent": "244 114 182",
2930
+ "--edu-border": "71 85 105",
2931
+ "--edu-muted": "51 65 85",
2932
+ "--edu-radius": "0.375rem",
2933
+ "--edu-shadow-color": "2 6 23",
2934
+ "--edu-pad": "1rem",
2935
+ "--edu-mar": "0"
2936
+ },
2937
+ "ocean-light": {
2938
+ "--edu-bg": "239 246 255",
2939
+ "--edu-card": "255 255 255",
2940
+ "--edu-ink": "8 47 73",
2941
+ "--edu-second-ink": "14 116 144",
2942
+ "--edu-third-ink": "8 145 178",
2943
+ "--edu-inverted-ink": "239 246 255",
2944
+ "--edu-success": "5 150 105",
2945
+ "--edu-error": "225 29 72",
2946
+ "--edu-warning": "245 158 11",
2947
+ "--edu-neutral": "2 132 199",
2948
+ "--edu-first-accent": "6 182 212",
2949
+ "--edu-second-accent": "59 130 246",
2950
+ "--edu-third-accent": "14 165 233",
2951
+ "--edu-border": "186 230 253",
2952
+ "--edu-muted": "224 242 254",
2953
+ "--edu-radius": "0.5rem",
2954
+ "--edu-shadow-color": "8 47 73",
2955
+ "--edu-pad": "1rem",
2956
+ "--edu-mar": "0"
2957
+ },
2958
+ "ocean-dark": {
2959
+ "--edu-bg": "8 47 73",
2960
+ "--edu-card": "12 74 110",
2961
+ "--edu-ink": "236 254 255",
2962
+ "--edu-second-ink": "165 243 252",
2963
+ "--edu-third-ink": "103 232 249",
2964
+ "--edu-inverted-ink": "8 47 73",
2965
+ "--edu-success": "52 211 153",
2966
+ "--edu-error": "251 113 133",
2967
+ "--edu-warning": "251 191 36",
2968
+ "--edu-neutral": "34 211 238",
2969
+ "--edu-first-accent": "103 232 249",
2970
+ "--edu-second-accent": "56 189 248",
2971
+ "--edu-third-accent": "45 212 191",
2972
+ "--edu-border": "14 116 144",
2973
+ "--edu-muted": "14 116 144",
2974
+ "--edu-radius": "0.5rem",
2975
+ "--edu-shadow-color": "8 47 73",
2976
+ "--edu-pad": "1rem",
2977
+ "--edu-mar": "0"
2978
+ },
2979
+ "forest-light": {
2980
+ "--edu-bg": "240 253 244",
2981
+ "--edu-card": "255 255 255",
2982
+ "--edu-ink": "20 83 45",
2983
+ "--edu-second-ink": "22 101 52",
2984
+ "--edu-third-ink": "74 124 89",
2985
+ "--edu-inverted-ink": "240 253 244",
2986
+ "--edu-success": "22 163 74",
2987
+ "--edu-error": "220 38 38",
2988
+ "--edu-warning": "234 179 8",
2989
+ "--edu-neutral": "34 197 94",
2990
+ "--edu-first-accent": "34 197 94",
2991
+ "--edu-second-accent": "132 204 22",
2992
+ "--edu-third-accent": "16 185 129",
2993
+ "--edu-border": "187 247 208",
2994
+ "--edu-muted": "220 252 231",
2995
+ "--edu-radius": "0.5rem",
2996
+ "--edu-shadow-color": "20 83 45",
2997
+ "--edu-pad": "1rem",
2998
+ "--edu-mar": "0"
2999
+ },
3000
+ "forest-dark": {
3001
+ "--edu-bg": "20 83 45",
3002
+ "--edu-card": "22 101 52",
3003
+ "--edu-ink": "240 253 244",
3004
+ "--edu-second-ink": "187 247 208",
3005
+ "--edu-third-ink": "134 239 172",
3006
+ "--edu-inverted-ink": "20 83 45",
3007
+ "--edu-success": "74 222 128",
3008
+ "--edu-error": "248 113 113",
3009
+ "--edu-warning": "250 204 21",
3010
+ "--edu-neutral": "74 222 128",
3011
+ "--edu-first-accent": "134 239 172",
3012
+ "--edu-second-accent": "190 242 100",
3013
+ "--edu-third-accent": "52 211 153",
3014
+ "--edu-border": "34 197 94",
3015
+ "--edu-muted": "21 128 61",
3016
+ "--edu-radius": "0.5rem",
3017
+ "--edu-shadow-color": "20 83 45",
3018
+ "--edu-pad": "1rem",
3019
+ "--edu-mar": "0"
3020
+ }
2914
3021
  };
3022
+ var defaultCognikitThemeVariables = cognikitThemePresets["default-light"];
2915
3023
  var cognikitConfig = {
2916
3024
  audioBaseUrl: null,
2917
3025
  soundFiles: {},
2918
3026
  injectThemeVariables: true,
3027
+ theme: null,
2919
3028
  themeVariables: {}
2920
3029
  };
2921
3030
  var THEME_STYLE_ID = "cognikit-theme-variables";
@@ -2932,6 +3041,12 @@ function configureCognikit(config) {
2932
3041
  if (config.injectThemeVariables !== void 0) {
2933
3042
  cognikitConfig.injectThemeVariables = config.injectThemeVariables;
2934
3043
  }
3044
+ if (config.theme !== void 0) {
3045
+ cognikitConfig.theme = config.theme;
3046
+ }
3047
+ if (config.themeVariables === null) {
3048
+ cognikitConfig.themeVariables = {};
3049
+ }
2935
3050
  if (config.themeVariables) {
2936
3051
  cognikitConfig.themeVariables = {
2937
3052
  ...cognikitConfig.themeVariables,
@@ -2943,28 +3058,54 @@ function configureCognikit(config) {
2943
3058
  function getCognikitConfig() {
2944
3059
  return cognikitConfig;
2945
3060
  }
3061
+ function getCognikitThemePresets() {
3062
+ return cognikitThemePresets;
3063
+ }
3064
+ function resolveCognikitTheme(theme = cognikitConfig.theme, themeVariables = cognikitConfig.themeVariables) {
3065
+ const baseTheme = theme ? cognikitThemePresets[theme] : defaultCognikitThemeVariables;
3066
+ return {
3067
+ ...baseTheme,
3068
+ ...themeVariables
3069
+ };
3070
+ }
3071
+ function setCognikitTheme(theme, themeVariables) {
3072
+ cognikitConfig.theme = theme;
3073
+ if (themeVariables !== void 0) {
3074
+ cognikitConfig.themeVariables = { ...themeVariables };
3075
+ }
3076
+ ensureCognikitTheme();
3077
+ }
3078
+ function resetCognikitTheme() {
3079
+ cognikitConfig.theme = null;
3080
+ cognikitConfig.themeVariables = {};
3081
+ ensureCognikitTheme();
3082
+ }
2946
3083
  function ensureCognikitTheme() {
2947
- if (typeof document === "undefined" || !cognikitConfig.injectThemeVariables) {
3084
+ if (typeof document === "undefined") {
2948
3085
  return;
2949
3086
  }
2950
- const root = document.documentElement;
2951
- const computed = window.getComputedStyle(root);
2952
- const nextTheme = {
2953
- ...defaultCognikitThemeVariables,
2954
- ...cognikitConfig.themeVariables
2955
- };
2956
3087
  let style = document.getElementById(THEME_STYLE_ID);
2957
3088
  if (!style) {
2958
3089
  style = document.createElement("style");
2959
3090
  style.id = THEME_STYLE_ID;
2960
3091
  document.head.appendChild(style);
2961
3092
  }
2962
- const missingEntries = Object.entries(nextTheme).filter(([name]) => {
3093
+ if (!cognikitConfig.injectThemeVariables) {
3094
+ style.textContent = "";
3095
+ return;
3096
+ }
3097
+ const root = document.documentElement;
3098
+ const computed = window.getComputedStyle(root);
3099
+ const nextTheme = resolveCognikitTheme();
3100
+ const shouldApplyExplicitTheme = cognikitConfig.theme !== null || Object.keys(cognikitConfig.themeVariables).length > 0;
3101
+ if (shouldApplyExplicitTheme) {
3102
+ style.textContent = renderThemeCss(nextTheme);
3103
+ return;
3104
+ }
3105
+ const missingEntries = Object.entries(defaultCognikitThemeVariables).filter(([name]) => {
2963
3106
  return computed.getPropertyValue(name).trim() === "";
2964
3107
  });
2965
- style.textContent = missingEntries.length === 0 ? "" : `:root {
2966
- ${missingEntries.map(([name, value]) => ` ${name}: ${value};`).join("\n")}
2967
- }`;
3108
+ style.textContent = missingEntries.length === 0 ? "" : renderThemeCss(Object.fromEntries(missingEntries));
2968
3109
  }
2969
3110
  function resolveConfiguredSoundUrl(soundName, defaultFilename) {
2970
3111
  const configured = cognikitConfig.soundFiles[soundName];
@@ -2994,6 +3135,11 @@ function resolveBaseUrl(baseUrl) {
2994
3135
  function isAbsoluteUrl(url) {
2995
3136
  return /^https?:\/\//.test(url);
2996
3137
  }
3138
+ function renderThemeCss(themeVariables) {
3139
+ return `:root {
3140
+ ${Object.entries(themeVariables).map(([name, value]) => ` ${name}: ${value};`).join("\n")}
3141
+ }`;
3142
+ }
2997
3143
 
2998
3144
  // src/interactions/registry.ts
2999
3145
  var interactionsRegistry = /* @__PURE__ */ new Map();
@@ -3683,6 +3829,7 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
3683
3829
 
3684
3830
  :host {
3685
3831
  display: inline-block;
3832
+ container-type: size;
3686
3833
  --chip-color: rgb(var(--edu-first-accent));
3687
3834
  --chip-colored-color: #d1d1d1;
3688
3835
  }
@@ -3690,20 +3837,36 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
3690
3837
  :host([colored]) {
3691
3838
  & .chip-container { position: relative; }
3692
3839
 
3840
+ & .content-zone {
3841
+ border-color: color-mix(in srgb, var(--chip-colored-color) 55%, rgb(var(--edu-border)));
3842
+ background:
3843
+ linear-gradient(
3844
+ 180deg,
3845
+ color-mix(in srgb, var(--chip-colored-color) 18%, rgb(var(--edu-card))) 0%,
3846
+ rgb(var(--edu-card)) 44%
3847
+ );
3848
+ box-shadow:
3849
+ inset 0 4px 0 color-mix(in srgb, var(--chip-colored-color) 85%, white 15%),
3850
+ 0 0 0 1px color-mix(in srgb, var(--chip-colored-color) 22%, transparent);
3851
+ }
3852
+
3693
3853
  & .chip-container::after {
3694
3854
  content: '';
3695
3855
  position: absolute;
3696
- top: -2px;
3697
- left: -2px;
3698
- right: -2px;
3699
- bottom: -2px;
3856
+ top: 0.25rem;
3857
+ left: 0.25rem;
3858
+ right: 0.25rem;
3859
+ height: 0.4rem;
3700
3860
  border-radius: 10px;
3701
- background: var(--chip-colored-color);
3702
- opacity: 0.18;
3703
- mix-blend-mode: multiply;
3861
+ background: color-mix(in srgb, var(--chip-colored-color) 90%, white 10%);
3862
+ opacity: 0.95;
3704
3863
  z-index: 2;
3705
3864
  pointer-events: none;
3706
3865
  }
3866
+
3867
+ & .prefix {
3868
+ color: color-mix(in srgb, var(--chip-colored-color) 82%, rgb(var(--edu-ink)));
3869
+ }
3707
3870
  }
3708
3871
 
3709
3872
  :host([aria-disabled]) {
@@ -3716,7 +3879,8 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
3716
3879
  flex-direction: column;
3717
3880
  align-items: center;
3718
3881
  position: relative;
3719
- width: 100%;height: 100%;
3882
+ width: 100%;
3883
+ height: 100%;
3720
3884
  }
3721
3885
 
3722
3886
  ::slotted(img.chip-image) {
@@ -3750,8 +3914,9 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
3750
3914
  border: 1px solid rgb(var(--edu-border));
3751
3915
  padding: 0.5rem 1rem;
3752
3916
  cursor: pointer;
3753
- font-size: 1rem;
3917
+ font-size: clamp(0.95rem, min(12cqi, 24cqb), 2.35rem);
3754
3918
  font-weight: 500;
3919
+ line-height: 1.2;
3755
3920
  text-align: center;
3756
3921
  transition: all 0.2s ease;
3757
3922
  user-select: none;
@@ -3789,6 +3954,7 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
3789
3954
  align-items: center;
3790
3955
  justify-content: center;
3791
3956
  min-width: 0;
3957
+ overflow-wrap: anywhere;
3792
3958
  }
3793
3959
 
3794
3960
  /* ==================== MODALITY ACTION BUTTON ==================== */
@@ -3976,38 +4142,45 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
3976
4142
  /* ==================== VARIANT: PLAYFUL ==================== */
3977
4143
 
3978
4144
  :host([variant="playful"]) .content-zone {
3979
- background: var(--chip-color);
3980
- color: rgb(var(--edu-inverted-ink));
3981
- border-radius: 12px;
3982
- border: none;
3983
- box-shadow: 0 4px 12px rgb(var(--chip-color) / 0.3);
4145
+ background:
4146
+ linear-gradient(135deg, rgb(var(--edu-card)), rgb(var(--edu-muted) / 0.9));
4147
+ color: rgb(var(--edu-ink));
4148
+ border-radius: 14px;
4149
+ border: 2px solid rgb(var(--edu-border));
4150
+ box-shadow: 0 6px 14px rgb(var(--edu-shadow-color) / 0.12);
3984
4151
  font-weight: 600;
3985
4152
  }
3986
4153
 
3987
4154
  :host([variant="playful"]) .content-zone:hover:not([aria-disabled="true"]) {
3988
- box-shadow: 0 6px 16px rgba(var(--chip-color), 0.4);
4155
+ transform: translateY(-2px) rotate(-1deg);
4156
+ border-color: rgb(var(--edu-first-accent) / 0.5);
4157
+ box-shadow: 0 10px 22px rgb(var(--edu-shadow-color) / 0.18);
3989
4158
  }
3990
4159
 
3991
4160
  :host([variant="playful"]) .content-zone:active:not([aria-disabled="true"]) {
4161
+ transform: translateY(0) rotate(0deg);
3992
4162
  }
3993
4163
 
3994
4164
  :host([variant="playful"]) .prefix {
3995
- color: rgb(var(--edu-inverted-ink));
3996
- opacity: 0.9;
4165
+ color: var(--chip-color);
4166
+ opacity: 1;
3997
4167
  }
3998
4168
 
3999
4169
  :host([variant="playful"]) .modality-action {
4000
- background: rgb(var(--edu-card));
4001
- color: var(--chip-color);
4170
+ background: var(--chip-color);
4171
+ color: rgb(var(--edu-inverted-ink));
4002
4172
  }
4003
4173
 
4004
4174
  :host([variant="playful"][selected]) .content-zone {
4005
- box-shadow: 0 0 0 3px rgb(var(--edu-first-accent) / 0.4), 0 6px 16px rgb(var(--edu-first-accent) / 0.4);
4175
+ background:
4176
+ linear-gradient(135deg, rgb(var(--edu-card)), rgb(var(--edu-muted)));
4177
+ border-color: var(--chip-color);
4178
+ box-shadow: 0 0 0 3px rgb(var(--chip-color) / 0.22), 0 10px 22px rgb(var(--edu-shadow-color) / 0.16);
4006
4179
  }
4007
4180
 
4008
4181
  :host([variant="playful"]) ::slotted(img.chip-image) {
4009
- border: 4px solid rgb(var(--edu-border) / 0.6);
4010
- border-radius: 4px;
4182
+ border: 3px solid rgb(var(--edu-border) / 0.6);
4183
+ border-radius: 8px;
4011
4184
  }
4012
4185
 
4013
4186
 
@@ -4072,7 +4245,6 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
4072
4245
  border-radius: 2px;
4073
4246
  background: rgb(var(--edu-card));
4074
4247
  color: rgb(var(--edu-ink));
4075
- font-size: 0.95rem;
4076
4248
  letter-spacing: 0.5px;
4077
4249
  }
4078
4250
 
@@ -4100,82 +4272,88 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
4100
4272
  /* ==================== VARIANT: MINIMAL ==================== */
4101
4273
 
4102
4274
  :host([variant="minimal"]) .content-zone {
4103
- background: rgb(var(--edu-card));
4275
+ background: transparent;
4104
4276
  border: 1px solid rgb(var(--edu-border));
4105
- border-radius: 6px;
4106
- color: rgb(var(--edu-ink));
4107
- padding: 0.4rem 0.75rem;
4108
- font-size: 0.9rem;
4277
+ border-radius: 10px;
4278
+ color: rgb(var(--edu-second-ink));
4279
+ padding: 0.45rem 0.85rem;
4109
4280
  }
4110
4281
 
4111
4282
  :host([variant="minimal"]) .content-zone:hover:not([aria-disabled="true"]) {
4112
- border-color: rgba(var(--chip-color), 0.5);
4113
- box-shadow: 0 1px 4px rgba(var(--edu-shadow-color), 0.1);
4283
+ background: rgb(var(--edu-card) / 0.8);
4284
+ color: rgb(var(--edu-ink));
4285
+ border-color: rgb(var(--edu-first-accent) / 0.35);
4286
+ box-shadow: 0 4px 12px rgba(var(--edu-shadow-color), 0.08);
4114
4287
  }
4115
4288
 
4116
4289
  :host([variant="minimal"][selected]) .content-zone {
4117
4290
  border-color: var(--chip-color);
4118
4291
  background: rgba(var(--chip-color), 0.08);
4292
+ color: rgb(var(--edu-ink));
4119
4293
  }
4120
4294
 
4121
4295
  /* ==================== VARIANT: GLASS ==================== */
4122
4296
 
4123
4297
  :host([variant="glass"]) .content-zone {
4124
- background: rgb(var(--edu-card));
4125
- border: 2px solid rgb(var(--edu-border));
4126
- border-radius: 0;
4298
+ background: rgb(var(--edu-card) / 0.65);
4299
+ backdrop-filter: blur(10px);
4300
+ border: 1px solid rgb(var(--edu-border) / 0.6);
4301
+ border-radius: 14px;
4127
4302
  color: rgb(var(--edu-ink));
4128
- padding: 0.5rem 1.2rem;
4129
- font-weight: 700;
4130
- letter-spacing: 1.5px;
4131
- font-size: 0.9rem;
4303
+ padding: 0.5rem 1rem;
4304
+ font-weight: 600;
4305
+ letter-spacing: 0.03em;
4306
+ box-shadow: inset 0 1px 0 rgb(var(--edu-card) / 0.8), 0 8px 20px rgb(var(--edu-shadow-color) / 0.12);
4132
4307
  }
4133
4308
 
4134
4309
  :host([variant="glass"]) .content-zone:hover:not([aria-disabled="true"]) {
4135
- background: var(--chip-color);
4136
- color: rgb(var(--edu-inverted-ink));
4137
- border-color: var(--chip-color);
4310
+ background: rgb(var(--edu-card) / 0.78);
4311
+ border-color: rgb(var(--edu-first-accent) / 0.45);
4312
+ box-shadow: inset 0 1px 0 rgb(var(--edu-card) / 0.9), 0 12px 24px rgb(var(--edu-shadow-color) / 0.16);
4138
4313
  }
4139
4314
 
4140
4315
  :host([variant="glass"]) .content-zone:active:not([aria-disabled="true"]) {
4141
- background: rgba(var(--chip-color), 0.9);
4316
+ background: rgb(var(--edu-card) / 0.88);
4142
4317
  }
4143
4318
 
4144
4319
  :host([variant="glass"]) .prefix {
4145
- font-weight: 800;
4320
+ font-weight: 700;
4321
+ color: rgb(var(--edu-first-accent));
4146
4322
  }
4147
4323
 
4148
4324
  :host([variant="glass"][selected]) .content-zone {
4149
4325
  background: rgba(var(--chip-color), 0.15);
4150
4326
  border-color: var(--chip-color);
4151
- box-shadow: 0 0 0 2px rgba(var(--chip-color), 0.3);
4327
+ box-shadow: 0 0 0 2px rgba(var(--chip-color), 0.24), inset 0 1px 0 rgb(var(--edu-card) / 0.85);
4152
4328
  }
4153
4329
 
4154
4330
  /* ==================== VARIANT: CARD ==================== */
4155
4331
 
4156
4332
  :host([variant="card"]) .content-zone {
4157
- background: transparent;
4158
- border: 2px solid rgb(var(--edu-border));
4159
- border-radius: 4px;
4333
+ background: rgb(var(--edu-card));
4334
+ border: 1px solid rgb(var(--edu-border));
4335
+ border-radius: 12px;
4160
4336
  color: rgb(var(--edu-ink));
4337
+ box-shadow: 0 8px 18px rgb(var(--edu-shadow-color) / 0.1);
4161
4338
  }
4162
4339
 
4163
4340
  :host([variant="card"]) .content-zone:hover:not([aria-disabled="true"]) {
4164
- background: rgb(var(--edu-muted));
4165
- border-color: var(--chip-color);
4341
+ background: linear-gradient(180deg, rgb(var(--edu-card)), rgb(var(--edu-muted) / 0.8));
4342
+ border-color: rgb(var(--edu-first-accent) / 0.35);
4343
+ box-shadow: 0 12px 24px rgb(var(--edu-shadow-color) / 0.14);
4166
4344
  }
4167
4345
 
4168
4346
  :host([variant="card"]) .content-zone:active:not([aria-disabled="true"]) {
4169
- background: rgb(var(--edu-border));
4347
+ transform: translateY(1px);
4170
4348
  }
4171
4349
 
4172
4350
  :host([variant="card"]) .prefix {
4173
- color: var(--chip-color);
4351
+ color: rgb(var(--edu-third-ink));
4174
4352
  }
4175
4353
 
4176
4354
  :host([variant="card"][selected]) .content-zone {
4177
4355
  border-color: var(--chip-color);
4178
- box-shadow: 0 0 0 3px rgba(var(--chip-color), 0.2);
4356
+ box-shadow: 0 0 0 3px rgba(var(--chip-color), 0.18), 0 12px 24px rgb(var(--edu-shadow-color) / 0.12);
4179
4357
  }
4180
4358
 
4181
4359
  /* ==================== VARIANT: SIGN ==================== */
@@ -4185,9 +4363,8 @@ var styles_default = `/* ==================== BASE STYLES ==================== *
4185
4363
  border-radius: 0;
4186
4364
  color: rgb(var(--edu-ink));
4187
4365
  padding: 0.5rem 1.2rem;
4188
- font-size: 0.9rem;
4189
4366
  font-weight: bold;
4190
- transform: skewX(-10deg);
4367
+ transform: skewX(-3deg);
4191
4368
  text-transform: uppercase;
4192
4369
  letter-spacing: 0.2rem;
4193
4370
  }
@@ -4713,16 +4890,17 @@ var HTML2 = `
4713
4890
  }
4714
4891
 
4715
4892
  .block[variant="playful"] {
4716
- background: var(--accent-color);
4717
- border: none;
4718
- color: rgb(var(--edu-inverted-ink));
4893
+ background: linear-gradient(135deg, rgb(var(--edu-card)), rgb(var(--edu-muted) / 0.92));
4894
+ border: 2px solid rgb(var(--edu-border));
4895
+ color: rgb(var(--edu-ink));
4719
4896
  border-radius: 16px;
4720
- box-shadow: 2px 2px 0px rgba(var(--edu-shadow-color) / 0.2);
4897
+ box-shadow: 0 6px 14px rgb(var(--edu-shadow-color) / 0.12);
4721
4898
  }
4722
4899
 
4723
4900
  .block[variant="playful"]:hover {
4724
- transform: translateY(-2px) rotate(-2deg);
4725
- box-shadow: 0 6px 16px rgba(var(--edu-first-accent), 0.4);
4901
+ transform: translateY(-2px) rotate(-1deg);
4902
+ border-color: color-mix(in srgb, var(--accent-color) 38%, rgb(var(--edu-border)));
4903
+ box-shadow: 0 10px 22px rgb(var(--edu-shadow-color) / 0.18);
4726
4904
  }
4727
4905
 
4728
4906
  .block[variant="outline"] {
@@ -4753,40 +4931,45 @@ var HTML2 = `
4753
4931
  }
4754
4932
 
4755
4933
  .block[variant="minimal"] {
4756
- background: rgb(var(--edu-card));
4757
- color: rgb(var(--edu-ink));
4934
+ background: transparent;
4935
+ color: rgb(var(--edu-second-ink));
4758
4936
  border: 1px solid rgb(var(--edu-border));
4759
- border-radius: 6px;
4937
+ border-radius: 10px;
4760
4938
  padding: 0.75rem;
4761
4939
  }
4762
4940
 
4763
4941
  .block[variant="minimal"]:hover {
4764
- border-color: rgb(var(--edu-first-accent) / 0.5);
4765
- box-shadow: 0 1px 4px rgba(var(--edu-shadow-color), 0.1);
4942
+ background: rgb(var(--edu-card) / 0.8);
4943
+ color: rgb(var(--edu-ink));
4944
+ border-color: rgb(var(--edu-first-accent) / 0.35);
4945
+ box-shadow: 0 4px 12px rgba(var(--edu-shadow-color), 0.08);
4766
4946
  }
4767
4947
 
4768
4948
  .block[variant="glass"] {
4769
4949
  background: rgba(var(--edu-card), 0.7);
4770
4950
  backdrop-filter: blur(10px);
4771
- border: 2px solid rgba(var(--edu-border), 0.35);
4772
- border-radius: 12px;
4951
+ border: 1px solid rgba(var(--edu-border), 0.45);
4952
+ border-radius: 14px;
4953
+ box-shadow: inset 0 1px 0 rgb(var(--edu-card) / 0.85), 0 8px 20px rgba(var(--edu-shadow-color), 0.12);
4773
4954
  }
4774
4955
 
4775
4956
  .block[variant="glass"]:hover {
4776
- background: rgba(var(--edu-card), 0.85);
4777
- border-color: rgba(var(--edu-first-accent), 0.5);
4957
+ background: rgba(var(--edu-card), 0.82);
4958
+ border-color: rgba(var(--edu-first-accent), 0.4);
4959
+ box-shadow: inset 0 1px 0 rgb(var(--edu-card) / 0.95), 0 12px 24px rgba(var(--edu-shadow-color), 0.16);
4778
4960
  }
4779
4961
 
4780
4962
  .block[variant="card"] {
4781
4963
  background: rgb(var(--edu-card));
4782
- border: 2px solid rgb(var(--edu-border));
4783
- border-radius: 8px;
4784
- box-shadow: 0 2px 8px rgba(var(--edu-shadow-color), 0.08);
4964
+ border: 1px solid rgb(var(--edu-border));
4965
+ border-radius: 12px;
4966
+ box-shadow: 0 8px 18px rgba(var(--edu-shadow-color), 0.1);
4785
4967
  }
4786
4968
 
4787
4969
  .block[variant="card"]:hover {
4788
- border-color: rgb(var(--edu-first-accent));
4789
- box-shadow: 0 4px 12px rgba(var(--edu-shadow-color), 0.12);
4970
+ background: linear-gradient(180deg, rgb(var(--edu-card)), rgb(var(--edu-muted) / 0.8));
4971
+ border-color: rgb(var(--edu-first-accent) / 0.35);
4972
+ box-shadow: 0 12px 24px rgba(var(--edu-shadow-color), 0.14);
4790
4973
  }
4791
4974
 
4792
4975
  .block[variant="sign"] {
@@ -4802,7 +4985,7 @@ var HTML2 = `
4802
4985
 
4803
4986
  .block[variant="sign"]:hover {
4804
4987
  border-color: var(--accent-color);
4805
- background: var(accent-color);
4988
+ background: rgb(var(--edu-muted));
4806
4989
  }
4807
4990
 
4808
4991
  .block[variant="empty"] {
@@ -4866,7 +5049,7 @@ var EduBlock = class extends HTMLElement {
4866
5049
  if (!customElements.get("edu-block")) customElements.define("edu-block", EduBlock);
4867
5050
 
4868
5051
  // src/interactions/shared/classification-implementation/grader.ts
4869
- function classificationGrader(correctData, userData, els) {
5052
+ function classificationGrader(correctData, userData, els, distractors) {
4870
5053
  let correctCount = 0;
4871
5054
  let totalCount = 0;
4872
5055
  correctData.forEach((category) => {
@@ -4880,6 +5063,17 @@ function classificationGrader(correctData, userData, els) {
4880
5063
  } else el.chipState = "wrong";
4881
5064
  });
4882
5065
  });
5066
+ if (distractors) {
5067
+ distractors.forEach((distractor) => {
5068
+ totalCount++;
5069
+ const userCategory = userData.get(distractor);
5070
+ const el = els.querySelector(`[data-label="${distractor}"]`);
5071
+ if (userCategory === "Invalid") {
5072
+ correctCount++;
5073
+ el.chipState = "correct";
5074
+ } else el.chipState = "wrong";
5075
+ });
5076
+ }
4883
5077
  const score = totalCount > 0 ? Math.round(correctCount / totalCount * 100) : 0;
4884
5078
  return { score, correct: correctCount, total: totalCount };
4885
5079
  }
@@ -4889,10 +5083,10 @@ var OpenClassification = class extends BaseInteraction {
4889
5083
  constructor(data, config, assets) {
4890
5084
  super(data, config, assets);
4891
5085
  this.interactionMechanic = "static";
4892
- this.categories = ["none"];
5086
+ this.categories = [];
4893
5087
  this.allItems = [];
4894
5088
  this.categoryColors = [
4895
- "#94a3b8",
5089
+ "#6366f1",
4896
5090
  "#3b82f6",
4897
5091
  "#10b981",
4898
5092
  "#f59e0b",
@@ -4901,7 +5095,7 @@ var OpenClassification = class extends BaseInteraction {
4901
5095
  "#ec4899",
4902
5096
  "#14b8a6",
4903
5097
  "#f97316",
4904
- "#6366f1"
5098
+ "#94a3b8"
4905
5099
  ];
4906
5100
  this.currentColor = this.categoryColors[0];
4907
5101
  this.data.categories.forEach(({ label, items }) => {
@@ -4911,6 +5105,7 @@ var OpenClassification = class extends BaseInteraction {
4911
5105
  this.currentCategory = this.categories[0];
4912
5106
  if (this.data.distractors) {
4913
5107
  this.allItems.push(...this.data.distractors);
5108
+ this.categories.push("Invalid");
4914
5109
  }
4915
5110
  this.allItems = shuffle(this.allItems);
4916
5111
  this.categorized = /* @__PURE__ */ new Map();
@@ -4932,7 +5127,7 @@ var OpenClassification = class extends BaseInteraction {
4932
5127
  this.innerHTML = `
4933
5128
  <style>
4934
5129
  open-classification {
4935
- --current-color: #94a3b8;
5130
+ --current-color: #aa94b8;
4936
5131
  display: flex;
4937
5132
  width: 100%;
4938
5133
  height: 100%;
@@ -4977,7 +5172,7 @@ var OpenClassification = class extends BaseInteraction {
4977
5172
  .items-container {
4978
5173
  display: grid;
4979
5174
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr));
4980
- grid-auto-rows: minmax(44px, 1fr);
5175
+ grid-auto-rows: minmax(clamp(56px, 12cqh, 88px), 1fr);
4981
5176
  gap: clamp(0.5rem, min(1.6cqw, 1.6cqh), 1rem);
4982
5177
  padding: clamp(0.5rem, min(1.6cqw, 1.6cqh), 1.25rem);
4983
5178
  background: rgb(var(--edu-muted));
@@ -5178,14 +5373,13 @@ var OpenClassification = class extends BaseInteraction {
5178
5373
  // ==================== GRADING ====================
5179
5374
  submit() {
5180
5375
  super.submit();
5181
- const result = classificationGrader(this.data.categories, this.categorized, this);
5376
+ const result = classificationGrader(this.data.categories, this.categorized, this, this.data.distractors);
5182
5377
  console.log(`Classification Score: ${result.score.toFixed(1)}% (${result.correct}/${result.total} correct)`);
5183
5378
  this.dispatchEvent(new CustomEvent("interaction:graded", {
5184
5379
  detail: { result },
5185
5380
  bubbles: true,
5186
5381
  composed: true
5187
5382
  }));
5188
- this.setAttribute("inert", "");
5189
5383
  }
5190
5384
  // ==================== RESET ====================
5191
5385
  reset() {
@@ -5330,6 +5524,7 @@ var SequentialClassification = class extends BaseInteraction {
5330
5524
  gap: clamp(0.5rem, min(1.5cqw, 1.5cqh), 1rem);
5331
5525
  overflow-y: auto;
5332
5526
  overflow-x: hidden;
5527
+ scrollbar-gutter: stable;
5333
5528
  align-content: stretch;
5334
5529
  padding: clamp(0.25rem, min(1cqw, 1cqh), 0.5rem);
5335
5530
  min-height: 0;
@@ -5373,11 +5568,17 @@ var SequentialClassification = class extends BaseInteraction {
5373
5568
 
5374
5569
  edu-chip {
5375
5570
  position: absolute;
5571
+ width: clamp(160px, 20cqw, 280px);
5572
+ max-width: calc(100% - 0.5rem);
5376
5573
  user-select: none;
5377
5574
  touch-action: none;
5378
5575
  transition: transform 0.2s ease;
5379
5576
  }
5380
5577
 
5578
+ edu-chip::part(content-zone) {
5579
+ min-height: clamp(56px, 10cqh, 88px);
5580
+ }
5581
+
5381
5582
  edu-chip:hover {
5382
5583
  transform: scale(1.05);
5383
5584
  }
@@ -6168,9 +6369,9 @@ var MCQ = class extends BaseInteraction {
6168
6369
  this.data.data.forEach((q) => {
6169
6370
  this.userAnswers[q.question] = [];
6170
6371
  if (this.config.shuffle) {
6171
- this.shuffledOptions.set(q.question, shuffle([...q.options]));
6372
+ this.shuffledOptions.set(q.question, shuffle([...q.options, ...q.correctOptions]));
6172
6373
  } else {
6173
- this.shuffledOptions.set(q.question, [...q.options]);
6374
+ this.shuffledOptions.set(q.question, [...q.options, ...q.correctOptions]);
6174
6375
  }
6175
6376
  });
6176
6377
  this.variant = this.config.variant;
@@ -6243,17 +6444,17 @@ var MCQ = class extends BaseInteraction {
6243
6444
  flex-shrink: 0;
6244
6445
  display: flex;
6245
6446
  flex-direction: column;
6246
- min-height: clamp(64px, 10cqh, 120px);
6247
- max-height: clamp(120px, 30cqh, 260px);
6447
+ min-height: clamp(88px, 16cqh, 160px);
6448
+ max-height: clamp(132px, 32cqh, 280px);
6248
6449
  overflow: hidden;
6249
6450
  }
6250
6451
 
6251
6452
  .question-text {
6252
6453
  padding: 0;
6253
- font-size: clamp(0.95rem, 2.4cqh, 1.2rem);
6454
+ font-size: clamp(1.05rem, 2.6cqh, 1.45rem);
6254
6455
  font-weight: 600;
6255
6456
  color: rgb(var(--edu-ink));
6256
- line-height: 1.4;
6457
+ line-height: 1.35;
6257
6458
  }
6258
6459
 
6259
6460
  .divider {
@@ -6317,7 +6518,7 @@ var MCQ = class extends BaseInteraction {
6317
6518
  border: none;
6318
6519
  padding: clamp(0.5rem, min(1.6cqw, 1.6cqh), 1rem);
6319
6520
  height: 100%;
6320
- max-height: clamp(120px, 30cqh, 260px);
6521
+ max-height: clamp(132px, 32cqh, 280px);
6321
6522
  overflow: auto;
6322
6523
  align-items: center;
6323
6524
  justify-content: flex-start;
@@ -6689,7 +6890,7 @@ var SimultaneousAssociation = class extends BaseInteraction {
6689
6890
  .items-list {
6690
6891
  display: grid;
6691
6892
  grid-template-columns: 1fr;
6692
- grid-auto-rows: minmax(44px, 1fr);
6893
+ grid-auto-rows: minmax(clamp(56px, 12cqh, 88px), 1fr);
6693
6894
  gap: clamp(0.35rem, min(1.2cqw, 1.2cqh), 0.75rem);
6694
6895
  min-height: 0;
6695
6896
  height: 100%;
@@ -6911,8 +7112,8 @@ var ListRecall = class extends BaseInteraction {
6911
7112
  .chips-container {
6912
7113
  flex: 1;
6913
7114
  display: grid;
6914
- grid-template-columns: repeat(auto-fit, minmax(min(100%, 160px), 1fr));
6915
- grid-auto-rows: minmax(44px, auto);
7115
+ grid-template-columns: 1fr 1fr;
7116
+ grid-auto-rows: minmax(56px, auto);
6916
7117
  gap: clamp(0.4rem, min(1.4cqw, 1.4cqh), 0.75rem);
6917
7118
  padding: clamp(0.5rem, min(1.6cqw, 1.6cqh), 1rem);
6918
7119
  border: 2px dashed rgb(var(--edu-border));
@@ -12363,7 +12564,7 @@ var RankOrder = class extends BaseInteraction {
12363
12564
  // Scalability constants
12364
12565
  this.MAX_ITEMS = 10;
12365
12566
  // Cognitive Ceiling
12366
- this.MIN_ITEM_HEIGHT = 44;
12567
+ this.MIN_ITEM_HEIGHT = 56;
12367
12568
  if (!this.isValid || !this.data || !this.config) return;
12368
12569
  const items = this.data.items;
12369
12570
  this.data.items = items;
@@ -13177,13 +13378,6 @@ var simple_shell_default = `<header part='header'>
13177
13378
  <div class="radio-nav" part="radio-nav"></div>
13178
13379
  <div class="action-buttons">
13179
13380
  <button class="check-btn" type="button" part="check">Check</button>
13180
-
13181
- <button class="see-answers-btn btn" title="See answers" part="see-answers">
13182
- <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
13183
- <path d="M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6-10-6-10-6Z"/>
13184
- <circle cx="12" cy="12" r="3"/>
13185
- </svg>
13186
- </button>
13187
13381
  <button class="retry-btn btn" title="Retry" part="retry">
13188
13382
  <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
13189
13383
  <path d="M17 2v4h-4"/>
@@ -13205,7 +13399,7 @@ var simple_shell_default = `<header part='header'>
13205
13399
  `;
13206
13400
 
13207
13401
  // src/shell/simple-shell/styles.css
13208
- var styles_default4 = ':host {\n display: flex;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n container-type: size;\n}\n\n.edu-hidden { display: none !important; }\n\n.wrap {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n color: rgb(var(--edu-ink));\n background: rgb(var(--edu-bg));\n overflow: hidden;\n box-sizing: border-box;\n}\n\nheader {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: clamp(0.2rem, 0.7cqh, 0.4rem);\n border-bottom: 1px solid rgb(var(--edu-border));\n flex-shrink: 0;\n gap: clamp(0.25rem, 1cqw, 0.5rem);\n height: clamp(38px, 7cqh, 46px);\n min-height: clamp(38px, 7cqh, 46px);\n}\n\n.prompt-container {\n display: flex;\n min-width: 0;\n gap: clamp(0.25rem, 1cqw, 0.5rem);\n align-items: center;\n flex: 1;\n}\n\n.title {\n flex: 1;\n min-width: 0;\n padding: 0;\n font-size: clamp(0.85rem, 2cqh, 1.05rem);\n font-weight: 700;\n line-height: 1.2;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.timer {\n padding: 0;\n font-size: clamp(0.75rem, 1.6cqh, 0.9rem);\n font-weight: 600;\n color: rgb(var(--edu-second-ink));\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n}\n\n.timer[data-warning="true"] {\n color: rgb(var(--edu-warning));\n}\n\n.timer[data-danger="true"] {\n color: rgb(var(--edu-error));\n}\n\n.content {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n padding: clamp(0.5rem, min(2cqw, 2cqh), 1rem);\n box-sizing: border-box;\n position: relative;\n display: flex;\n}\n\n.screen {\n display: flex;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n animation: fadeIn 1s ease;\n flex: 1;\n min-height: 0;\n}\n\n.screen[data-screen="interaction"] {\n justify-content: stretch;\n align-items: stretch;\n}\n\n.screen:not([data-screen="interaction"]) {\n justify-content: center;\n align-items: center;\n}\n\n.screen[data-screen="interaction"] ::slotted(*) {\n width: 100%;\n height: 100%;\n min-height: 0;\n display: block;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.error-content,\n.attempts-message,\n.score-display,\n.timer-display {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n height: 100%;\n color: rgb(var(--edu-ink));\n}\n\n.timer-display .timer {\n font-size: 10rem !important;\n color: rgb(var(--edu-ink)) !important;\n}\n\n.error-content {\n color: rgb(var(--edu-error));\n}\n\n.attempts-message {\n font-weight: 600;\n font-size: 1.25rem;\n}\n\nfooter {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n /* padding: clamp(0.3rem, 0.8cqh, 0.6rem);*/ \n gap: clamp(0.25rem, 0.8cqh, 0.5rem);\n flex-shrink: 0;\n height: clamp(20px, 9cqh, 62px);\n min-height: clamp(50px, 9cqh, 62px);\n}\n\n.progress-container {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: clamp(0.25rem, 1cqw, 0.6rem);\n width: 100%;\n}\n\n.progress-bar {\n flex: 1;\n height: clamp(8px, 1.6cqh, 12px);\n appearance: none;\n -webkit-appearance: none;\n border: none;\n}\n\n.progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-muted));\n border-radius: 10px;\n}\n\n.progress-bar::-webkit-progress-value {\n background: rgb(var(--edu-first-accent));\n border-radius: 10px;\n transition: width 0.3s ease, background 0.3s ease;\n}\n\n.progress-bar::-moz-progress-bar {\n background: rgb(var(--edu-first-accent));\n border-radius: 10px;\n transition: width 0.3s ease, background 0.3s ease;\n}\n\n/* Score-based progress bar coloring */\n.progress-bar.score-fail::-webkit-progress-value {\n background: rgb(var(--edu-error)) !important;\n}\n\n.progress-bar.score-fail::-moz-progress-bar {\n background: rgb(var(--edu-error)) !important;\n}\n\n.progress-bar.score-low::-webkit-progress-value {\n background: rgb(var(--edu-warning)) !important;\n}\n\n.progress-bar.score-low::-moz-progress-bar {\n background: rgb(var(--edu-warning)) !important;\n}\n\n.progress-bar.score-mid::-webkit-progress-value {\n background: rgb(139, 195, 74) !important; /* Light green */\n}\n\n.progress-bar.score-mid::-moz-progress-bar {\n background: rgb(139, 195, 74) !important;\n}\n\n.progress-bar.score-high::-webkit-progress-value {\n background: rgb(var(--edu-success)) !important;\n}\n\n.progress-bar.score-high::-moz-progress-bar {\n background: rgb(var(--edu-success)) !important;\n}\n\n.progress-icon-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 24px;\n max-height: 24px;\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n transition: left 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease;\n background-color: rgb(var(--edu-first-accent));\n border-radius: 50px;\n box-shadow: 0 0 10px 5px rgb(var(--edu-first-accent));\n padding: 0;\n}\n\n/* Score-based icon coloring */\n.progress-icon-wrapper.score-fail {\n background-color: rgb(var(--edu-error));\n box-shadow: 0 0 10px 5px rgb(var(--edu-error));\n}\n\n.progress-icon-wrapper.score-low {\n background-color: rgb(var(--edu-warning));\n box-shadow: 0 0 10px 5px rgb(var(--edu-warning));\n}\n\n.progress-icon-wrapper.score-mid {\n background-color: rgba(139, 195, 74, 0.8);\n box-shadow: 0 0 10px 5px rgba(139, 195, 74, 0.8);\n}\n\n.progress-icon-wrapper.score-high {\n background-color: rgb(var(--edu-success));\n box-shadow: 0 0 10px 5px rgb(var(--edu-success));\n}\n\n.progress-icon {\n width: clamp(20px, 3.2cqh, 30px);\n height: clamp(20px, 3.2cqh, 30px);\n}\n\n.progress-counter {\n font-size: clamp(0.7rem, 1.4cqh, 0.85rem);\n font-weight: 600;\n color: rgb(var(--edu-second-ink));\n min-width: 3rem;\n text-align: right;\n flex-shrink: 0;\n}\n\n.action-buttons {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.check-btn {\n padding: clamp(0.35rem, 1cqh, 0.6rem) clamp(1rem, 2.6cqw, 1.6rem);\n font-size: clamp(0.8rem, 1.6cqh, 0.95rem);\n font-weight: 600;\n cursor: pointer;\n border: none;\n border-radius: var(--edu-radius);\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n transition: all 0.2s ease;\n}\n\n.check-btn:hover:not(:disabled) {\n background: rgb(var(--edu-first-accent) / 0.9);\n transform: translateY(-2px) scale(1.02);\n box-shadow: 0 4px 12px rgb(var(--edu-first-accent) / 0.3);\n}\n\n.check-btn:active:not(:disabled) {\n transform: translateY(0) scale(0.98);\n box-shadow: 0 2px 4px rgb(var(--edu-first-accent) / 0.2);\n}\n\n.check-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn {\n padding: clamp(0.25rem, 0.8cqh, 0.4rem);\n background: transparent;\n border: 2px solid rgb(var(--edu-border));\n border-radius: var(--edu-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.btn:hover { \n background: rgb(var(--edu-muted));\n border-color: rgb(var(--edu-first-accent));\n transform: translateY(-2px) scale(1.05);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n.btn:active {\n transform: translateY(0) scale(0.95);\n box-shadow: none;\n}\n\n.radio-nav {\n display: none;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n}\n\n.radio-nav[data-active="true"] {\n display: flex;\n}\n\n@media (max-width: 640px) {\n .radio-nav {\n gap: 0.35rem;\n }\n\n .radio-nav label {\n padding: 0.4rem 0.75rem;\n font-size: 0.875rem;\n }\n}\n\n.radio-nav input { display: none; }\n\n.radio-nav label {\n cursor: pointer;\n transition: all 0.3s ease;\n padding: 0.5rem 1rem;\n border-radius: var(--edu-radius);\n border: 1px solid rgb(var(--edu-border));\n background: rgb(var(--edu-card));\n color: rgb(var(--edu-ink));\n font-weight: 500;\n}\n\n.radio-nav label:hover {\n border-color: rgb(var(--edu-first-accent));\n}\n\n.radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n border-color: rgb(var(--edu-first-accent));\n}\n\n.actions {\n display: flex;\n gap: 0.5rem;\n}\n\n.utils-container {\n display: flex;\n justify-content: space-between;\n}\n\n:host([variant="empty"]) {\n & .wrap { background: transparent; border: none; }\n & header { border-bottom: none; }\n\n & .title {\n padding-bottom: 5px;\n max-width: fit-content;\n border-bottom: 5px solid rgb(var(--edu-ink));\n }\n\n & .timer { }\n\n & .check-btn {\n background: transparent;\n color: rgb(var(--edu-ink));\n border: 2px solid rgb(var(--edu-ink));\n border-radius: 0;\n }\n\n & .check-btn:hover:not(:disabled) {\n color: rgb(var(--edu-inverted-ink));\n background: rgb(var(--edu-ink));\n border-color: rgb(var(--edu-ink));\n }\n\n & .progress-bar::-webkit-progress-bar {background: transparent}\n & .progress-bar::-webkit-progress-value {background: rgb(var(--edu-ink))}\n\n & .radio-nav label {\n background: transparent;\n border: 2px solid rgb(var(--edu-ink));\n border-radius: 0;\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-ink));\n color: rgb(var(--edu-inverted-ink));\n }\n\n & .radio-nav label:hover { background-color: rgb(var(--edu-first-accent)) }\n}\n\n:host([variant="minimal"]) {\n & .wrap {\n border: 1px solid rgb(var(--edu-border));\n border-radius: 6px;\n }\n\n & .timer {\n font-size: 0.95rem;\n }\n\n & .check-btn {\n border-radius: 4px;\n }\n\n & footer {\n border-top: 1px solid rgb(var(--edu-border));\n }\n\n & .progress-bar {\n height: 1px;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-muted));\n }\n\n & .progress-bar::-webkit-progress-value {\n background-color: rgb(var(--edu-ink));\n }\n\n & .radio-nav label {\n border-radius: 4px;\n }\n}\n\n:host([variant="elegant"]) {\n & .wrap {\n border-radius: 10px;\n box-shadow: 0 10px 30px rgba(var(--edu-shadow-color), 0.15);\n }\n\n & .timer {\n font-family: georgia, serif;\n font-style: italic;\n font-size: 1.1rem;\n }\n\n & .check-btn {\n border-radius: 8px;\n font-size: 1rem;\n }\n\n & footer {\n border-top: 1px solid rgb(var(--edu-border) / 0.5);\n padding: 1.25rem;\n }\n\n & .progress-bar {\n height: 4px;\n }\n\n & .progress-bar::-webkit-progress-value {\n background: linear-gradient(90deg, rgb(var(--edu-first-accent)), rgb(var(--edu-first-accent) / 0.6));\n }\n\n & .radio-nav label {\n font-family: georgia, serif;\n border: none;\n border-bottom: 2px solid transparent;\n background: transparent;\n padding: 0.5rem 1rem;\n }\n\n & .radio-nav input:checked + label {\n color: rgb(var(--edu-first-accent));\n border-bottom: 2px solid rgb(var(--edu-first-accent));\n background: transparent;\n font-style: italic;\n }\n\n & label {\n font-family: georgia, serif;\n padding: 0.5rem 1rem;\n }\n}\n\n:host([variant="playful"]) {\n & .wrap {\n color: rgb(var(--edu-first-accent));\n border-radius: 14px;\n border: 2px dashed rgb(var(--edu-border));\n }\n\n & .timer {\n font-weight: 700;\n font-size: 1.2rem;\n }\n\n & .check-btn {\n border-radius: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n }\n\n & .check-btn:hover:not(:disabled) {\n transform: translateY(-2px) rotate(-1deg);\n }\n\n & footer {\n border-top: 2px dashed rgb(var(--edu-border));\n }\n\n & .progress-bar {\n height: 20px;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-warning) / 0.3);\n border-radius: 20px;\n }\n\n & .progress-bar::-webkit-progress-value {\n background: rgb(var(--edu-first-accent));\n border-radius: 20px;\n border: 3px solid rgb(var(--edu-warning) / 0.3);\n }\n\n & .radio-nav label {\n background: rgb(var(--edu-muted));\n border-radius: 50px;\n font-weight: 700;\n }\n\n & .radio-nav label:hover {\n transform: scale(1.1) rotate(-2deg);\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n box-shadow: 0 5px 15px rgb(var(--edu-first-accent) / 0.4);\n }\n}\n\n:host([variant="glass"]) {\n & .wrap {\n background: rgba(var(--edu-card), 0.7);\n backdrop-filter: blur(10px);\n border: 1px solid rgba(var(--edu-border), 0.35);\n border-radius: 12px;\n }\n\n & .check-btn {\n background: rgba(var(--edu-first-accent), 0.9);\n backdrop-filter: blur(5px);\n border-radius: 10px;\n }\n\n & .check-btn:hover:not(:disabled) {\n background: rgba(var(--edu-first-accent), 1);\n }\n\n & footer {\n border-top: 1px solid rgba(var(--edu-border), 0.35);\n }\n\n & .progress-bar::-webkit-progress-bar {\n background: rgba(var(--edu-card), 0.3);\n backdrop-filter: blur(5px);\n }\n\n & .progress-bar::-webkit-progress-value {\n background: rgba(var(--edu-first-accent), 0.7);\n }\n\n & .radio-nav label {\n background: rgba(var(--edu-card), 0.5);\n backdrop-filter: blur(5px);\n border: 1px solid rgba(var(--edu-border), 0.35);\n }\n\n & .radio-nav input:checked + label {\n background: rgba(var(--edu-first-accent), 0.8);\n border-color: rgb(var(--edu-first-accent));\n }\n}\n\n:host([variant="letter"]) {\n & .wrap {\n border: 1px solid rgb(var(--edu-border));\n font-family: georgia, serif;\n box-shadow: inset 0 0 0 1px rgba(var(--edu-shadow-color), 0.1);\n border-radius: 4px;\n }\n\n & .timer {\n font-family: georgia, serif;\n letter-spacing: 0.5px;\n }\n\n & .check-btn {\n font-family: georgia, serif;\n border-radius: 2px;\n font-size: 0.95rem;\n letter-spacing: 0.5px;\n }\n\n & footer {\n border-top: 1px solid rgb(var(--edu-border));\n padding: 1rem 1.5rem;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-muted));\n box-shadow: inset 0 0 0 1px rgba(var(--edu-shadow-color), 0.05);\n }\n\n & .radio-nav label {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: rgb(var(--edu-third-ink));\n color: rgb(var(--edu-inverted-ink));\n font-weight: 900;\n border-radius: 4px;\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n transform: translateY(-4px);\n }\n}\n\n:host([variant="sign"]) {\n & .wrap {\n border-radius: 6px;\n text-transform: uppercase;\n letter-spacing: 1px;\n border: 2px solid rgb(var(--edu-border));\n }\n\n & .timer {\n text-transform: uppercase;\n letter-spacing: 1.5px;\n font-weight: 800;\n font-size: 0.9rem;\n }\n\n & .check-btn {\n text-transform: uppercase;\n letter-spacing: 1.5px;\n font-weight: 800;\n font-size: 0.9rem;\n border-radius: 4px;\n margin: 0.85rem 2.5rem;\n }\n\n & footer {\n border-top: 2px solid rgb(var(--edu-border));\n }\n\n & .title {\n text-transform: uppercase;\n }\n\n & .progress-bar {\n height: 24px;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background: rgb(var(--edu-third-ink));\n border: 2px solid rgb(var(--edu-third-ink));\n }\n\n & .progress-bar::-webkit-progress-value {\n background: rgb(var(--edu-second-accent));\n }\n\n & .radio-nav label {\n background: rgb(var(--edu-third-ink));\n color: rgb(var(--edu-second-accent));\n border-left: 4px solid rgb(var(--edu-second-accent));\n text-transform: uppercase;\n font-size: 0.8rem;\n font-weight: 700;\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-second-accent));\n color: rgb(var(--edu-third-ink));\n border-left-color: rgb(var(--edu-third-ink));\n }\n}\n\n:host([variant="outline"]) {\n & .wrap {\n color: rgb(var(--edu-inverted-ink));\n background: transparent;\n border-width: 0 1px 2px 1px;\n border-style: solid;\n border-color: rgb(var(--edu-first-accent));\n background: rgb(var(--edu-bg) / 0.1);\n }\n\n & header { background: rgb(var(--edu-first-accent)); color: rgb(var(--edu-inverted-ink)) }\n & .timer { color: rgb(var(--edu-inverted-ink)) }\n\n & footer {\n border-top: none;\n padding: 0;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n\n & .check-btn {\n font-size: 100%;\n font-weight: 700;\n border: none;\n border-radius: 0;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n color: rgb(var(--edu-inverted-ink));\n background: rgb(var(--edu-first-accent));\n margin: 0;\n padding: 1rem;\n text-transform: uppercase;\n }\n\n & .check-btn:hover:not(:disabled) {\n background: rgb(var(--edu-first-accent) / 0.9);\n box-shadow: 0 4px 12px rgb(var(--edu-first-accent) / 0.3);\n transform: none;\n }\n\n & .radio-nav label {\n border: 2px solid rgb(var(--edu-first-accent));\n border-radius: 0;\n background: transparent;\n color: rgb(var(--edu-ink));\n }\n\n & .radio-nav label:hover {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n }\n}\n\n:host([variant="card"]) {\n & .wrap {\n border-radius: 8px;\n box-shadow: 0 4px 12px rgba(var(--edu-shadow-color), 0.1), 0 2px 4px rgba(var(--edu-shadow-color), 0.05);\n }\n\n & .check-btn {\n border-radius: 6px;\n box-shadow: 0 2px 4px rgba(var(--edu-shadow-color), 0.1);\n }\n\n & .check-btn:hover:not(:disabled) {\n box-shadow: 0 4px 8px rgba(var(--edu-first-accent), 0.2);\n }\n\n & footer {\n border-top: 1px solid rgb(var(--edu-border));\n }\n\n & .radio-nav label {\n border-radius: 6px;\n box-shadow: 0 2px 4px rgba(var(--edu-shadow-color), 0.1);\n }\n\n & .radio-nav input:checked + label {\n box-shadow: 0 4px 8px rgba(var(--edu-first-accent), 0.2);\n }\n}\n';
13402
+ var styles_default4 = ':host {\n display: flex;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n container-type: size;\n}\n\n.edu-hidden { display: none !important; }\n\n.wrap {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n color: rgb(var(--edu-ink));\n background: rgb(var(--edu-bg));\n overflow: hidden;\n box-sizing: border-box;\n}\n\nheader {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: clamp(0.2rem, 0.7cqh, 0.4rem);\n border-bottom: 1px solid rgb(var(--edu-border));\n flex-shrink: 0;\n gap: clamp(0.25rem, 1cqw, 0.5rem);\n height: clamp(38px, 7cqh, 46px);\n min-height: clamp(38px, 7cqh, 46px);\n}\n\n.prompt-container {\n display: flex;\n min-width: 0;\n gap: clamp(0.25rem, 1cqw, 0.5rem);\n align-items: center;\n flex: 1;\n}\n\n.title {\n flex: 1;\n min-width: 0;\n padding: 0;\n font-size: clamp(0.85rem, 2cqh, 1.05rem);\n font-weight: 700;\n line-height: 1.2;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.timer {\n padding: 0;\n font-size: clamp(0.75rem, 1.6cqh, 0.9rem);\n font-weight: 600;\n color: rgb(var(--edu-second-ink));\n font-variant-numeric: tabular-nums;\n cursor: pointer;\n}\n\n.timer[data-warning="true"] {\n color: rgb(var(--edu-warning));\n}\n\n.timer[data-danger="true"] {\n color: rgb(var(--edu-error));\n}\n\n.content {\n flex: 1;\n overflow: hidden;\n min-height: 0;\n padding: clamp(0.5rem, min(2cqw, 2cqh), 1rem);\n box-sizing: border-box;\n position: relative;\n display: flex;\n}\n\n.screen {\n display: flex;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n animation: fadeIn 1s ease;\n flex: 1;\n min-height: 0;\n}\n\n.screen[data-screen="interaction"] {\n justify-content: stretch;\n align-items: stretch;\n}\n\n.screen:not([data-screen="interaction"]) {\n justify-content: center;\n align-items: center;\n}\n\n.screen[data-screen="interaction"] ::slotted(*) {\n width: 100%;\n height: 100%;\n min-height: 0;\n display: block;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n transform: translateY(10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.error-content,\n.attempts-message,\n.score-display,\n.timer-display {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n height: 100%;\n color: rgb(var(--edu-ink));\n}\n\n.timer-display .timer {\n font-size: 10rem !important;\n color: rgb(var(--edu-ink)) !important;\n}\n\n.error-content {\n color: rgb(var(--edu-error));\n}\n\n.attempts-message {\n font-weight: 600;\n font-size: 1.25rem;\n}\n\nfooter {\n position: relative;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: center;\n padding: clamp(0.35rem, 1cqh, 0.75rem) clamp(0.5rem, 1.5cqw, 1rem);\n gap: clamp(0.25rem, 0.8cqh, 0.5rem);\n flex-shrink: 0;\n height: auto;\n min-height: clamp(76px, 12cqh, 120px);\n box-sizing: border-box;\n overflow: visible;\n}\n\n.progress-container {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: clamp(0.25rem, 1cqw, 0.6rem);\n width: 100%;\n min-width: 0;\n}\n\n.progress-bar {\n flex: 1;\n height: clamp(8px, 1.6cqh, 12px);\n appearance: none;\n -webkit-appearance: none;\n border: none;\n}\n\n.progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-muted));\n border-radius: 10px;\n}\n\n.progress-bar::-webkit-progress-value {\n background: rgb(var(--edu-first-accent));\n border-radius: 10px;\n transition: width 0.3s ease, background 0.3s ease;\n}\n\n.progress-bar::-moz-progress-bar {\n background: rgb(var(--edu-first-accent));\n border-radius: 10px;\n transition: width 0.3s ease, background 0.3s ease;\n}\n\n/* Score-based progress bar coloring */\n.progress-bar.score-fail::-webkit-progress-value {\n background: rgb(var(--edu-error)) !important;\n}\n\n.progress-bar.score-fail::-moz-progress-bar {\n background: rgb(var(--edu-error)) !important;\n}\n\n.progress-bar.score-low::-webkit-progress-value {\n background: rgb(var(--edu-warning)) !important;\n}\n\n.progress-bar.score-low::-moz-progress-bar {\n background: rgb(var(--edu-warning)) !important;\n}\n\n.progress-bar.score-mid::-webkit-progress-value {\n background: rgb(139, 195, 74) !important; /* Light green */\n}\n\n.progress-bar.score-mid::-moz-progress-bar {\n background: rgb(139, 195, 74) !important;\n}\n\n.progress-bar.score-high::-webkit-progress-value {\n background: rgb(var(--edu-success)) !important;\n}\n\n.progress-bar.score-high::-moz-progress-bar {\n background: rgb(var(--edu-success)) !important;\n}\n\n.progress-icon-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n max-width: 24px;\n max-height: 24px;\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n transition: left 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease;\n background-color: rgb(var(--edu-first-accent));\n border-radius: 50px;\n box-shadow: 0 0 10px 5px rgb(var(--edu-first-accent));\n padding: 0;\n}\n\n/* Score-based icon coloring */\n.progress-icon-wrapper.score-fail {\n background-color: rgb(var(--edu-error));\n box-shadow: 0 0 10px 5px rgb(var(--edu-error));\n}\n\n.progress-icon-wrapper.score-low {\n background-color: rgb(var(--edu-warning));\n box-shadow: 0 0 10px 5px rgb(var(--edu-warning));\n}\n\n.progress-icon-wrapper.score-mid {\n background-color: rgba(139, 195, 74, 0.8);\n box-shadow: 0 0 10px 5px rgba(139, 195, 74, 0.8);\n}\n\n.progress-icon-wrapper.score-high {\n background-color: rgb(var(--edu-success));\n box-shadow: 0 0 10px 5px rgb(var(--edu-success));\n}\n\n.progress-icon {\n width: clamp(20px, 3.2cqh, 30px);\n height: clamp(20px, 3.2cqh, 30px);\n}\n\n.progress-counter {\n font-size: clamp(0.7rem, 1.4cqh, 0.85rem);\n font-weight: 600;\n color: rgb(var(--edu-second-ink));\n min-width: 3rem;\n text-align: right;\n flex-shrink: 0;\n}\n\n.action-buttons {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n width: 100%;\n min-width: 0;\n}\n\n.prompt-btn,\n.retry-btn,\n.scores-btn {\n color: rgb(var(--edu-ink));\n}\n\n.check-btn {\n padding: clamp(0.35rem, 1cqh, 0.6rem) clamp(1rem, 2.6cqw, 1.6rem);\n font-size: clamp(0.8rem, 1.6cqh, 0.95rem);\n font-weight: 600;\n cursor: pointer;\n border: none;\n border-radius: var(--edu-radius);\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n transition: all 0.2s ease;\n}\n\n.check-btn:hover:not(:disabled) {\n background: rgb(var(--edu-first-accent) / 0.9);\n transform: translateY(-2px) scale(1.02);\n box-shadow: 0 4px 12px rgb(var(--edu-first-accent) / 0.3);\n}\n\n.check-btn:active:not(:disabled) {\n transform: translateY(0) scale(0.98);\n box-shadow: 0 2px 4px rgb(var(--edu-first-accent) / 0.2);\n}\n\n.check-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.btn {\n padding: clamp(0.25rem, 0.8cqh, 0.4rem);\n background: transparent;\n border: 2px solid rgb(var(--edu-border));\n border-radius: var(--edu-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n}\n\n.btn:hover { \n background: rgb(var(--edu-muted));\n border-color: rgb(var(--edu-first-accent));\n transform: translateY(-2px) scale(1.05);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n.btn:active {\n transform: translateY(0) scale(0.95);\n box-shadow: none;\n}\n\n.radio-nav {\n display: none;\n flex-wrap: wrap;\n gap: 0.5rem;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-width: 0;\n}\n\n.radio-nav[data-active="true"] {\n display: flex;\n}\n\n@media (max-width: 640px) {\n .radio-nav {\n gap: 0.35rem;\n }\n\n .radio-nav label {\n padding: 0.4rem 0.75rem;\n font-size: 0.875rem;\n }\n}\n\n.radio-nav input { display: none; }\n\n.radio-nav label {\n cursor: pointer;\n transition: all 0.3s ease;\n padding: 0.5rem 1rem;\n border-radius: var(--edu-radius);\n border: 1px solid rgb(var(--edu-border));\n background: rgb(var(--edu-card));\n color: rgb(var(--edu-ink));\n font-weight: 500;\n}\n\n.radio-nav label:hover {\n border-color: rgb(var(--edu-first-accent));\n}\n\n.radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n border-color: rgb(var(--edu-first-accent));\n}\n\n.actions {\n display: flex;\n gap: 0.5rem;\n}\n\n.utils-container {\n display: flex;\n justify-content: space-between;\n}\n\n:host([variant="empty"]) {\n & .wrap { background: transparent; border: none; }\n & header { border-bottom: none; }\n\n & .title {\n padding-bottom: 5px;\n max-width: fit-content;\n border-bottom: 5px solid rgb(var(--edu-ink));\n }\n\n & .timer { }\n\n & footer {\n color: rgb(var(--edu-inverted-ink));\n }\n\n & .check-btn {\n background: transparent;\n color: rgb(var(--edu-ink));\n border: 2px solid rgb(var(--edu-ink));\n border-radius: 0;\n }\n\n & .check-btn:hover:not(:disabled) {\n color: rgb(var(--edu-inverted-ink));\n background: rgb(var(--edu-ink));\n border-color: rgb(var(--edu-ink));\n }\n\n & .progress-bar::-webkit-progress-bar {background: transparent}\n & .progress-bar::-webkit-progress-value {background: rgb(var(--edu-ink))}\n\n & .radio-nav label {\n background: transparent;\n border: 2px solid rgb(var(--edu-ink));\n border-radius: 0;\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-ink));\n color: rgb(var(--edu-inverted-ink));\n }\n\n & .radio-nav label:hover { background-color: rgb(var(--edu-first-accent)) }\n}\n\n:host([variant="minimal"]) {\n & .wrap {\n border: 1px solid rgb(var(--edu-border));\n border-radius: 10px;\n background: rgb(var(--edu-card));\n }\n\n & .timer {\n font-size: 0.95rem;\n }\n\n & .check-btn {\n border-radius: 10px;\n box-shadow: none;\n }\n\n & footer {\n color: rgb(var(--edu-inverted-ink));\n border-top: 1px solid rgb(var(--edu-border));\n }\n\n & .progress-bar {\n height: 1px;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-muted));\n }\n\n & .progress-bar::-webkit-progress-value {\n background-color: rgb(var(--edu-ink));\n }\n\n & .radio-nav label {\n border-radius: 999px;\n background: transparent;\n }\n}\n\n:host([variant="elegant"]) {\n & .wrap {\n border-radius: 10px;\n box-shadow: 0 10px 30px rgba(var(--edu-shadow-color), 0.15);\n }\n\n & .timer {\n font-family: georgia, serif;\n font-style: italic;\n font-size: 1.1rem;\n }\n\n & .check-btn {\n border-radius: 8px;\n font-size: 1rem;\n }\n\n & footer {\n color: rgb(var(--edu-inverted-ink));\n border-top: 1px solid rgb(var(--edu-border) / 0.5);\n padding: 1.25rem;\n }\n\n & .progress-bar {\n height: 4px;\n }\n\n & .progress-bar::-webkit-progress-value {\n background: linear-gradient(90deg, rgb(var(--edu-first-accent)), rgb(var(--edu-first-accent) / 0.6));\n }\n\n & .radio-nav label {\n font-family: georgia, serif;\n border: none;\n border-bottom: 2px solid transparent;\n background: transparent;\n padding: 0.5rem 1rem;\n }\n\n & .radio-nav input:checked + label {\n color: rgb(var(--edu-first-accent));\n border-bottom: 2px solid rgb(var(--edu-first-accent));\n background: transparent;\n font-style: italic;\n }\n\n & label {\n font-family: georgia, serif;\n padding: 0.5rem 1rem;\n }\n}\n\n:host([variant="playful"]) {\n & .wrap {\n color: rgb(var(--edu-ink));\n border-radius: 14px;\n border: 2px dashed rgb(var(--edu-border));\n }\n\n & .timer {\n font-weight: 700;\n font-size: 1.2rem;\n }\n\n & .check-btn {\n background: linear-gradient(135deg, rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n border-radius: 12px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n box-shadow: 0 8px 18px rgb(var(--edu-shadow-color) / 0.16);\n }\n\n & .check-btn:hover:not(:disabled) {\n transform: translateY(-2px) rotate(-1deg);\n }\n\n & footer {\n color: rgb(var(--edu-inverted-ink));\n border-top: 2px dashed rgb(var(--edu-border));\n }\n\n & .progress-bar {\n height: 20px;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-warning) / 0.3);\n border-radius: 20px;\n }\n\n & .progress-bar::-webkit-progress-value {\n background: rgb(var(--edu-first-accent));\n border-radius: 20px;\n border: 3px solid rgb(var(--edu-warning) / 0.3);\n }\n\n & .radio-nav label {\n background: rgb(var(--edu-card));\n color: rgb(var(--edu-ink));\n border: 2px solid rgb(var(--edu-border));\n border-radius: 50px;\n font-weight: 700;\n }\n\n & .radio-nav label:hover {\n transform: scale(1.1) rotate(-2deg);\n }\n\n & .radio-nav input:checked + label {\n background: linear-gradient(135deg, rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n border-color: transparent;\n box-shadow: 0 5px 15px rgb(var(--edu-shadow-color) / 0.18);\n }\n}\n\n:host([variant="glass"]) {\n & .wrap {\n background: rgba(var(--edu-card), 0.7);\n backdrop-filter: blur(10px);\n border: 1px solid rgba(var(--edu-border), 0.35);\n border-radius: 14px;\n box-shadow: 0 16px 32px rgba(var(--edu-shadow-color), 0.12);\n }\n\n & .check-btn {\n background: rgba(var(--edu-first-accent), 0.88);\n backdrop-filter: blur(5px);\n border-radius: 999px;\n }\n\n & .check-btn:hover:not(:disabled) {\n background: rgba(var(--edu-first-accent), 1);\n }\n\n & footer {\n border-top: 1px solid rgba(var(--edu-border), 0.35);\n }\n\n & .progress-bar::-webkit-progress-bar {\n background: rgba(var(--edu-card), 0.3);\n backdrop-filter: blur(5px);\n }\n\n & .progress-bar::-webkit-progress-value {\n background: rgba(var(--edu-first-accent), 0.7);\n }\n\n & .radio-nav label {\n background: rgba(var(--edu-card), 0.5);\n backdrop-filter: blur(5px);\n border: 1px solid rgba(var(--edu-border), 0.35);\n border-radius: 999px;\n }\n\n & .radio-nav input:checked + label {\n background: rgba(var(--edu-first-accent), 0.8);\n border-color: rgb(var(--edu-first-accent));\n }\n}\n\n:host([variant="letter"]) {\n & .wrap {\n border: 1px solid rgb(var(--edu-border));\n font-family: georgia, serif;\n box-shadow: inset 0 0 0 1px rgba(var(--edu-shadow-color), 0.1);\n border-radius: 4px;\n }\n\n & .timer {\n font-family: georgia, serif;\n letter-spacing: 0.5px;\n }\n\n & .check-btn {\n font-family: georgia, serif;\n border-radius: 2px;\n font-size: 0.95rem;\n letter-spacing: 0.5px;\n }\n\n & footer {\n color: rgb(var(--edu-inverted-ink));\n border-top: 1px solid rgb(var(--edu-border));\n padding: 1rem 1.5rem;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background-color: rgb(var(--edu-muted));\n box-shadow: inset 0 0 0 1px rgba(var(--edu-shadow-color), 0.05);\n }\n\n & .radio-nav label {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n background: rgb(var(--edu-third-ink));\n color: rgb(var(--edu-inverted-ink));\n font-weight: 900;\n border-radius: 4px;\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n transform: translateY(-4px);\n }\n}\n\n:host([variant="sign"]) {\n & .wrap {\n border-radius: 6px;\n text-transform: uppercase;\n letter-spacing: 1px;\n border: 2px solid rgb(var(--edu-border));\n }\n\n & .timer {\n text-transform: uppercase;\n letter-spacing: 1.5px;\n font-weight: 800;\n font-size: 0.9rem;\n }\n\n & .check-btn {\n text-transform: uppercase;\n letter-spacing: 1.5px;\n font-weight: 800;\n font-size: 0.9rem;\n border-radius: 4px;\n margin: 0.85rem 2.5rem;\n }\n\n & footer {\n color: rgb(var(--edu-inverted-ink));\n border-top: 2px solid rgb(var(--edu-border));\n }\n\n & .title {\n text-transform: uppercase;\n }\n\n & .progress-bar {\n height: 24px;\n }\n\n & .progress-bar::-webkit-progress-bar {\n background: rgb(var(--edu-third-ink));\n border: 2px solid rgb(var(--edu-third-ink));\n }\n\n & .progress-bar::-webkit-progress-value {\n background: rgb(var(--edu-second-accent));\n }\n\n & .radio-nav label {\n background: rgb(var(--edu-third-ink));\n color: rgb(var(--edu-second-accent));\n border-left: 4px solid rgb(var(--edu-second-accent));\n text-transform: uppercase;\n font-size: 0.8rem;\n font-weight: 700;\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-second-accent));\n color: rgb(var(--edu-third-ink));\n border-left-color: rgb(var(--edu-third-ink));\n }\n}\n\n:host([variant="outline"]) {\n & .wrap {\n color: rgb(var(--edu-inverted-ink));\n background: transparent;\n border-width: 0 1px 2px 1px;\n border-style: solid;\n border-color: rgb(var(--edu-first-accent));\n background: rgb(var(--edu-bg) / 0.1);\n }\n\n & header { background: rgb(var(--edu-first-accent)); color: rgb(var(--edu-inverted-ink)) }\n & .timer { color: rgb(var(--edu-inverted-ink)) }\n\n & footer {\n border-top: none;\n padding: 0;\n padding-left: 0.5rem;\n padding-right: 0.5rem;\n }\n\n & .check-btn {\n font-size: 100%;\n font-weight: 700;\n border: none;\n border-radius: 0;\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n color: rgb(var(--edu-inverted-ink));\n background: rgb(var(--edu-first-accent));\n margin: 0;\n padding: 1rem;\n text-transform: uppercase;\n }\n\n & .check-btn:hover:not(:disabled) {\n background: rgb(var(--edu-first-accent) / 0.9);\n box-shadow: 0 4px 12px rgb(var(--edu-first-accent) / 0.3);\n transform: none;\n }\n\n & .radio-nav label {\n border: 2px solid rgb(var(--edu-first-accent));\n border-radius: 0;\n background: transparent;\n color: rgb(var(--edu-ink));\n }\n\n & .radio-nav label:hover {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n }\n\n & .radio-nav input:checked + label {\n background: rgb(var(--edu-first-accent));\n color: rgb(var(--edu-inverted-ink));\n }\n}\n\n:host([variant="card"]) {\n & .wrap {\n border-radius: 14px;\n background: rgb(var(--edu-card));\n box-shadow: 0 10px 24px rgba(var(--edu-shadow-color), 0.12), 0 2px 4px rgba(var(--edu-shadow-color), 0.05);\n }\n\n & .check-btn {\n border-radius: 999px;\n box-shadow: 0 6px 14px rgba(var(--edu-shadow-color), 0.12);\n }\n\n & .check-btn:hover:not(:disabled) {\n box-shadow: 0 4px 8px rgba(var(--edu-first-accent), 0.2);\n }\n\n & footer {\n border-top: 1px solid rgb(var(--edu-border));\n }\n\n & .radio-nav label {\n border-radius: 999px;\n box-shadow: 0 4px 10px rgba(var(--edu-shadow-color), 0.08);\n }\n\n & .radio-nav input:checked + label {\n box-shadow: 0 4px 8px rgba(var(--edu-first-accent), 0.2);\n }\n}\n';
13209
13403
 
13210
13404
  // src/shell/simple-shell/script.ts
13211
13405
  var InteractionsBaseShell = class extends HTMLElement {
@@ -13236,7 +13430,6 @@ var InteractionsBaseShell = class extends HTMLElement {
13236
13430
  this.$timerEl = wrap.querySelector(".timer");
13237
13431
  this.$checkBtn = wrap.querySelector(".check-btn");
13238
13432
  this.$scoresBtn = wrap.querySelector(".scores-btn");
13239
- this.$seeAnswersBtn = wrap.querySelector(".see-answers-btn");
13240
13433
  this.$retryBtn = wrap.querySelector(".retry-btn");
13241
13434
  this.$radioNav = wrap.querySelector(".radio-nav");
13242
13435
  this.$progressContainer = wrap.querySelector(".progress-container");
@@ -13345,11 +13538,6 @@ var InteractionsBaseShell = class extends HTMLElement {
13345
13538
  console.error("Submit failed:", error);
13346
13539
  }
13347
13540
  });
13348
- this.$seeAnswersBtn.addEventListener("click", () => {
13349
- this.soundManager.playSound("pop");
13350
- if (this.currentScreen === "solution") this.switchScreen("interaction");
13351
- else this.switchScreen("solution");
13352
- });
13353
13541
  this.$scoresBtn.addEventListener("click", () => {
13354
13542
  this.soundManager.playSound("pop");
13355
13543
  if (this.currentScreen === "score") this.switchScreen("interaction");
@@ -13438,7 +13626,6 @@ var InteractionsBaseShell = class extends HTMLElement {
13438
13626
  }
13439
13627
  handleGraded(result) {
13440
13628
  this.$checkBtn.classList.add("edu-hidden");
13441
- this.$seeAnswersBtn.classList.remove("edu-hidden");
13442
13629
  this.$scoresBtn.classList.remove("edu-hidden");
13443
13630
  this.$retryBtn.classList.remove("edu-hidden");
13444
13631
  if (this.attemptLimit && this.attemptCount > this.attemptLimit) {
@@ -13471,7 +13658,6 @@ var InteractionsBaseShell = class extends HTMLElement {
13471
13658
  if (!this.interaction.implementsProgress) {
13472
13659
  this.$checkBtn.classList.remove("edu-hidden");
13473
13660
  }
13474
- this.$seeAnswersBtn.classList.add("edu-hidden");
13475
13661
  this.$scoresBtn.classList.add("edu-hidden");
13476
13662
  this.$retryBtn.classList.add("edu-hidden");
13477
13663
  this.$progressIcon.classList.remove("score-fail", "score-low", "score-mid", "score-high");
@@ -13655,6 +13841,7 @@ export {
13655
13841
  basicTableDataValidator,
13656
13842
  classificationTableGrader,
13657
13843
  clearInteractionRegistry,
13844
+ cognikitThemePresets,
13658
13845
  compareValues,
13659
13846
  configureCognikit,
13660
13847
  createInteraction,
@@ -13668,6 +13855,7 @@ export {
13668
13855
  getClassificationCellGrading,
13669
13856
  getClassificationGradingState,
13670
13857
  getCognikitConfig,
13858
+ getCognikitThemePresets,
13671
13859
  getDNDGradingState,
13672
13860
  getHighlightGradingState,
13673
13861
  getInteraction,
@@ -13687,9 +13875,12 @@ export {
13687
13875
  recognitionValidator,
13688
13876
  registerBuiltInInteractions,
13689
13877
  registerInteraction,
13878
+ resetCognikitTheme,
13879
+ resolveCognikitTheme,
13690
13880
  seriationGrader,
13691
13881
  seriationParser,
13692
13882
  seriationValidator,
13883
+ setCognikitTheme,
13693
13884
  textEngineBaseDataValidator,
13694
13885
  textEngineBaseGrammarParser,
13695
13886
  textEngineBlanksDataValidator,