/**
 * 口算练习生成器 样式表
 *
 * 设计：暖橙 + 薄荷绿 + 明黄 + 奶油米白，圆润大字号、大圆角，儿童友好。
 * 作用域：所有选择器均以 .ks-app 开头，不影响主题其它部分。
 *
 * @package KousuanGen
 */

/* 颜色变量（仅作用于插件内部，:root 用 .ks-app 代替，避免污染全局） */
.ks-app {
	--ks-orange: #ff8c42;
	--ks-orange-dark: #ef6f1d;
	--ks-mint: #7ed4ad;
	--ks-mint-dark: #4fb88b;
	--ks-yellow: #ffd93d;
	--ks-cream: #fff8ec;
	--ks-cream-2: #fdeed6;
	--ks-text: #5a4632;
	--ks-text-light: #9a8670;
	--ks-red: #ef5350;
	--ks-green: #43a047;
	--ks-radius: 22px;

	/* 系统圆润字体栈，不依赖外部 CDN */
	--ks-font: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
		"Helvetica Neue", Helvetica, Arial, "Segoe UI", "Comic Sans MS",
		sans-serif;

	--ks-shadow: 0 8px 24px rgba(255, 140, 66, 0.16);

	box-sizing: border-box;
	color: var(--ks-text);
	font-family: var(--ks-font);
	line-height: 1.6;
}

.ks-app *,
.ks-app *::before,
.ks-app *::after {
	box-sizing: border-box;
}

/* ---------------- 外层卡片 ---------------- */

.ks-app .ks-card {
	max-width: 760px;
	margin: 0 auto;
	background: var(--ks-cream);
	border: 3px solid #ffe2bd;
	border-radius: var(--ks-radius);
	box-shadow: var(--ks-shadow);
	overflow: hidden;
}

