@import url('iconfont.css');
@import url('animate.min.css');
@import url('../kids/css/iconfont.css');
@import url('../kids/css/newicon.css');

/* 字体 @font-face 定义已收口至 assets/css/fonts.css（2026-11-05 批⓪ 字体重组）；
   FZY4JW--GB1-0（指向不存在的 abc.ttf，长期断链）已随重组整体清除 */

/* ===== 中文字形（2026-11-05 用户令；token 定义在 assets/css/fonts.css，本处只挂使用规则）=====
   产品语言逻辑：默认 EN=英文UI+简体中文内容（中文是学习材料，任何语言下都显示）；
   简=全简体；繁=全繁体（UI 由 En 翻译，内容简→繁转换）。
   拉丁始终 Montserrat；中文一律 LXGW WenKai 楷体：默认（en/zh）简体版、tw 台湾 TC 版。
   组件统一写法：font-family: 'Montserrat', var(--ui-cjk, sans-serif);
   装饰区写法：font-family: Montserrat, var(--ui-cjk-deco, 'fzzy'), sans-serif; */
.ch12tree {
  font-family: 'Montserrat', var(--ui-cjk, sans-serif);
}

.fzzy {
  font-family: 'fzzy';
}
.table-striped tbody tr {
  background-color: rgba(0, 0, 0, 0.05);
}
.table-striped tbody tr:nth-of-type(odd) {
  background-color: #ffffff;
}

/* 响应式改造：#app 最小宽度由 980px 调整为 768px——768px 以下视口整页横向滚动，
   内部布局始终按 ≥768px 渲染（Header 四大按钮条永不换行的前提）；
   kids 手机端路由不受影响（有独立布局容器） */
#app {
  min-width: 768px;
}


@media (min-width: 576px) {
	.container {
   max-width: 540px;
  }
}
@media (min-width: 768px) {
	.container {
  max-width: 940px;
  }
}
@media (min-width: 992px) {
.container {
   max-width: 992px;
  }
}
@media (min-width: 1090px) {
	.container {
    max-width: 1090px;
  }
}
@media (min-width: 1190px) {
	.container {
    max-width: 1190px;
  }
}
@media (min-width: 1290px) {
	.container {
    max-width: 1200px;
  }
}
@media (min-width: 1440px) {
	.container {
    max-width: 1320px;
  }
}

@media (min-width: 1440px) {
  .col-xxl-1 {
    -ms-flex: 0 0 8.333333%;
    flex: 0 0 8.333333%;
    max-width: 8.333333%;
  }
  .col-xxl-2 {
    -ms-flex: 0 0 16.666667%;
    flex: 0 0 16.666667%;
    max-width: 16.666667%;
  }
  .col-xxl-3 {
    -ms-flex: 0 0 25%;
    flex: 0 0 25%;
    max-width: 25%;
  }
  .col-xxl-4 {
    -ms-flex: 0 0 33.333333%;
    flex: 0 0 33.333333%;
    max-width: 33.333333%;
  }
  .col-xxl-5 {
    -ms-flex: 0 0 41.666667%;
    flex: 0 0 41.666667%;
    max-width: 41.666667%;
  }
  .col-xxl-6 {
    -ms-flex: 0 0 50%;
    flex: 0 0 50%;
    max-width: 50%;
  }
  .col-xxl-7 {
    -ms-flex: 0 0 58.333333%;
    flex: 0 0 58.333333%;
    max-width: 58.333333%;
  }
  .col-xxl-8 {
    -ms-flex: 0 0 66.666667%;
    flex: 0 0 66.666667%;
    max-width: 66.666667%;
  }
  .col-xxl-9 {
    -ms-flex: 0 0 75%;
    flex: 0 0 75%;
    max-width: 75%;
  }
  .col-xxl-10 {
    -ms-flex: 0 0 83.333333%;
    flex: 0 0 83.333333%;
    max-width: 83.333333%;
  }
  .col-xxl-11 {
    -ms-flex: 0 0 91.666667%;
    flex: 0 0 91.666667%;
    max-width: 91.666667%;
  }
  .col-xxl-12 {
    -ms-flex: 0 0 100%;
    flex: 0 0 100%;
    max-width: 100%;
  }
}

@media (min-width: 1440px) {}

@media (min-width: 700px) {
	.modal-md {
		max-width: 650px;
	}
}



/* 'segoe ui','noto sans sc' */
body {
  font-family: 'Montserrat', var(--ui-cjk, sans-serif) !important;
  font-size: 16px;
  font-weight: 400;
  line-height: 28px;
  color: #000;
  background: #fdfdfd;
  min-height: 100vh;
}

body .my-teaching {
  background-color: #b247af02;
}

.table {
  color: #000;
}

table.table.table-striped {
  color: #000;
}

label {
  margin-bottom: 0;
}

.btn:focus {
  box-shadow: none;
}

/* ===== D2 按钮精修（2026-11-06 W2 桌面 polish）===== */
/* 原状只抹 box-shadow：键盘 Tab 后按钮焦点完全不可见（a11y 缺陷）。
   :focus-visible 仅键盘导航触发，鼠标点击仍是原 .btn:focus 无环形态；
   环色取 Element 品牌蓝族（与 el-select 选中色 #409EFF 同族）。
   !important 是有意的（a11y 地板必须恒赢）：实测 scoped 组件规则如
   .level_section_resort span.right a.btn[data-v]:focus{box-shadow:none}
   特异性 (0,4,2) 会压过常规全局规则。 */
.is-teacher .btn:focus-visible {
  box-shadow: 0 0 0 3px rgba(64, 158, 255, 0.4) !important;
  outline: none;
}
/* 桌面按压语义=下沉 1px（不用手机式 scale） */
.is-teacher .btn:active {
  transform: translateY(1px);
}

input:focus,
textarea:focus,
select:focus {
  outline: none;
}

/* ===== D3 输入精修（2026-11-06 W2 桌面 polish）===== */
/* outline 被上面一刀切抹掉后补软焦点环（WCAG 2.2 焦点可见性）；jcf select 现役已 20px 胶囊无需动。
   !important 同 D2：a11y 地板恒赢 scoped 组件内的 box-shadow 抹除 */
.is-teacher input:focus,
.is-teacher textarea:focus,
.is-teacher select:focus {
  box-shadow: 0 0 0 3px #e8f1fd !important;
}

/* ===== B2·D5 数字与标题（2026-11-06 W2 桌面 polish，22:45 拍板：不动全站正文色）===== */
/* 表格数字列 tabular-nums：等宽数字让金额/日期/计数上下对齐（csv 报表观感） */
.is-teacher table,
.is-teacher .table {
  font-variant-numeric: tabular-nums;
}
/* 标题折行平衡（text-wrap: balance 渐进增强，不支持即原样） */
.is-teacher h1,
.is-teacher h2,
.is-teacher h3 {
  text-wrap: balance;
}

/* ===== B2·D7 浏览器表面积（2026-11-06 W2 桌面 polish）===== */
/* 细滚动条：6px 轨 + 中性灰蓝 thumb（一页一主题色体系下不做绿色 thumb，避免与页面主色打架） */
.is-teacher ::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}
.is-teacher ::-webkit-scrollbar-track {
  background: transparent;
}
.is-teacher ::-webkit-scrollbar-thumb {
  background: #b9c0cc;
  border-radius: 3px;
}
.is-teacher ::-webkit-scrollbar-thumb:hover {
  background: #98a2b3;
}
/* 选区主题 tint（Element 蓝族，与焦点环同源） */
.is-teacher ::selection {
  background: rgba(64, 158, 255, 0.22);
}
/* 下划线偏移：悬停下划线不贴字（渐进增强，无下划线处零影响） */
.is-teacher a {
  text-underline-offset: 0.18em;
}

textarea {
  padding: 6px 12px 0 12px;
}

a:hover .fa,
.fa:hover {
  text-decoration: none !important;
}

.fa,
a .fa {
  text-decoration: none !important;
}

.a-link{
	cursor: pointer;
}
.a-link:hover{
  text-decoration: underline !important;;
}

a.disabled {
  pointer-events: none;
  cursor: default;
}

input[type='search'] {
  border-color: #ffffff00 !important;
}

input[type='checkbox'] {
  border: 1px solid #a2a8ac;
  background: #fff;
  color: #a2a8ac;
  clear: none;
  cursor: pointer;
  display: inline-block;
  line-height: 0;
  outline: 0;
  padding: 0 !important;
  text-align: center;
  vertical-align: middle;
  width: 16px;
  height: 16px;
  border-radius: 3px;
  appearance: none;
  transition: 0.05s border-color ease-in-out;
  position: relative; /* :checked:before 对勾的定位锚 */
}

/* 自绘 radio：行内场景用 vertical-align:middle 对齐文字（flex 布局会忽略该属性，
   由容器的 align-items:center 负责，两端一致）。2026-11-02 移除历史上的
   position:relative;top:3px 魔数下移补丁——它只对行内 baseline 排版有效，
   却把所有 flex 居中布局里的圆圈整体压低 3px（文字偏高的根因）。 */