.ks-app .ks-header {
	text-align: center;
	padding: 22px 16px 16px;
	background: linear-gradient(135deg, #fff3df 0%, #ffe8c9 100%);
	border-bottom: 3px dashed #ffd9a8;
}

.ks-app .ks-title {
	margin: 0;
	font-size: 28px;
	font-weight: 800;
	color: var(--ks-orange-dark);
	letter-spacing: 1px;
}

.ks-app .ks-subtitle {
	margin: 6px 0 0;
	font-size: 15px;
	color: var(--ks-text-light);
}

/* ---------------- 标签页 ---------------- */

.ks-app .ks-tabs {
	display: flex;
	gap: 10px;
	padding: 14px 16px 0;
}

.ks-app .ks-tab {
	flex: 1;
	padding: 12px 8px;
	font-size: 17px;
	font-weight: 700;
	font-family: inherit;
	border: 3px solid transparent;
	border-radius: 16px;
	background: #f6e7d2;
	color: var(--ks-text-light);
	cursor: pointer;
	transition: transform 0.15s ease, background 0.2s ease, color 0.2s ease;
}

.ks-app .ks-tab:hover {
	transform: translateY(-2px);
}

.ks-app .ks-tab.ks-active {
	background: var(--ks-orange);
	color: #fff;
	border-color: var(--ks-orange-dark);
	box-shadow: 0 4px 10px rgba(255, 140, 66, 0.35);
}

/* ---------------- 面板切换 ---------------- */

.ks-app .ks-panel {
	display: none;
	padding: 18px 18px 22px;
}

.ks-app .ks-panel.ks-panel-active {
	display: block;
	animation: ks-fade 0.25s ease;
}

@keyframes ks-fade {
	from { opacity: 0; transform: translateY(8px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* ---------------- 设置界面 ---------------- */

.ks-app .ks-field {
	margin-bottom: 18px;
}

.ks-app .ks-field-label {
	font-size: 17px;
	font-weight: 700;
	margin-bottom: 10px;
	color: var(--ks-text);
}

.ks-app .ks-opt-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
}

.ks-app .ks-opt-row {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
}

.ks-app .ks-opt {
	padding: 13px 8px;
	font-size: 16px;
	font-weight: 700;
	font-family: inherit;
	border: 3px solid #ffdfb6;
	border-radius: 16px;
	background: #fffdf8;
	color: var(--ks-text);
	cursor: pointer;
	transition: transform 0.15s ease, background 0.2s ease, border-color 0.2s ease;
}

.ks-app .ks-opt-row .ks-opt {
	flex: 1;
	min-width: 90px;
}

.ks-app .ks-opt:hover {
	transform: translateY(-2px);
	border-color: var(--ks-mint);
}

.ks-app .ks-opt.ks-opt-active {
	background: var(--ks-mint);
	border-color: var(--ks-mint-dark);
	color: #fff;
	box-shadow: 0 4px 10px rgba(126, 212, 173, 0.45);
}

/* ---------------- 按钮 ---------------- */

.ks-app .ks-btn {
	display: inline-block;
	padding: 12px 22px;
	font-size: 17px;
	font-weight: 700;
	font-family: inherit;
	border-radius: 999px;
	border: 3px solid transparent;
	cursor: pointer;
	transition: transform 0.15s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.ks-app .ks-btn:hover {
	transform: translateY(-2px);
}

.ks-app .ks-btn-primary {
	background: var(--ks-orange);
	border-color: var(--ks-orange-dark);
	color: #fff;
	box-shadow: 0 6px 14px rgba(255, 140, 66, 0.4);
}

.ks-app .ks-btn-ghost {
	background: #fff;
	border-color: #ffd9a8;
	color: var(--ks-orange-dark);
}

.ks-app .ks-btn-big {
	display: block;
	width: 100%;
	padding: 16px;
	font-size: 20px;
	margin-top: 6px;
}

.ks-app .ks-tip {
	text-align: center;
	margin: 12px 0 0;
	font-size: 14px;
	color: var(--ks-text-light);
}

.ks-app .ks-switch-row {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 16px;
	cursor: pointer;
	user-select: none;
}

.ks-app .ks-switch-row input[type="checkbox"] {
	width: 22px;
	height: 22px;
	accent-color: var(--ks-mint-dark);
	cursor: pointer;
}

/* ---------------- 答题界面 ---------------- */

.ks-app .ks-practice {
	outline: none;
}

.ks-app .ks-practice-top {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-bottom: 10px;
	flex-wrap: wrap;
	gap: 6px;
}

.ks-app .ks-badge {
	background: var(--ks-yellow);
	color: #7a5b00;
	font-weight: 700;
	font-size: 14px;
	padding: 5px 14px;
	border-radius: 999px;
}

.ks-app .ks-progress-text {
	font-size: 15px;
	color: var(--ks-text-light);
}

.ks-app .ks-progress-text b {
	color: var(--ks-orange-dark);
	font-size: 18px;
}

.ks-app .ks-progress-bar {
	height: 14px;
	background: #f6e7d2;
	border-radius: 999px;
	overflow: hidden;
	margin-bottom: 20px;
}

.ks-app .ks-progress-fill {
	height: 100%;
	background: linear-gradient(90deg, var(--ks-mint) 0%, var(--ks-mint-dark) 100%);
	border-radius: 999px;
	transition: width 0.3s ease;
}

.ks-app .ks-question {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	flex-wrap: wrap;
	padding: 26px 12px;
	background: #fffdf8;
	border: 3px solid #ffe8c9;
	border-radius: var(--ks-radius);
	margin-bottom: 12px;
}

.ks-app .ks-q-num {
	font-size: 52px;
	font-weight: 800;
	color: var(--ks-text);
	line-height: 1.1;
}

.ks-app .ks-q-op,
.ks-app .ks-q-eq {
	font-size: 46px;
	font-weight: 800;
	color: var(--ks-orange-dark);
	line-height: 1.1;
}

.ks-app .ks-answer-box {
	min-width: 92px;
	height: 76px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 48px;
	font-weight: 800;
	border-bottom: 5px solid var(--ks-mint);
	color: var(--ks-mint-dark);
	padding: 0 10px;
	line-height: 1.1;
}

.ks-app .ks-answer-box.ks-correct {
	color: var(--ks-green);
	border-bottom-color: var(--ks-green);
	animation: ks-pop 0.35s ease;
}

.ks-app .ks-answer-box.ks-wrong {
	color: var(--ks-red);
	border-bottom-color: var(--ks-red);
	animation: ks-shake 0.4s ease;
}

@keyframes ks-pop {
	0%   { transform: scale(1); }
	50%  { transform: scale(1.18); }
	100% { transform: scale(1); }
}

@keyframes ks-shake {
	0%, 100% { transform: translateX(0); }
	25%      { transform: translateX(-8px); }
	75%      { transform: translateX(8px); }
}

.ks-app .ks-feedback {
	min-height: 34px;
	text-align: center;
	font-size: 19px;
	font-weight: 700;
	margin-bottom: 10px;
}

.ks-app .ks-feedback-ok {
	color: var(--ks-green);
}

.ks-app .ks-feedback-no {
	color: var(--ks-red);
}

/* ---------------- 数字键盘 ---------------- */

.ks-app .ks-keypad {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	max-width: 420px;
	margin: 0 auto;
}

.ks-app .ks-key {
	padding: 16px 0;
	font-size: 30px;
	font-weight: 800;
	font-family: inherit;
	border-radius: 18px;
	border: 3px solid #ffdfb6;
	background: #fffdf8;
	color: var(--ks-text);
	cursor: pointer;
	transition: transform 0.1s ease, background 0.15s ease;
	touch-action: manipulation;
}

.ks-app .ks-key:hover {
	background: #fff3df;
}

.ks-app .ks-key:active {
	transform: scale(0.94);
}

.ks-app .ks-key:disabled {
	opacity: 0.5;
	cursor: default;
}

.ks-app .ks-key-del {
	background: #fdeed6;
	font-size: 26px;
}

.ks-app .ks-key-ok {
	background: var(--ks-mint);
	border-color: var(--ks-mint-dark);
	color: #fff;
}

/* ---------------- 结果界面 ---------------- */

.ks-app .ks-result {
	text-align: center;
}

.ks-app .ks-stars {
	font-size: 46px;
	letter-spacing: 8px;
	margin-bottom: 4px;
}

.ks-app .ks-star {
	color: #e8dccb;
}

.ks-app .ks-star.ks-star-on {
	color: var(--ks-yellow);
	text-shadow: 0 2px 6px rgba(255, 200, 0, 0.55);
	animation: ks-pop 0.5s ease;
}

.ks-app .ks-score {
	font-size: 76px;
	font-weight: 800;
	color: var(--ks-orange-dark);
	line-height: 1.1;
}

.ks-app .ks-score-unit {
	font-size: 28px;
	margin-left: 4px;
}

.ks-app .ks-praise {
	font-size: 19px;
	font-weight: 700;
	color: var(--ks-mint-dark);
	margin-bottom: 18px;
}

.ks-app .ks-stat-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 10px;
	margin-bottom: 18px;
}

.ks-app .ks-stat {
	background: #fffdf8;
	border: 3px solid #ffe8c9;
	border-radius: 18px;
	padding: 14px 8px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.ks-app .ks-stat b {
	font-size: 21px;
}

.ks-app .ks-stat span {
	font-size: 14px;
	color: var(--ks-text-light);
}

.ks-app .ks-stat-ok b { color: var(--ks-green); }
.ks-app .ks-stat-no b { color: var(--ks-red); }
.ks-app .ks-stat-time b { font-size: 17px; color: var(--ks-orange-dark); }

/* 错题回顾 */

.ks-app .ks-wrong-review {
	text-align: left;
	margin-bottom: 18px;
}

.ks-app .ks-wrong-review ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 10px;
}

.ks-app .ks-wrong-item {
	background: #fff;
	border: 2px solid #ffd6d6;
	border-radius: 14px;
	padding: 10px 12px;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.ks-app .ks-wrong-q {
	font-size: 20px;
	font-weight: 800;
}

.ks-app .ks-wrong-your {
	font-size: 14px;
	color: var(--ks-red);
}

.ks-app .ks-wrong-right {
	font-size: 14px;
	color: var(--ks-green);
}

.ks-app .ks-result-actions {
	display: flex;
	gap: 10px;
	justify-content: center;
	flex-wrap: wrap;
}

/* ---------------- 打印题卡 ---------------- */

.ks-app .ks-sheet-toolbar {
	display: flex;
	gap: 10px;
	align-items: center;
	flex-wrap: wrap;
	margin-bottom: 16px;
}

.ks-app .ks-sheet-switch {
	font-size: 15px;
}

.ks-app .ks-sheet {
	background: #fff;
	border: 2px solid #e5d9c8;
	border-radius: 14px;
	padding: 20px;
	color: #222;
}

.ks-app .ks-sheet-head {
	border-bottom: 2px solid #333;
	padding-bottom: 10px;
	margin-bottom: 14px;
}

.ks-app .ks-sheet-title {
	text-align: center;
	font-size: 20px;
	font-weight: 800;
	margin-bottom: 10px;
}

.ks-app .ks-sheet-info {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 20px;
	font-size: 15px;
	justify-content: space-between;
}

.ks-app .ks-sheet-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 10px 16px;
	counter-reset: ks-item;
}

.ks-app .ks-cols-2 .ks-sheet-list { grid-template-columns: repeat(2, 1fr); }
.ks-app .ks-cols-4 .ks-sheet-list { grid-template-columns: repeat(4, 1fr); }
.ks-app .ks-cols-5 .ks-sheet-list { grid-template-columns: repeat(5, 1fr); }

.ks-app .ks-sheet-item {
	counter-increment: ks-item;
	display: flex;
	align-items: baseline;
	gap: 4px;
	font-size: 17px;
	padding-bottom: 4px;
}

.ks-app .ks-sheet-item::before {
	content: counter(ks-item) ".";
	color: #666;
	font-size: 14px;
	min-width: 22px;
}

.ks-app .ks-sheet-text {
	white-space: nowrap;
}

.ks-app .ks-sheet-answer {
	flex: 1;
	min-width: 28px;
	border-bottom: 1px solid #999;
	text-align: center;
	font-style: normal;
}

.ks-app .ks-sheet-answer em {
	font-style: normal;
	color: var(--ks-red);
	font-weight: 700;
}

/* ---------------- 加载提示 ---------------- */

.ks-app .ks-loading {
	text-align: center;
	padding: 40px 16px;
	font-size: 17px;
	color: var(--ks-text-light);
}

/* ---------------- 响应式：手机 ---------------- */

@media (max-width: 600px) {
	.ks-app .ks-title {
		font-size: 23px;
	}

	.ks-app .ks-tab {
		font-size: 15px;
		padding: 10px 6px;
	}

	.ks-app .ks-opt-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.ks-app .ks-question {
		gap: 8px;
		padding: 20px 8px;
	}

	.ks-app .ks-q-num {
		font-size: 40px;
	}

	.ks-app .ks-q-op,
	.ks-app .ks-q-eq {
		font-size: 36px;
	}

	.ks-app .ks-answer-box {
		min-width: 70px;
		height: 60px;
		font-size: 38px;
	}

	.ks-app .ks-key {
		font-size: 26px;
		padding: 13px 0;
	}

	.ks-app .ks-score {
		font-size: 60px;
	}

	.ks-app .ks-wrong-review ul {
		grid-template-columns: 1fr;
	}

	/* 屏幕上预览题卡时，手机端用 2 列避免拥挤 */
	.ks-app .ks-cols-4 .ks-sheet-list,
	.ks-app .ks-cols-5 .ks-sheet-list {
		grid-template-columns: repeat(2, 1fr);
	}

	.ks-app .ks-sheet {
		padding: 14px;
	}
}

/* ---------------- 响应式：平板 ---------------- */

@media (min-width: 601px) and (max-width: 900px) {
	.ks-app .ks-cols-5 .ks-sheet-list {
		grid-template-columns: repeat(4, 1fr);
	}
}

/* ---------------- 打印样式 ---------------- */

/*
 * 打印时：
 * 1. 插件内的工具栏等 .ks-no-print 元素隐藏；
 * 2. 通过 body.ks-printing 把主题的页头/页脚/侧栏等全部隐藏，
 *    只让当前插件题卡显示，实现干净的 A4 输出。
 */

@media print {
	body.ks-printing * {
		visibility: hidden !important;
	}

	body.ks-printing .ks-app,
	body.ks-printing .ks-app * {
		visibility: visible !important;
	}

	body.ks-printing .ks-app {
		position: absolute !important;
		left: 0;
		top: 0;
		width: 100%;
		max-width: none;
		margin: 0;
	}

	body.ks-printing .ks-app .ks-card {
		max-width: none;
		border: none;
		box-shadow: none;
		border-radius: 0;
	}

	body.ks-printing .ks-app .ks-header,
	body.ks-printing .ks-app .ks-tabs {
		display: none !important;
	}

	body.ks-printing .ks-app .ks-panel {
		display: none !important;
		padding: 0;
	}

	body.ks-printing .ks-app .ks-panel-print {
		display: block !important;
	}

	.ks-app .ks-no-print {
		display: none !important;
	}

	.ks-app .ks-sheet-wrap {
		margin: 0;
	}

	.ks-app .ks-sheet {
		border: none;
		border-radius: 0;
		padding: 0;
	}

	/* 打印时按题量恢复合适的列数（覆盖屏幕端响应式规则） */
	.ks-app .ks-cols-2 .ks-sheet-list { grid-template-columns: repeat(2, 1fr) !important; }
	.ks-app .ks-cols-4 .ks-sheet-list { grid-template-columns: repeat(4, 1fr) !important; }
	.ks-app .ks-cols-5 .ks-sheet-list { grid-template-columns: repeat(5, 1fr) !important; }

	.ks-app .ks-sheet-item {
		font-size: 16px;
	}

	@page {
		margin: 12mm;
	}
}