input[type='radio'] {
  border: 1px solid #a2a8ac;
  background: #fff;
  color: #a2a8ac;
  clear: none;
  cursor: pointer;
  display: inline-block;
  outline: 0;
  padding: 0;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  appearance: none;
  transition: 0.05s border-color ease-in-out;
  vertical-align: middle;
  position: relative; /* :checked:before 圆点的定位锚 */
}
.about-us input[type='radio'] {
  width: 20px;
  height: 20px;
  margin-right: 3px;
}
input[type='radio']:checked {
  border-color: #203294;
}
input[type='radio']:checked:before {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  width: 6px;
  height: 6px;
  background-color: #203294;
}
.about-us input[type='radio']:checked:before {
  width: 10px;
  height: 10px;
}

/* my-teaching 页主题紫（与该页按钮同色系），radio/checkbox 配套 */
.my-teaching input[type='radio']:checked {
	border: 1px solid #b247af;
}
.my-teaching input[type='radio']:checked:before {
  background-color: #b247af;
}
.my-teaching input[type='checkbox']:checked:before {
  background-color: #b247af;
}

/* about-us 页主题青 */
.about-us input[type='radio']:checked {
  border: 1px solid #04aac5;
}
.about-us input[type='radio']:checked:before {
  background-color: #04aac5;
}

/* 自绘控件恢复键盘焦点可见性（上方 outline:0 会吞掉原生焦点环） */
input[type='radio']:focus-visible,
input[type='checkbox']:focus-visible {
  outline: 2px solid #203294;
  outline-offset: 1px;
}

input:-webkit-autofill,
input:-webkit-autofill:hover, 
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
	color: transparent !important;
	background-color: #fff  !important;
  -webkit-box-shadow: 0 0 0px 1000px white inset  !important;
  /* transition: background-color 5000s ease-in-out 0s; */
}

input.myActive {
  background-color: #04aac50d !important;
}


input[type='password']::-ms-reveal {
  display: none;
}

input[type='checkbox']:checked:before {
  content: '\f00c';
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  font: normal 14px/1 FontAwesome;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: #203294;
  color: #fff;
  border-radius: 2px;
  vertical-align: middle;
}

:disabled {
  pointer-events: none;
  opacity: 0.7;
  background-color: #aaa !important;
  border: none !important;
}

/* 自定义自动填充样式 */
input:-webkit-autofill {
  -webkit-text-fill-color: #000;
}
/* 兼容 Firefox */
input:-moz-autofill {
  color: #000;
}
/* 兼容 Edge */
/* 2026-11-06 用户拍板：全局 placeholder 与正文同色（#000）属可用性反模式，统一改灰 */
input:-ms-input-placeholder {
  color: #8a90a0;
}
/* 强制刷新样式 */
@keyframes autofill {
  to {
    color: #000;
  }
}
input:-webkit-autofill {
  animation-name: autofill;
  animation-fill-mode: both;
}

span.red {
  color: #dd0641;
}

.double-click-no-select {
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.form-group {
  margin-bottom: 1.25rem;
}

.form-control,
input {
  height: 30px;
  padding: 0.3rem 0.75rem 0.3rem;
  border: 1px solid #a2a8ac91;
  border-radius: 40px;
  line-height: 30px;
  font-size: 15px;
  font-weight: 400;
  color: #000;
}
.form-control:focus {
	border-color: #a2a8ac;
  color: #000;
  box-shadow: 0 0 0 0px #fff, 0 0 0 1px #0e72ed;
}
span.help.is-danger {
  display: block;
	padding-left: 15px;
  margin-top: -5px;
  color: #dd0641;
  font-size: 13px;
  position: absolute;
	white-space: nowrap;
}

span.is_error {
  display: block;
  color: #dd0641;
  font-size: 14px;
}

.my_danger {
  display: block;
  margin-left: 5px;
  margin-top: -5px;
  font-size: 13px;
  color: #dd0641;
  position: absolute;
}

.col-form-label {
  font-weight: 500;
  font-size: 15px;
}

a.kids_login,
ul.tabs li {
  text-align: center;
}

a.kids_login,
footer h3 {
  text-transform: uppercase;
  /* D2（2026-11-06 W2）：uppercase 补字距（首页 Kids Login 挂毯与 footer 标题） */
  letter-spacing: 0.04em;
}

.Indie {
  font-family: 'Indie Flower', cursive;
}

a.kids_login {
  color: #fff;
}

input::-webkit-input-placeholder {
  font-size: 15px;
  font-weight: 400;
  font-family: Montserrat, var(--ui-cjk-deco, 'fzzy'), sans-serif !important;
  /* 2026-11-06 用户拍板：全局 placeholder 统一灰（原 #000 与正文同色） */
  color: #8a90a0;
	transition: opacity 0.3s ease;
}

/* 兼容 Firefox（全局，原缺——仅 navbar 有 -moz 版本） */
input::-moz-placeholder {
  color: #8a90a0;
  opacity: 1;
}

input:focus::-webkit-input-placeholder {
  opacity: 0;
	transition: opacity 0.3s ease;
}

nav.navbar input::-webkit-input-placeholder {
  color: #8a90a0;
}
nav.navbar input::-moz-placeholder {
  color: #8a90a0;
}
nav.navbar input:-ms-input-placeholder {
  color: #8a90a0;
}
nav.navbar input:-moz-placeholder {
  color: #8a90a0;
}

.section_head h1 {
  float: left;
  margin-bottom: 12px;
  font-size: 30px;
  color: rgb(32, 50, 148);
  position: relative;
}
.section_head h1:after {
  content: '';
  background: #45ba4c;
  opacity: 0.5;
  height: 3px;
  position: absolute;
  left: 0;
  right: 0;
  bottom: -5px;
  width: 180px;
}
.section_head h2 {
  font-size: 16px;
  font-weight: 400;
  color: #45ba4c;
  letter-spacing: -0.4px;
  position: relative;
  top: 15px;
  left: 25px;
}

.white-space-nowrap {
  white-space: nowrap;
}

.new_section_header h1 {
  font-size: 26px;
  color: rgb(32, 50, 148);
  position: relative;
}
.new_section_header h1:after {
  content: '';
  background: #45ba4c;
  opacity: 0.5;
  height: 3px;
  position: absolute;
  left: 0;
  right: 0;
  bottom: -5px;
  width: 180px;
}
.new_section_header h2 {
  font-size: 16px;
  font-weight: 400;
  color: #45ba4c;
  letter-spacing: -0.4px;
}

.inner {
  margin-top: 2rem;
}

#inner {
  padding: 2rem 0 2rem 0;
  background-position: top right;
  background-repeat: no-repeat;
  background-size: 35%;
  position: relative;
}
button:focus {
  outline: 0;
}

a {
  color: inherit;
}

/* ===== D1 动效精确化（2026-11-06 W2 桌面 polish）：原 all 0.4s ease-in-out 会让
   任意属性（含布局属性）拖 0.4s 长尾；收敛为「只过渡表现属性」，时长/缓动收 token。
   依赖调查（W2 全仓 perl 扫描）：button/input 状态规则改布局属性的仅
   .my_submit_button:hover i（margin-left 箭头滑动）一族，其 i 元素自带
   transition: 0.4s all ease（scoped 内联全覆盖），不依赖本全局规则——收敛零破坏。
   作用域=.is-teacher 根判别类（App.vue），kids 端零波及。
   ⚠ 影响面声明（2026-11-06 C组审查）：m.blade 也加载本文件，未登录面/无 is-teacher
   判别的页面因此失去原全局 outline:0 与 0.4s 过渡——恢复浏览器默认 focus outline
   属 a11y 增强方向，教师登录后（is-teacher 在位）按钮/输入微交互不受影响。 */
:root {
  --td-fast: 0.1s; /* 预留：高频微交互（hover 态色变）后续批次接入 */
  --td-base: 0.15s;
  --td-slow: 0.25s; /* 预留：大面积面板/弹层过渡后续批次接入 */
  --td-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}

.is-teacher button,
.is-teacher input,
.is-teacher svg[type='submit'] {
  outline: 0;
  transition: color var(--td-base) var(--td-ease), background-color var(--td-base) var(--td-ease),
    border-color var(--td-base) var(--td-ease), box-shadow var(--td-base) var(--td-ease),
    opacity var(--td-base) var(--td-ease), transform var(--td-base) var(--td-ease),
    filter var(--td-base) var(--td-ease);
}

ul {
  padding: 0;
  margin: 0;
  list-style: none;
}

img {
  max-width: 100%;
  height: auto;
  image-rendering: -webkit-optimize-contrast;
}

.dropdown-toggle::after {
  display: inline-block;
  margin-left: 0.5em !important;
  vertical-align: 0.1em !important;
  content: '';
  border-top: 0.5em solid !important;
  border-right: 0.5em solid transparent !important;
  border-bottom: 0;
  border-left: 0.5em solid transparent !important;
}

.assign_level_popup2 {
  background-color: #fff;
  /* D4：#ccc 硬影 → e2 悬浮级双影 token（popup 浮层） */
  box-shadow: var(--e2-raised);
  padding: 10px 10px;
  display: none;
  width: auto;
  min-width: 750px;
  position: absolute;
  z-index: 9;
}

.required_input:after {
  content: '*';
  margin-left: 5px;
  color: red;
  font-size: 16.5px;
  font-weight: 400;
}

label.active img.gradient-2 {
  background-image: linear-gradient(to right top, #fab823, #f9a315, #f68d0c, #f3770d, #ee5f13);
  opacity: 1;
  padding: 5px;
}

.modal-header p {
  width: 100%;
  color: #000;
  margin-top: 15px;
}

.form-control:disabled,
.form-control[readonly] {
  background-color: #e8f0fe !important;
}

.show {
  display: block !important;
}

.custom_radio {
  display: block;
  position: relative;
  padding-left: 25px;
  margin-bottom: 12px;
  user-select: none;
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
}
.custom_radio input {
  position: absolute;
  opacity: 0;
  cursor: pointer;
}
.custom_radio .checkmark {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  left: 0;
  height: 16px;
  width: 16px;
  border-radius: 50%;
  border: 1px solid #b247af;
}
.custom_radio input:checked ~ .checkmark {
  background-color: #b247af;
}
.custom_radio .checkmark:after {
  content: '';
  position: absolute;
  display: none;
}
.custom_radio input:checked ~ .checkmark:after {
  display: block;
}
.custom_radio .checkmark:after {
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: white;
}

.nav-tabs > li.active > a,
.nav-tabs > li.active > a:focus,
.nav-tabs > li.active > a:hover {
  color: #000;
  cursor: default;
  background-color: #fff;
  border: 1px solid #ddd;
  width: 100%;
}

.custom_switch .switch input:checked + .slider:before {
  -webkit-transform: translateX(26px);
  -ms-transform: translateX(26px);
  transform: translateX(26px);
}

.custom_switch .switch {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 28px;
}

.custom_switch .switch span.slider:before {
  position: absolute;
  content: '';
  top: 3px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  transition: 0.4s;
  border-radius: 50%;
  height: 20px;
  width: 20px;
}

.custom_switch input:checked + .slider:before {
  left: 0px;
}

.modal-backdrop.show {
  opacity: 0;
}
.modal.fade.show {
  z-index: 99999;
  /* D4：遮罩换暖墨色 0.5（纯黑 0.6 太死；墨基与三级影 token 同源） */
  background-color: rgba(31, 36, 48, 0.5);
}

.nav-tabs .nav-item:focus {
  outline: 0;
  color: #fff;
}

ul.navbar-nav li.nav-item a.nav-link.router-link-exact-active.router-link-active {
  color: green;
}

body span.jcf-select-text span {
  padding: 7px 0;
}

span.jcf-select.jcf-unselectable.jcf-select-form-control.jcf-select-jcf_dropdown_box {
  min-width: 250px;
  width: 100%;
  margin-bottom: 0;
}

.no_record_found {
  background-color: #fff !important;
}
.no_record {
  text-align: center;
  font-weight: 400;
  font-size: 18px;
  margin-top: 70px;
  margin-bottom: 70px;
}

input[type='password']::-webkit-credentials-auto-fill-button {
  visibility: hidden;
  pointer-events: none;
  position: absolute;
  right: 0;
}
.f-size-12-5 {
  font-size: 12.5px !important;
}
.f-size-13 {
  font-size: 13px;
}
span.text-right {
  position: absolute;
  margin-left: 31%;
  margin-top: 11px;
}

.book-item {
  padding: 0;
}

[v-cloak] {
  display: none;
}

.order-now .jcf-select .jcf-select-opener {
  background-image: url('/assets/img/down.png') !important;
}

.toggle-password-2 {
  position: absolute;
	right: 15px;
	top: 27%;
	cursor: pointer;
}

.alifont-read:before {
  position: relative;
  top: 1.5px;
}


.my_sorry_box{
	margin-top: 7px;
	line-height: 26px;
	font-size: 13px;
	font-weight: 400;
	font-style: italic;
	text-align: center;
}
.my_sorry_box a {
	color: #b247af;
	font-weight: 500;
}
