/* generated by scripts/build-qq-css.mjs — 원본: base.css + type-scale.css + pages/qq-index.css (수정 금지) */
@import url("/qq/assets/fonts/pretendard-subset/pretendard-subset.css");
:root {
--accent: #172e55;
--accent-600: #0f1f3d;
--accent-050: #eaeef5;
--point: #22b8c4;
--point-600: #0e7c8c;
--point-050: #e2f4f6;
--grad: linear-gradient(157deg, #345a8d 0%, #1f3d69 50%, #13284a 100%);
--grad-sheen: 0 1px 0 rgba(255, 255, 255, 0.12) inset, 0 10px 22px -12px rgba(19, 40, 74, 0.55);
--ink: #1a1a1a;
--body: #3b3b3b;
--muted: #6a6a6a;
--faint: #8a8a8a;
--line: #e8e8e8;
--line-soft: #f2f2f2;
--bg: #ffffff;
--bg-tint: #f6f6f6;
--ok: #1e9245;
--ok-bg: #d1f5de;
--warn: #c48f00;
--warn-bg: #ffe8aa;
--sans: "Pretendard Variable", "Pretendard", "Apple SD Gothic Neo", system-ui, sans-serif;
--display:
"Pretendard Variable", "Pretendard", "Apple SD Gothic Neo", system-ui, sans-serif;
--r-lg: 18px;
--r-md: 14px;
--r-sm: 10px;
--ease: cubic-bezier(0.22, 0.7, 0.28, 1);
--shadow: 0 1px 2px rgba(26, 26, 26, 0.03), 0 18px 38px -26px rgba(26, 26, 26, 0.22);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
background: var(--bg);
color: var(--ink);
font-family: var(--sans);
line-height: 1.6;
letter-spacing: -0.01em;
-webkit-font-smoothing: antialiased;
word-break: keep-all;
}
:focus-visible {
outline: 2px solid var(--accent);
outline-offset: 2px;
border-radius: 6px;
}
.topbar {
position: sticky;
top: 0;
z-index: 30;
background: rgba(255, 255, 255, 0.94);
backdrop-filter: blur(6px);
border-bottom: 1px solid var(--line);
}
.topbar-in {
position: relative;
display: flex;
align-items: center;
gap: 12px;
height: 60px;
padding: 0 28px;
}
.brand {
display: flex;
align-items: center;
gap: 9px;
font-weight: 800;
font-size: 20.25px;
color: var(--ink);
}
.brand svg {
width: 24px;
height: 24px;
color: var(--accent);
}
.spacer {
flex: 1;
}
.pbar {
position: absolute;
left: 50%;
transform: translateX(-50%);
display: flex;
align-items: center;
gap: 0;
pointer-events: none;
}
.pbs {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
}
.pbs-dot {
width: 22px;
height: 22px;
border-radius: 50%;
border: 2px solid var(--line);
background: #fff;
font-size: 12px;
font-weight: 700;
color: var(--muted);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: 0.15s;
}
.pbs-dot svg {
width: 11px;
height: 11px;
stroke-width: 2.5;
}
.pbs.done .pbs-dot {
background: var(--accent);
border-color: var(--accent);
color: #fff;
}
.pbs.cur .pbs-dot {
background: var(--accent);
border-color: var(--accent);
color: #fff;
}
.pbs-lbl {
position: absolute;
top: 26px;
left: 50%;
transform: translateX(-50%);
font-size: 10px;
color: var(--faint);
white-space: nowrap;
line-height: 1;
}
.pbs.cur .pbs-lbl {
color: var(--accent);
font-weight: 700;
}
.pbs.done .pbs-lbl {
color: var(--muted);
}
.pbline {
width: 32px;
height: 2px;
background: var(--line);
flex-shrink: 0;
margin-bottom: 12px;
}
.pbline.done {
background: var(--accent);
}
.wrap {
max-width: 1080px;
margin: 0 auto;
padding: 48px 32px 140px;
}
.step {
display: none;
}
.step.on {
display: block;
animation: in 0.28s var(--ease);
}
@keyframes in {
from {
opacity: 0;
transform: translateY(4px);
}
to {
opacity: 1;
transform: none;
}
}
@media (prefers-reduced-motion: reduce) {
.step.on {
animation: none;
}
}
.trust {
display: inline-flex;
align-items: center;
gap: 7px;
font-size: 14px;
font-weight: 600;
color: var(--point-600);
background: var(--point-050);
border-radius: 999px;
padding: 5px 12px;
margin-bottom: 16px;
}
.trust svg {
width: 15px;
height: 15px;
}
.q {
font-family: var(--display);
font-size: clamp(1.8rem, 3.4vw, 2.3rem);
font-weight: 800;
letter-spacing: -0.03em;
line-height: 1.25;
margin: 0;
}
.qsub {
font-size: 17.5px;
color: var(--muted);
margin: 12px 0 30px;
}
.gate {
display: grid;
grid-template-columns: 1fr 0.8fr;
gap: 44px;
align-items: start;
}
.gatep3 {
position: relative;
width: 100%;
height: 320vh;
background: var(--bg);
}
.gatep3.on {
display: block;
}
.gp-sticky {
position: sticky;
top: 60px;
height: calc(100vh - 60px);
display: grid;
grid-template-columns: 0.72fr 1.28fr;
}
@keyframes fade {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
body.at-gate .wrap {
display: none;
}
body.at-gate .footbar {
display: none;
}
.gleft {
padding: 56px;
display: flex;
flex-direction: column;
justify-content: center;
max-width: 600px;
margin-left: auto;
width: 100%;
}
.gleft .q {
color: var(--accent);
font-size: clamp(3rem, 5.5vw, 4rem);
line-height: 1.14;
}
.gright {
position: relative;
overflow: hidden;
background: linear-gradient(180deg, #fafbfe 0%, #eef2f9 100%);
}
.gbreath {
position: absolute;
inset: -20%;
z-index: 0;
background:
radial-gradient(40% 34% at 26% 26%, rgba(34, 184, 196, 0.16), transparent 70%),
radial-gradient(44% 40% at 76% 66%, rgba(40, 86, 150, 0.13), transparent 72%),
radial-gradient(52% 48% at 50% 102%, rgba(23, 46, 85, 0.1), transparent 74%);
filter: blur(6px);
animation: gbreath 16s ease-in-out infinite;
}
@keyframes gbreath {
0%,
100% {
transform: scale(1) translate(0, 0);
opacity: 0.92;
}
50% {
transform: scale(1.07) translate(1.4%, -1.4%);
opacity: 1;
}
}
.flow-head {
position: absolute;
top: 30px;
left: 42px;
right: 42px;
z-index: 3;
display: inline-flex;
align-items: center;
gap: 8px;
font-size: 14px;
font-weight: 800;
letter-spacing: 0.02em;
color: var(--accent);
}
.flow-head .dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--point);
}
.pin-view {
position: absolute;
inset: 0;
z-index: 2;
overflow: hidden;
}
.pin-track {
position: absolute;
inset: 0;
}
.scrollhint {
position: absolute;
left: 0;
right: 0;
bottom: 90px;
z-index: 50;
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
font-size: 13.5px;
font-weight: 700;
color: var(--accent);
opacity: 1;
transition: opacity 0.4s ease;
pointer-events: none;
}
.scrollhint svg {
width: 18px;
height: 18px;
animation: hintBob 1.8s ease-in-out infinite;
}
@keyframes hintBob {
0%,
100% {
transform: translateY(0);
}
50% {
transform: translateY(5px);
}
}
@media (prefers-reduced-motion: reduce) {
.scrollhint svg {
animation: none;
}
}
.gpcard {
position: absolute;
top: 50%;
left: 50%;
width: 540px;
will-change: transform, opacity;
display: grid;
grid-template-columns: 1fr 1.04fr;
background: #fff;
border: 1px solid var(--line);
border-radius: 20px;
overflow: hidden;
box-shadow:
0 1px 2px rgba(22, 22, 24, 0.05),
0 40px 76px -42px rgba(23, 46, 85, 0.55);
transform: translate(-50%, -50%);
}
.gpcard .pc-txt {
padding: 30px 28px;
display: flex;
flex-direction: column;
justify-content: center;
}
.gpcard .promo-badge {
align-self: flex-start;
font-size: 12.5px;
font-weight: 800;
letter-spacing: 0.02em;
border-radius: 999px;
padding: 5px 12px;
margin-bottom: 13px;
color: #fff;
background: var(--point);
}
.gpcard .promo-badge.trust {
background: var(--point);
}
.gpcard .pc-no {
font-family: var(--display);
font-size: 36px;
font-weight: 200;
color: #dce3ee;
line-height: 1;
}
.gpcard .promo-name {
font-family: var(--display);
font-size: 1.6rem;
font-weight: 800;
letter-spacing: -0.02em;
color: var(--ink);
margin: 5px 0 0;
word-break: keep-all;
}
.gpcard .promo-lead {
font-size: 16px;
color: var(--ink);
font-weight: 600;
line-height: 1.5;
margin: 11px 0 0;
max-width: 42ch;
word-break: keep-all;
}
.gpcard .promo-points {
list-style: none;
margin: 13px 0 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 7px;
}
.gpcard .promo-points li {
position: relative;
padding-left: 16px;
font-size: 14px;
color: var(--muted);
line-height: 1.5;
word-break: keep-all;
}
.gpcard .promo-points li::before {
content: "";
position: absolute;
left: 2px;
top: 7px;
width: 5px;
height: 5px;
border-radius: 50%;
background: var(--point);
}
.gpcard .promo-more {
align-self: flex-start;
display: inline-flex;
align-items: center;
gap: 7px;
margin-top: 20px;
padding: 10px 17px;
border-radius: 999px;
background: var(--accent-050);
font-size: 15px;
font-weight: 700;
color: var(--accent);
}
.gpcard .promo-more svg {
width: 15px;
height: 15px;
}
.gpcard .pc-obj {
position: relative;
border-left: 1px solid var(--line-soft);
display: flex;
align-items: center;
justify-content: center;
padding: 22px 20px;
overflow: hidden;
}
.gpcard:nth-child(1) .pc-obj {
background: #eaf1f7;
}
.gpcard:nth-child(2) .pc-obj {
background: #e6f4f5;
}
.gpcard:nth-child(3) .pc-obj {
background: #ecf0f8;
}
.gpcard:nth-child(4) .pc-obj {
background: #e9eef7;
}
.gpcard:nth-child(5) .pc-obj {
background: #e4f2f4;
}
.pc-obj .oc {
width: 100%;
max-width: 300px;
}
.oc {
background: #fff;
border: 1px solid var(--line);
border-radius: 15px;
box-shadow: 0 14px 28px -20px rgba(23, 46, 85, 0.28);
padding: 17px 19px;
}
.oc-top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 11px;
gap: 9px;
}
.oc-ttl {
font-size: 13.5px;
font-weight: 700;
color: var(--ink);
}
.oc-ttl .smp {
color: var(--faint);
font-weight: 500;
}
.oc-seal {
font-size: 11px;
font-weight: 700;
color: var(--accent);
background: var(--accent-050);
border-radius: 999px;
padding: 4px 9px;
display: inline-flex;
align-items: center;
gap: 4px;
flex: none;
}
.oc-seal .d {
width: 5px;
height: 5px;
border-radius: 50%;
background: var(--point);
}
.oc-cap {
font-size: 11px;
color: var(--faint);
margin-top: 10px;
text-align: right;
}
.voc {
list-style: none;
margin: 0;
padding: 0;
}
.voc li {
display: flex;
gap: 9px;
padding: 7px 6px;
border-top: 1px solid var(--line-soft);
font-size: 14px;
color: var(--body);
border-radius: 5px;
}
.voc li:first-child {
border-top: 0;
}
.voc li .n {
color: var(--faint);
width: 13px;
flex: none;
font-weight: 700;
}
.gq {
font-size: 13.5px;
color: var(--muted);
margin: 0 0 9px;
}
.opt-r {
display: flex;
align-items: center;
gap: 8px;
padding: 7px 10px;
border: 1px solid var(--line);
border-radius: 9px;
margin-bottom: 6px;
font-size: 14px;
color: var(--body);
}
.opt-r .k {
font-size: 12.5px;
color: var(--faint);
width: 13px;
flex: none;
font-weight: 700;
}
.opt-r.ok {
border-color: var(--accent);
background: var(--accent-050);
color: var(--ink);
font-weight: 600;
}
.opt-r.ok .ck {
margin-left: auto;
color: var(--point);
display: inline-flex;
}
.opt-r.ok .ck svg {
width: 14px;
height: 14px;
}
.gsol {
font-size: 12px;
color: var(--faint);
margin-top: 8px;
}
.chart {
display: flex;
align-items: flex-end;
gap: 11px;
height: 104px;
padding-top: 12px;
}
.chart .bar {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-end;
height: 100%;
gap: 5px;
}
.chart .bar .sc {
font-size: 12.5px;
font-weight: 700;
color: var(--muted);
}
.chart .bar .bb {
width: 100%;
background: #e1e7f0;
border-radius: 5px 5px 0 0;
height: var(--h);
}
.chart .bar.w .bb {
background: var(--accent);
}
.chart .bar.w .sc {
color: var(--accent);
}
.chart .bar .bl {
font-size: 12.5px;
color: var(--faint);
margin-top: 6px;
}
.gpcard .voc li {
animation: vocRow 5s ease-in-out infinite;
}
.gpcard .voc li:nth-child(2) {
animation-delay: 0.4s;
}
.gpcard .voc li:nth-child(3) {
animation-delay: 0.8s;
}
.gpcard .voc li:nth-child(4) {
animation-delay: 1.2s;
}
@keyframes vocRow {
0%,
45%,
100% {
background: transparent;
}
15% {
background: var(--accent-050);
}
}
.gpcard .opt-r.ok {
animation: okGlow 4.5s ease-in-out infinite;
}
@keyframes okGlow {
0%,
50%,
100% {
box-shadow: 0 0 0 0 rgba(23, 46, 85, 0);
}
68% {
box-shadow: 0 0 0 2px rgba(23, 46, 85, 0.38);
}
}
.gpcard .opt-r.ok .ck {
animation: ckPop 4.5s ease-in-out infinite;
transform-origin: center;
}
@keyframes ckPop {
0%,
52% {
transform: scale(0.4);
opacity: 0.2;
}
66% {
transform: scale(1.25);
opacity: 1;
}
78%,
100% {
transform: scale(1);
opacity: 1;
}
}
.gpcard .chart .bb {
transform-origin: bottom;
animation: barGrow 5s ease-in-out infinite;
}
.gpcard .chart .bar:nth-child(2) .bb {
animation-delay: 0.18s;
}
.gpcard .chart .bar:nth-child(3) .bb {
animation-delay: 0.36s;
}
@keyframes barGrow {
0% {
transform: scaleY(0.05);
}
28% {
transform: scaleY(1);
}
88% {
transform: scaleY(1);
}
100% {
transform: scaleY(0.05);
}
}
.ai-orb {
align-self: flex-start;
display: inline-flex;
align-items: center;
gap: 11px;
margin-bottom: 18px;
}
.ai-orb .aimk {
width: 58px;
height: 58px;
display: block;
overflow: visible;
animation: aimBreath 3.8s ease-in-out infinite;
}
.ai-orb .aim-goo {
transform-origin: 50% 50%;
animation: aimSpin 16s linear infinite;
}
.ai-orb .b1 {
animation: aimBlob1 3s cubic-bezier(0.7, 0, 0.3, 1) infinite;
}
.ai-orb .b2 {
animation: aimBlob2 3s cubic-bezier(0.7, 0, 0.3, 1) infinite;
}
.ai-orb .b3 {
animation: aimBlob3 3s cubic-bezier(0.7, 0, 0.3, 1) infinite;
}
.ai-orb .aim-wave {
transform-origin: 50% 50%;
opacity: 0;
animation: aimWave 3.6s ease-out infinite;
}
.ai-orb .lab {
font-size: 16.5px;
font-weight: 800;
letter-spacing: 0.04em;
color: var(--body);
}
.ai-orb .lab b {
color: var(--accent);
}
@keyframes aimSpin {
to {
transform: rotate(360deg);
}
}
@keyframes aimBlob1 {
0% {
transform: translate(0, -9.5px);
}
38% {
transform: translate(0, -10.5px);
}
52% {
transform: translate(0, -1px);
}
58% {
transform: translate(0, -1px);
}
70% {
transform: translate(0, -16px);
}
84% {
transform: translate(0, -8.5px);
}
100% {
transform: translate(0, -9.5px);
}
}
@keyframes aimBlob2 {
0% {
transform: translate(8.2px, 4.8px);
}
38% {
transform: translate(9.1px, 5.3px);
}
52% {
transform: translate(0.9px, 0.5px);
}
58% {
transform: translate(0.9px, 0.5px);
}
70% {
transform: translate(13.9px, 8px);
}
84% {
transform: translate(7.4px, 4.3px);
}
100% {
transform: translate(8.2px, 4.8px);
}
}
@keyframes aimBlob3 {
0% {
transform: translate(-8.2px, 4.8px);
}
38% {
transform: translate(-9.1px, 5.3px);
}
52% {
transform: translate(-0.9px, 0.5px);
}
58% {
transform: translate(-0.9px, 0.5px);
}
70% {
transform: translate(-13.9px, 8px);
}
84% {
transform: translate(-7.4px, 4.3px);
}
100% {
transform: translate(-8.2px, 4.8px);
}
}
@keyframes aimWave {
0%,
54% {
transform: scale(0.18);
opacity: 0;
}
60% {
opacity: 0.75;
}
100% {
transform: scale(1.9);
opacity: 0;
}
}
@keyframes aimBreath {
0%,
100% {
transform: scale(1);
}
50% {
transform: scale(1.04);
}
}
@media (max-width: 1080px) {
.gpcard {
grid-template-columns: 1fr;
}
.gpcard .pc-obj {
display: none;
}
}
@media (prefers-reduced-motion: reduce) {
.gbreath,
.gpcard .voc li,
.gpcard .opt-r.ok,
.gpcard .opt-r.ok .ck,
.gpcard .chart .bb,
.ai-orb .aimk,
.ai-orb .aim-goo,
.ai-orb .b1,
.ai-orb .b2,
.ai-orb .b3,
.ai-orb .aim-wave {
animation: none !important;
}
}
.gright .eyebrow {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 14px;
font-weight: 700;
color: var(--muted);
margin-bottom: 6px;
}
.gright .eyebrow svg {
width: 15px;
height: 15px;
}
.gright .cd {
font-size: 14.5px;
color: var(--muted);
margin: 0 0 22px;
}
.gright .stack {
max-width: 420px;
}
.crows {
display: flex;
flex-direction: column;
gap: 12px;
margin: 0 0 9vh;
}
.crow {
display: flex;
align-items: center;
gap: 16px;
text-align: left;
background: var(--bg);
border: 1.5px solid var(--line);
border-radius: var(--r-lg);
padding: 18px 20px;
cursor: pointer;
font-family: inherit;
width: 100%;
transition: 0.16s;
}
.crow:hover {
border-color: #c9d4e5;
box-shadow: var(--shadow);
transform: translateY(-1px);
}
.crow.primary {
border-color: var(--ink);
}
.crow .ic {
width: 44px;
height: 44px;
border-radius: 12px;
background: linear-gradient(155deg, #f7f9fc 0%, #e4ebf4 100%);
color: var(--accent);
display: grid;
place-items: center;
flex: none;
}
.crow .ic svg {
width: 22px;
height: 22px;
}
.crow .rt {
flex: 1;
min-width: 0;
}
.crow .rh {
display: flex;
align-items: center;
gap: 8px;
}
.crow .rt h3 {
margin: 0;
font-size: 18.5px;
font-weight: 700;
}
.crow .rt p {
margin: 3px 0 0;
font-size: 14.5px;
color: var(--muted);
}
.crow .badge-rec {
position: static;
font-size: 12.5px;
font-weight: 700;
color: #fff;
background: var(--point);
border-radius: 999px;
padding: 3px 9px;
}
.crow .go {
flex: none;
display: inline-flex;
align-items: center;
justify-content: center;
width: 48px;
height: 48px;
border-radius: 12px;
}
.crow .go.red {
background: var(--grad);
color: #fff;
box-shadow: var(--grad-sheen);
}
.crow .go.ghost {
background: var(--grad);
color: #fff;
border: 0;
box-shadow: var(--grad-sheen);
}
.crow .go svg {
width: 20px;
height: 20px;
}
@media (max-width: 860px) {
.gatep3 {
height: auto;
}
.gp-sticky {
position: static;
height: auto;
grid-template-columns: 1fr;
}
.gright {
display: none;
}
}
@media (max-width: 880px) {
.gate {
grid-template-columns: 1fr;
gap: 32px;
}
}
.choices {
display: flex;
flex-direction: column;
gap: 14px;
}
.choice {
position: relative;
text-align: left;
background: var(--bg);
border: 1.5px solid var(--line);
border-radius: var(--r-lg);
padding: 24px;
cursor: pointer;
transition: 0.16s;
font-family: inherit;
}
.tt-lab {
font-size: 14px;
font-weight: 800;
color: var(--muted);
margin: 0 0 12px;
letter-spacing: 0.01em;
}
.tt-sep {
display: flex;
align-items: center;
gap: 12px;
margin: 22px 0 14px;
color: var(--faint);
font-size: 14px;
font-weight: 600;
}
.tt-sep::before,
.tt-sep::after {
content: "";
flex: 1;
height: 1px;
background: var(--line);
}
.tt-wb {
display: block;
width: 100%;
border-color: var(--accent);
background: var(--accent-050);
}
.choice:hover {
border-color: #c9d4e5;
box-shadow: var(--shadow);
transform: translateY(-1px);
}
.choice .ic {
width: 46px;
height: 46px;
border-radius: 13px;
background: var(--accent-050);
color: var(--accent);
display: grid;
place-items: center;
margin-bottom: 14px;
}
.choice .ic svg {
width: 24px;
height: 24px;
}
.choice h3 {
margin: 0;
font-size: 20px;
font-weight: 700;
}
.choice p {
margin: 6px 0 16px;
font-size: 15px;
color: var(--muted);
}
.choice .go {
display: inline-flex;
align-items: center;
gap: 7px;
font-size: 16px;
font-weight: 700;
border-radius: var(--r-sm);
padding: 11px 18px;
}
.choice .go.red {
background: var(--grad);
color: #fff;
box-shadow: var(--grad-sheen);
}
.choice .go.ghost {
background: var(--grad);
color: #fff;
border: 0;
box-shadow: var(--grad-sheen);
}
.choice .go svg {
width: 15px;
height: 15px;
}
.choice .ot-eg {
display: inline-block;
font-size: 13.5px;
font-weight: 600;
color: var(--accent);
background: var(--accent-050);
border: 1px solid #c9d4e5;
border-radius: 7px;
padding: 4px 9px;
margin: 0 0 14px;
}
.choice .ot-obj {
margin: 0 0 16px;
border-radius: 13px;
padding: 16px;
background:
radial-gradient(72% 84% at 20% 18%, rgba(34, 184, 196, 0.16), transparent 70%),
radial-gradient(70% 82% at 82% 78%, rgba(40, 86, 150, 0.14), transparent 72%),
linear-gradient(150deg, #f5f8fd 0%, #eaf1f7 60%, #e6f4f5 100%);
border: 1px solid rgba(23, 46, 85, 0.06);
overflow: hidden;
}
.choice .ot-obj .oc {
max-width: none;
padding: 12px 14px;
}
.choice .ot-obj .swap {
display: grid;
overflow: hidden;
}
.choice .ot-obj .swap > .oc {
grid-area: 1/1;
will-change: transform;
}
.choice .ot-obj .swap > .oc:nth-child(1) {
animation: ocUp 9s cubic-bezier(0.6, 0, 0.2, 1) infinite;
}
.choice .ot-obj .swap > .oc:nth-child(2) {
animation: ocDn 9s cubic-bezier(0.6, 0, 0.2, 1) infinite;
}
@keyframes ocUp {
0%,
42% {
transform: translateY(0);
}
50%,
92% {
transform: translateY(-115%);
}
100% {
transform: translateY(0);
}
}
@keyframes ocDn {
0%,
42% {
transform: translateY(115%);
}
50%,
92% {
transform: translateY(0);
}
100% {
transform: translateY(115%);
}
}
.choice .ot-obj .ans-ib {
color: var(--accent);
font-weight: 700;
border-bottom: 1.5px solid var(--point);
padding: 0 3px;
}
.choice .ot-obj .fillw {
display: inline-block;
min-width: 36px;
text-align: center;
border-bottom: 1.5px solid var(--point);
color: var(--accent);
font-weight: 700;
border-radius: 3px 3px 0 0;
padding: 0 2px;
animation: drillFill 5.5s ease-in-out infinite;
}
.choice .ot-obj .voc li:nth-child(1) .fillw {
animation-delay: 0.2s;
}
.choice .ot-obj .voc li:nth-child(2) .fillw {
animation-delay: 1s;
}
.choice .ot-obj .voc li:nth-child(3) .fillw {
animation-delay: 1.8s;
}
@keyframes drillFill {
0%,
14% {
color: transparent;
background: transparent;
}
28%,
90% {
color: var(--accent);
background: var(--point-050);
}
100% {
color: transparent;
background: transparent;
}
}
@media (prefers-reduced-motion: reduce) {
.choice .ot-obj .opt-r.ok,
.choice .ot-obj .opt-r.ok .ck,
.choice .ot-obj .swap > .oc,
.choice .ot-obj .fillw {
animation: none !important;
}
.choice .ot-obj .swap > .oc:nth-child(2) {
opacity: 0;
}
.choice .ot-obj .fillw {
color: var(--accent) !important;
}
}
.badge-rec {
position: absolute;
top: 22px;
right: 22px;
font-size: 12.5px;
font-weight: 700;
color: var(--accent);
background: var(--accent-050);
border-radius: 999px;
padding: 4px 11px;
}
.skip {
display: flex;
align-items: center;
gap: 8px;
margin-top: 18px;
font-size: 14.5px;
color: var(--faint);
}
.skip input {
width: 16px;
height: 16px;
accent-color: var(--accent);
}
.cura {
background: var(--bg-tint);
border: 1px solid var(--line);
border-radius: var(--r-lg);
padding: 22px 20px;
}
.cura .eyebrow {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 13.5px;
font-weight: 700;
color: var(--muted);
margin-bottom: 8px;
}
.cura .eyebrow svg {
width: 15px;
height: 15px;
}
.cura h4 {
font-size: 17px;
font-weight: 700;
margin: 0 0 4px;
}
.cura .cd {
font-size: 14.5px;
color: var(--muted);
margin: 0 0 16px;
}
.cura .footnote {
display: flex;
align-items: center;
gap: 6px;
font-size: 13.5px;
color: var(--faint);
margin: 14px 0 0;
}
.cura .footnote svg {
width: 14px;
height: 14px;
}
.exam {
display: flex;
gap: 13px;
align-items: center;
background: #fff;
border: 1px solid var(--line);
border-radius: var(--r-md);
padding: 15px;
margin-bottom: 11px;
}
.stack {
position: relative;
margin: 4px 4px 0;
}
.stack .bk {
position: absolute;
inset: 0;
background: #fff;
border: 1px solid var(--line);
border-radius: 10px;
box-shadow: var(--shadow);
}
.stack .b1 {
transform: rotate(2.2deg) translate(6px, 5px);
}
.stack .b2 {
transform: rotate(-3deg) translate(-5px, 9px);
opacity: 0.7;
}
.stack .paper {
position: relative;
background: #fff;
border: 1px solid var(--line);
border-radius: 10px;
box-shadow:
0 1px 2px rgba(29, 23, 23, 0.04),
0 24px 44px -28px rgba(29, 23, 23, 0.3);
padding: 20px 22px;
}
.stack .stamp {
position: absolute;
top: 14px;
right: 14px;
display: inline-flex;
align-items: center;
gap: 4px;
font-size: 12.5px;
font-weight: 800;
color: var(--point);
border: 1.5px solid var(--point);
border-radius: 8px;
padding: 4px 8px;
transform: rotate(-7deg);
}
.stack .stamp svg {
width: 13px;
height: 13px;
}
.stack .ph-title {
font-family: var(--display);
font-size: 18px;
font-weight: 800;
text-align: center;
letter-spacing: -0.02em;
}
.stack .ph-meta {
font-size: 12px;
color: var(--faint);
text-align: center;
margin-top: 2px;
padding-bottom: 9px;
border-bottom: 1.5px solid var(--ink);
}
.stack .ph-name {
display: flex;
gap: 18px;
font-size: 12px;
color: var(--muted);
margin: 9px 0 12px;
}
.stack .exq {
font-size: 13px;
color: var(--ink);
margin-bottom: 10px;
line-height: 1.55;
}
.stack .exq b {
margin-right: 3px;
}
.stack .exq i {
color: var(--body);
}
.stack .exq .ch {
color: var(--muted);
margin-top: 2px;
}
.exam .pg {
width: 46px;
height: 58px;
border-radius: 6px;
background: var(--bg-tint);
border: 1px solid var(--line);
flex: none;
display: flex;
flex-direction: column;
gap: 4px;
padding: 8px 6px;
}
.exam .pg span {
height: 3px;
border-radius: 2px;
background: #dce3ee;
}
.exam .pg span:first-child {
width: 70%;
background: #cad6e6;
}
.exam .eb h5 {
margin: 0;
font-size: 16.5px;
font-weight: 700;
}
.exam .eb p {
margin: 4px 0 0;
font-size: 13.5px;
color: var(--muted);
display: flex;
gap: 8px;
align-items: center;
}
.exam .eb .gr {
font-size: 12.5px;
font-weight: 700;
color: var(--muted);
background: var(--bg-tint);
border: 1px solid var(--line);
border-radius: 6px;
padding: 1px 7px;
}
.grid2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
@media (max-width: 760px) {
.grid2 {
grid-template-columns: 1fr;
}
}
.pcard {
text-align: left;
background: var(--bg);
border: 1.5px solid var(--line);
border-radius: var(--r-lg);
padding: 22px;
cursor: pointer;
transition: 0.16s;
font-family: inherit;
position: relative;
}
.pcard:hover {
border-color: #c9d4e5;
box-shadow: var(--shadow);
}
.pcard.sel {
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-050);
}
.pcard .ic {
width: 44px;
height: 44px;
border-radius: 12px;
background: var(--accent-050);
color: var(--accent);
display: grid;
place-items: center;
margin-bottom: 13px;
}
.pcard .ic svg {
width: 23px;
height: 23px;
}
.pcard h3 {
margin: 0;
font-size: 18.5px;
font-weight: 700;
}
.pcard p {
margin: 6px 0 13px;
font-size: 14.5px;
color: var(--muted);
}
.pmeta {
display: flex;
gap: 14px;
font-size: 13.5px;
color: var(--muted);
}
.check {
position: absolute;
top: 20px;
right: 20px;
width: 24px;
height: 24px;
border-radius: 50%;
background: var(--accent);
color: #fff;
display: none;
place-items: center;
}
.pcard.sel .check,
.gcard.sel .check {
display: grid;
}
.check svg {
width: 15px;
height: 15px;
}
.grid3 {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
}
@media (max-width: 680px) {
.grid3 {
grid-template-columns: repeat(2, 1fr);
}
}
.gcard {
position: relative;
text-align: center;
background: var(--bg);
border: 1.5px solid var(--line);
border-radius: var(--r-lg);
padding: 26px 16px;
cursor: pointer;
transition: 0.16s;
font-family: inherit;
}
.gcard:hover {
border-color: #c9d4e5;
box-shadow: var(--shadow);
}
.gcard.sel {
border-color: var(--accent);
background: var(--accent-050);
}
.gcard b {
font-family: var(--display);
font-size: 27px;
font-weight: 800;
}
.gcard span {
display: block;
font-size: 14px;
color: var(--muted);
margin-top: 6px;
}
.toggle {
display: inline-flex;
background: var(--bg-tint);
border: 1px solid var(--line);
border-radius: 999px;
padding: 4px;
margin-bottom: 24px;
}
.toggle button {
font-family: inherit;
font-size: 16px;
font-weight: 600;
color: var(--muted);
background: none;
border: 0;
border-radius: 999px;
padding: 9px 20px;
cursor: pointer;
}
.toggle button.on {
background: #fff;
color: var(--ink);
box-shadow: 0 1px 3px rgba(29, 23, 23, 0.1);
}
.rangehead {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
.rangehead .cnt {
font-size: 14px;
font-weight: 700;
color: var(--accent);
background: var(--accent-050);
border-radius: 999px;
padding: 5px 13px;
}
.chips {
display: flex;
flex-wrap: wrap;
gap: 10px;
max-width: 640px;
}
.chip {
font-family: inherit;
font-size: 16.5px;
font-weight: 600;
color: var(--body);
background: var(--bg);
border: 1.5px solid var(--line);
border-radius: 999px;
padding: 11px 19px;
cursor: pointer;
transition: 0.15s;
}
.chip:hover {
border-color: #c9d4e5;
}
.chip.sel {
border-color: var(--accent);
background: var(--accent-050);
color: var(--accent-600);
}
.field {
margin-bottom: 16px;
max-width: 460px;
}
.field label {
display: block;
font-size: 14.5px;
font-weight: 600;
color: var(--muted);
margin-bottom: 8px;
}
.field select {
appearance: none;
width: 100%;
height: 52px;
padding: 0 16px;
font-family: inherit;
font-size: 17px;
color: var(--ink);
background: var(--bg)
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%236C6A64' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>")
no-repeat right 14px center;
border: 1.5px solid var(--line);
border-radius: var(--r-md);
cursor: pointer;
}
.availnote {
font-size: 14.5px;
color: var(--faint);
margin-top: 14px;
}
.compose {
max-width: 620px;
}
.lbl {
font-size: 14.5px;
font-weight: 700;
color: var(--muted);
margin: 24px 0 10px;
}
.lbl:first-child {
margin-top: 0;
}
.trow {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 0;
border-bottom: 1px solid var(--line-soft);
}
.trow .tl {
font-size: 17px;
font-weight: 600;
}
.trow .tl .av {
font-size: 13.5px;
color: var(--faint);
font-weight: 500;
margin-left: 8px;
}
.stepper {
display: inline-flex;
align-items: center;
border: 1.5px solid var(--line);
border-radius: 10px;
overflow: hidden;
}
.stepper button {
width: 40px;
height: 42px;
border: 0;
background: var(--bg);
color: var(--ink);
font-size: 21.5px;
cursor: pointer;
}
.stepper button:hover {
background: var(--bg-tint);
}
.stepper .v {
min-width: 48px;
text-align: center;
font-size: 18px;
font-weight: 700;
}
.opts {
display: flex;
flex-wrap: wrap;
gap: 9px;
}
.totalbox {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 24px;
padding: 18px 20px;
background: var(--bg-tint);
border: 1px solid var(--line);
border-radius: var(--r-md);
}
.totalbox .tt {
font-size: 16px;
color: var(--muted);
}
.totalbox .tn {
font-family: var(--display);
font-size: 29px;
font-weight: 800;
}
.totalbox .tn small {
font-size: 16px;
font-weight: 700;
margin-left: 3px;
}
.conf {
display: grid;
grid-template-columns: 1fr 0.85fr;
gap: 40px;
align-items: start;
}
@media (max-width: 880px) {
.conf {
grid-template-columns: 1fr;
}
}
.srow {
display: flex;
align-items: center;
gap: 14px;
border: 1px solid var(--line);
border-radius: var(--r-md);
padding: 16px 18px;
margin-bottom: 11px;
}
.srow .si {
width: 38px;
height: 38px;
border-radius: 10px;
background: var(--bg-tint);
color: var(--muted);
display: grid;
place-items: center;
flex: none;
}
.srow .si svg {
width: 19px;
height: 19px;
}
.srow .sk {
font-size: 13.5px;
color: var(--faint);
}
.srow .sv {
font-size: 17px;
font-weight: 700;
margin-top: 2px;
}
.srow .edit {
margin-left: auto;
font-size: 14.5px;
font-weight: 600;
color: var(--muted);
cursor: pointer;
}
.spec {
border: 1px solid var(--line);
border-radius: var(--r-lg);
overflow: hidden;
}
.spec .sphead {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 18px;
border-bottom: 1px solid var(--line-soft);
}
.spec .sphead b {
font-size: 17px;
}
.spec .sphead .a4 {
font-size: 13px;
color: var(--muted);
background: var(--bg-tint);
border: 1px solid var(--line);
border-radius: 6px;
padding: 2px 8px;
}
.spec .spbody {
padding: 18px;
}
.stk-bar {
display: flex;
height: 10px;
border-radius: 6px;
overflow: hidden;
margin-bottom: 14px;
}
.stk-seg {
height: 100%;
transition: width 0.3s ease;
}
.stk-obj {
background: #4a7fbf;
}
.stk-sub {
background: #2a9d8f;
}
.stk-drl {
background: #e76f51;
}
.stk-dh {
background: #d9534f;
}
.stk-dm {
background: #e8a33d;
}
.stk-dl {
background: #5ba66b;
}
.dcol-wrap {
display: flex;
align-items: flex-end;
justify-content: space-around;
gap: 18px;
padding: 6px 8px 0;
margin-bottom: 14px;
}
.dcol {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
}
.dcol-cnt {
font-size: 13.5px;
font-weight: 700;
color: var(--ink);
margin-bottom: 6px;
}
.dcol-track {
width: 100%;
max-width: 64px;
height: 110px;
display: flex;
align-items: flex-end;
}
.dcol-fill {
width: 100%;
border-radius: 6px 6px 0 0;
transition: height 0.3s ease;
min-height: 3px;
}
.dcol-lbl {
font-size: 14px;
font-weight: 700;
color: var(--muted);
margin-top: 8px;
}
.stk-lgd {
display: flex;
flex-direction: column;
gap: 7px;
margin-bottom: 14px;
}
.stk-item {
display: flex;
align-items: center;
gap: 8px;
font-size: 14px;
}
.stk-dot {
width: 8px;
height: 8px;
border-radius: 50%;
flex-shrink: 0;
}
.stk-lbl {
color: var(--muted);
width: 42px;
}
.stk-cnt {
font-weight: 700;
margin-left: auto;
}
.stk-pct {
color: var(--muted);
font-size: 13.5px;
width: 36px;
text-align: right;
}
.difline {
display: flex;
align-items: center;
gap: 10px;
font-size: 14.5px;
margin-top: 6px;
}
.difline .dl {
width: 48px;
color: var(--muted);
}
.difline .dv {
font-weight: 700;
}
.done {
text-align: center;
max-width: 560px;
margin: 20px auto 0;
}
.done .db {
width: 64px;
height: 64px;
border-radius: 50%;
background: var(--point-050);
color: var(--point);
display: grid;
place-items: center;
margin: 0 auto 22px;
}
.done .db svg {
width: 32px;
height: 32px;
}
.done .acts {
display: flex;
gap: 10px;
justify-content: center;
margin-top: 26px;
flex-wrap: wrap;
}
.footbar {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(to top, #fff 70%, rgba(255, 255, 255, 0));
}
.footbar-in {
max-width: 1080px;
margin: 0 auto;
padding: 18px 32px 26px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
}
.footbar .note {
font-size: 14.5px;
color: var(--faint);
}
.back {
font-size: 16px;
font-weight: 600;
color: var(--muted);
background: none;
border: 0;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 6px;
}
.back svg {
width: 16px;
height: 16px;
}
.back[hidden] {
visibility: hidden;
}
.cta {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: inherit;
font-size: 17.5px;
font-weight: 700;
color: #fff;
background: var(--grad);
box-shadow: var(--grad-sheen);
border: 0;
border-radius: var(--r-md);
padding: 14px 28px;
cursor: pointer;
transition: 0.16s;
}
.cta:hover {
filter: brightness(1.08);
}
.cta svg {
width: 17px;
height: 17px;
}
.btn {
display: inline-flex;
align-items: center;
gap: 7px;
font-family: inherit;
font-size: 16.5px;
font-weight: 700;
border-radius: 11px;
padding: 13px 20px;
cursor: pointer;
border: 1.5px solid var(--line);
background: #fff;
color: var(--ink);
}
.btn.red {
background: var(--grad);
color: #fff;
border-color: transparent;
box-shadow: var(--grad-sheen);
}
.btn.red:hover {
filter: brightness(1.08);
}
.btn svg {
width: 16px;
height: 16px;
}
.gright .stack {
cursor: pointer;
transition: 0.14s;
}
.gright .stack:hover .paper {
box-shadow: 0 2px 18px rgba(29, 23, 23, 0.18);
transform: translateY(-2px);
}
.gright .stack .paper {
padding: 11px 13px;
}
.gright .stack .ph-title {
font-size: 13.5px;
}
.gright .stack .ph-meta {
font-size: 9.5px;
padding-bottom: 6px;
}
.gright .stack .ph-name {
font-size: 9.5px;
margin: 5px 0 7px;
}
.gright .stack .exq {
font-size: 10px;
margin-bottom: 5px;
line-height: 1.45;
}
.bk-browser {
border: 1.5px solid var(--line);
border-radius: var(--r-lg);
overflow: hidden;
background: #fff;
}
.bk-head {
padding: 14px 18px 12px;
}
.bk-sbox {
display: flex;
align-items: center;
gap: 8px;
border: 1.5px solid var(--line);
border-radius: var(--r-md);
padding: 0 12px;
background: #fff;
margin-bottom: 10px;
}
.bk-sbox input {
flex: 1;
border: 0;
outline: none;
font-family: inherit;
font-size: 15px;
height: 38px;
background: transparent;
color: var(--ink);
}
.bk-sbox svg {
width: 15px;
height: 15px;
color: var(--faint);
}
.bk-frow {
display: flex;
align-items: center;
gap: 7px;
flex-wrap: wrap;
}
.bk-flbl {
font-size: 13.5px;
font-weight: 700;
color: var(--muted);
white-space: nowrap;
}
.bk-fchip {
font-size: 13.5px;
font-weight: 600;
color: var(--muted);
background: #fff;
border: 1.5px solid var(--line);
border-radius: 999px;
padding: 4px 11px;
cursor: pointer;
font-family: inherit;
}
.bk-fchip.on {
border-color: var(--accent);
background: var(--accent);
color: #fff;
}
.bk-fdiv {
width: 1px;
height: 16px;
background: var(--line);
margin: 0 3px;
flex: none;
}
.bk-body {
display: grid;
grid-template-columns: 260px 1fr;
border-top: 1px solid var(--line);
height: 380px;
}
@media (max-width: 760px) {
.bk-body {
grid-template-columns: 1fr;
height: auto;
}
}
.bk-books {
overflow-y: auto;
border-right: 1px solid var(--line);
padding: 10px;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 7px;
align-content: start;
}
.bk-book {
display: flex;
flex-direction: column;
align-items: center;
gap: 5px;
padding: 7px 5px;
border-radius: var(--r-sm);
cursor: pointer;
border: 1.5px solid transparent;
background: none;
width: 100%;
font-family: inherit;
transition: 0.12s;
}
.bk-book:hover {
background: var(--bg-tint);
}
.bk-book.on {
border-color: var(--accent);
background: var(--accent-050);
}
.bk-thumb {
width: 62px;
height: 84px;
border-radius: 5px;
flex: none;
overflow: hidden;
border: 1px solid var(--line);
box-shadow: 0 4px 10px -6px rgba(23, 46, 85, 0.4);
}
.bk-btitle {
font-size: 12px;
font-weight: 700;
color: var(--ink);
text-align: center;
line-height: 1.3;
word-break: keep-all;
}
.bk-blevel {
font-size: 10.5px;
color: var(--faint);
}
.bk-units {
overflow-y: auto;
padding: 14px 16px;
}
.bk-ulbl-row {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
}
.bk-ulbl {
font-size: 13.5px;
font-weight: 700;
color: var(--muted);
}
.bk-selall {
display: flex;
gap: 10px;
}
.bk-selall button {
font-size: 13.5px;
font-weight: 700;
color: var(--accent);
background: none;
border: 0;
cursor: pointer;
padding: 0;
font-family: inherit;
}
.bk-selall button:hover {
text-decoration: underline;
}
.bk-chapter {
display: flex;
align-items: center;
gap: 9px;
padding: 10px 13px;
border: 1.5px solid var(--line);
border-radius: var(--r-sm);
margin-bottom: 4px;
cursor: pointer;
background: #fff;
width: 100%;
text-align: left;
font-family: inherit;
transition: 0.12s;
}
.bk-chapter:hover {
border-color: #c9d4e5;
}
.bk-chapter.on {
border-color: var(--accent);
background: var(--accent-050);
}
.bk-chapter .ck {
width: 17px;
height: 17px;
border-radius: 5px;
border: 1.5px solid var(--line);
flex: none;
display: grid;
place-items: center;
color: #fff;
}
.bk-chapter.on .ck {
background: var(--accent);
border-color: var(--accent);
}
.bk-chapter-name {
flex: none;
font-size: 14.5px;
font-weight: 700;
color: var(--ink);
}
.bk-chapter.on .bk-chapter-name {
color: var(--accent-600);
}
.bk-chapter-title {
flex: 1;
font-size: 14px;
font-weight: 500;
color: var(--faint);
}
.bk-ch-block {
margin-bottom: 7px;
}
.bk-unit {
display: flex;
align-items: center;
gap: 9px;
padding: 9px 13px;
border: 1.5px solid var(--line);
border-radius: var(--r-sm);
margin-bottom: 5px;
cursor: pointer;
background: #fff;
width: 100%;
text-align: left;
font-family: inherit;
transition: 0.12s;
}
.bk-unit:hover {
border-color: #c9d4e5;
}
.bk-unit.on {
border-color: var(--accent);
background: var(--accent-050);
}
.bk-unit .ck {
width: 17px;
height: 17px;
border-radius: 5px;
border: 1.5px solid var(--line);
flex: none;
display: grid;
place-items: center;
color: #fff;
}
.bk-unit.on .ck {
background: var(--accent);
border-color: var(--accent);
}
.bk-unit-name {
flex: none;
font-size: 14.5px;
font-weight: 600;
color: var(--ink);
}
.bk-unit.on .bk-unit-name {
color: var(--accent-600);
}
.bk-unit-sub {
margin-left: 18px;
width: calc(100% - 18px);
}
.bk-unit-sub .bk-unit-name {
font-size: 14px;
font-weight: 500;
}
.bk-unit-title {
flex: 1;
font-size: 14px;
font-weight: 500;
color: var(--faint);
}
.bk-foot {
padding: 11px 16px;
border-top: 1px solid var(--line);
display: flex;
align-items: center;
justify-content: space-between;
background: var(--bg-tint);
}
.bk-sel-summary {
font-size: 14px;
color: var(--muted);
}
.bk-sel-summary b {
color: var(--ink);
}
.exam-overlay {
position: fixed;
top: 60px;
left: 50%;
right: 0;
bottom: 0;
z-index: 200;
background: rgba(0, 0, 0, 0.22);
}
.exam-panel {
position: fixed;
top: calc(60px + 12px);
right: 12px;
bottom: 12px;
width: calc(50% - 24px);
min-width: 320px;
background: #fff;
border-radius: 16px;
border: 1px solid var(--line);
display: flex;
flex-direction: column;
box-shadow: 0 8px 40px rgba(0, 0, 0, 0.18);
}
@media (max-width: 860px) {
.exam-panel {
width: calc(100% - 24px);
min-width: 0;
left: 12px;
top: calc(60px + 12px);
}
}
.exam-panel-hd {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 22px;
border-bottom: 1px solid var(--line);
flex: none;
}
.exam-panel-title {
font-weight: 800;
font-size: 16.5px;
margin-bottom: 1px;
}
.exam-panel-sub {
font-size: 12.5px;
color: var(--muted);
}
.exam-close-btn {
width: 34px;
height: 34px;
border: 1.5px solid var(--line);
background: var(--bg);
border-radius: 8px;
cursor: pointer;
font-size: 17px;
display: grid;
place-items: center;
color: var(--muted);
transition: 0.12s;
font-family: inherit;
}
.exam-close-btn:hover {
background: var(--bg-tint);
}
.exam-panel-body {
flex: 1;
overflow-y: auto;
padding: 20px;
background: var(--bg-tint);
}
.exam-page-wrap {
background: #fff;
border: 1px solid var(--line);
border-radius: 10px;
padding: 26px 30px;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
}
.ep-header {
text-align: center;
padding-bottom: 11px;
border-bottom: 2px solid #1a1a1a;
margin-bottom: 15px;
}
.ep-title {
font-family: var(--display);
font-size: 18.5px;
font-weight: 800;
letter-spacing: -0.02em;
}
.ep-sub {
font-size: 11px;
color: var(--muted);
margin-top: 3px;
}
.ep-info {
display: flex;
gap: 14px;
font-size: 12px;
margin-bottom: 16px;
flex-wrap: wrap;
color: var(--body);
}
.ep-section {
font-size: 12.5px;
font-weight: 700;
margin: 13px 0 7px;
color: var(--body);
}
.ep-q {
margin-bottom: 13px;
}
.ep-qtext {
font-size: 13px;
line-height: 1.65;
}
.ep-choices {
font-size: 12.5px;
color: var(--body);
margin-top: 4px;
padding-left: 16px;
line-height: 1.85;
}
.ep-choices-v {
font-size: 12.5px;
color: var(--body);
margin-top: 5px;
padding-left: 16px;
line-height: 2.1;
}
.exam-panel-ft {
display: flex;
align-items: center;
justify-content: space-between;
padding: 13px 22px;
border-top: 1px solid var(--line);
background: #fff;
flex: none;
}
.exam-nav {
font-family: inherit;
font-size: 14.5px;
font-weight: 700;
color: var(--ink);
background: var(--bg-tint);
border: 1.5px solid var(--line);
border-radius: 10px;
padding: 8px 18px;
cursor: pointer;
transition: 0.12s;
}
.exam-nav:hover:not(:disabled) {
background: var(--line-soft);
}
.exam-nav:disabled {
opacity: 0.3;
cursor: default;
}
.exam-pg-ind {
font-size: 14.5px;
font-weight: 700;
color: var(--muted);
}
.pq-hd {
background: var(--grad);
color: #fff;
border-radius: 16px;
padding: 16px 18px;
margin-bottom: 16px;
box-shadow: var(--grad-sheen);
}
.pq-hd-bar {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 11px;
padding-bottom: 10px;
border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}
.pq-hd-badge {
font-size: var(--text-micro);
font-weight: 800;
letter-spacing: 0.02em;
background: rgba(255, 255, 255, 0.22);
padding: 4px 11px;
border-radius: 999px;
}
.pq-hd-meta {
font-size: var(--text-micro);
font-weight: 700;
opacity: 0.92;
white-space: nowrap;
}
.pq-hd-title {
font-size: var(--text-emphasis);
font-weight: 800;
line-height: 1.3;
letter-spacing: -0.01em;
word-break: keep-all;
}
.pq-hd-unit {
font-size: var(--text-small);
font-weight: 700;
line-height: 1.45;
opacity: 0.95;
word-break: keep-all;
margin-top: 5px;
}
:root {
--text-micro: 0.844rem;
--text-small: 0.984rem;
--text-body: 1.125rem;
--text-emphasis: 1.266rem;
--text-section: 1.406rem;
--text-title: 1.688rem;
--text-page: 2.25rem;
--line-ui: 1.4;
--line-body: 1.55;
--sans:
"Pretendard Variable", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", Arial, sans-serif;
--display:
"Pretendard Variable", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", Arial, sans-serif;
}
html {
font-size: 100%;
}
.btn {
font-size: var(--text-body);
line-height: var(--line-ui);
min-height: 44px;
}
.cta {
font-size: var(--text-body);
line-height: var(--line-ui);
min-height: 44px;
}
.field select,
.field input[type="text"] {
font-size: var(--text-body);
min-height: 44px;
}
.field label {
font-size: var(--text-small);
}
.chip {
font-size: var(--text-small);
min-height: 40px;
}
.toggle button {
font-size: var(--text-small);
min-height: 40px;
}
.bk-fchip,
.bm-fchip {
font-size: var(--text-small);
min-height: 34px;
line-height: var(--line-ui);
}
.bk-sbox input,
.bm-sbox input {
font-size: var(--text-body);
min-height: 40px;
}
.bk-flbl,
.bm-flbl {
font-size: var(--text-small);
}
.badge-rec,
.badge,
.new-badge,
.promo-badge {
font-size: var(--text-micro);
}
.qsub {
line-height: var(--line-body);
}
button,
select,
input,
textarea {
font-family: var(--sans);
}
.dt-zoom {
margin-left: auto;
display: inline-flex;
align-items: center;
gap: 4px;
}
.dt-zoom button {
font-family: inherit;
font-size: var(--text-small);
font-weight: 700;
color: var(--muted, #6b7280);
background: #fff;
border: 1px solid var(--line, #e5e7eb);
border-radius: 8px;
padding: 6px 10px;
min-height: 32px;
cursor: pointer;
line-height: 1.2;
}
.dt-zoom button:hover {
border-color: var(--accent, #2f6df0);
color: var(--accent, #2f6df0);
}
.dt-zoom button.on {
background: var(--accent, #2f6df0);
color: #fff;
border-color: var(--accent, #2f6df0);
}
@media print {
.dt-zoom {
display: none !important;
}
}
body.qqg {
min-height: 100vh;
margin: 0;
background: var(--bg-tint);
color: var(--body);
-webkit-font-smoothing: antialiased;
}
.qq-scr {
max-width: 430px;
margin: 0 auto;
padding: calc(15px + env(safe-area-inset-top)) 15px calc(28px + env(safe-area-inset-bottom));
}
.qq-hd {
display: flex;
align-items: stretch;
gap: 16px;
background: var(--grad);
color: #fff;
border-radius: 16px;
padding: 18px;
margin-bottom: 16px;
box-shadow:
0 10px 22px -12px rgba(19, 40, 74, 0.55),
0 1px 0 rgba(255, 255, 255, 0.12) inset;
}
.qq-cover {
width: 92px;
height: 122px;
flex: none;
border-radius: 8px;
overflow: hidden;
border: 1px solid rgba(255, 255, 255, 0.35);
box-shadow: 0 10px 22px -10px rgba(0, 0, 0, 0.55);
}
.qq-cover img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.qq-cover-ph {
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 8px;
}
.qq-cover-ph span {
color: #fff;
font-size: var(--text-micro);
font-weight: 800;
line-height: 1.4;
word-break: keep-all;
}
.qq-hd-tx {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
align-items: flex-start;
}
.qq-hd-badge {
flex: none;
font-size: var(--text-micro);
line-height: var(--line-ui);
font-weight: 800;
letter-spacing: 0.03em;
background: rgba(255, 255, 255, 0.2);
padding: 3px 10px;
border-radius: 999px;
}
.qq-hd-title {
font-size: var(--text-section);
font-weight: 800;
line-height: 1.28;
letter-spacing: -0.01em;
margin: auto 0;
word-break: keep-all;
}
.qq-list {
}
.qq-ch {
border: 1px solid var(--line);
border-radius: 14px;
background: #fff;
margin-bottom: 10px;
overflow: hidden;
box-shadow: 0 6px 14px -12px rgba(23, 46, 85, 0.4);
}
.qq-ch-hd {
display: flex;
align-items: center;
gap: 9px;
width: 100%;
padding: 14px 15px;
background: none;
border: 0;
cursor: pointer;
font-family: inherit;
text-align: left;
}
.qq-ch-no {
flex: none;
font-size: var(--text-body);
line-height: var(--line-ui);
font-weight: 800;
color: var(--accent);
white-space: nowrap;
}
.qq-ch-tt {
flex: 1;
min-width: 0;
font-size: var(--text-body);
line-height: var(--line-ui);
font-weight: 700;
color: var(--ink);
word-break: keep-all;
}
.qq-chev {
flex: none;
width: 17px;
height: 17px;
color: var(--muted);
transition: transform 0.18s;
}
.qq-ch.open .qq-chev {
transform: rotate(180deg);
}
.qq-ch:not(:has(.qq-ch-tt)) .qq-ch-no {
flex: 1;
}
.qq-units {
display: none;
padding: 2px 10px 10px;
}
.qq-ch.open .qq-units {
display: block;
}
.qq-ch.open {
border-color: #c9d4e5;
box-shadow: 0 8px 20px -14px rgba(23, 46, 85, 0.35);
}
.qq-unit {
padding: 12px 12px 11px;
margin-bottom: 8px;
background: var(--bg-tint);
border: 1.5px solid transparent;
border-radius: 11px;
}
.qq-unit:last-child {
margin-bottom: 0;
}
.qq-unit-hd {
display: flex;
align-items: flex-start;
gap: 10px;
}
.qq-unit-tx {
flex: 1;
min-width: 0;
display: flex;
align-items: baseline;
gap: 8px;
}
.qq-unit-tx b {
flex: none;
font-size: var(--text-body);
line-height: var(--line-ui);
font-weight: 800;
color: var(--ink);
}
.qq-unit-tx i {
flex: 1;
min-width: 0;
font-style: normal;
font-size: var(--text-small);
line-height: 1.5;
font-weight: 500;
color: var(--body);
white-space: normal;
overflow: visible;
word-break: keep-all;
}
.qq-acts {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 6px;
margin-top: 11px;
}
.qq-act {
box-sizing: border-box;
width: 100%;
height: 48px;
padding: 0 10px;
display: inline-flex;
align-items: center;
justify-content: center;
font-family: inherit;
font-size: var(--text-small);
line-height: 1;
font-weight: 700;
color: var(--accent);
background: #fff;
border: 1.5px solid #c9d4e5;
border-radius: 9px;
cursor: pointer;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
transition:
background-color 0.14s,
border-color 0.14s,
color 0.14s;
}
.qq-act:hover {
border-color: var(--accent);
background: var(--accent-050);
}
.qq-act:active {
background: #dfe6f1;
}
.qq-act:focus-visible {
border-radius: 9px;
}
.qq-act.primary {
color: #fff;
background: var(--accent);
border-color: var(--accent);
}
.qq-act.primary:hover {
background: var(--accent-600);
border-color: var(--accent-600);
}
.qq-act.is-pressed {
color: var(--point-600);
background: var(--point-050);
border-color: var(--point);
}
.qq-ch-solo {
padding: 14px 15px;
}
.qq-ch-solo .qq-acts {
margin-top: 12px;
}
.qq-toast {
position: fixed;
left: 0;
right: 0;
bottom: calc(24px + env(safe-area-inset-bottom));
z-index: 90;
width: max-content;
max-width: calc(100% - 32px);
margin: 0 auto;
font-size: var(--text-small);
line-height: 1.45;
font-weight: 700;
color: #fff;
background: rgba(19, 40, 74, 0.95);
border-radius: 10px;
padding: 11px 16px;
overflow-wrap: anywhere;
opacity: 0;
pointer-events: none;
transform: translateY(10px);
transition:
opacity 0.18s,
transform 0.18s;
}
.qq-toast.on {
opacity: 1;
transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
.qq-toast {
transition: none;
}
}
.qq-modal-lb {
font-size: var(--text-micro);
font-weight: 800;
letter-spacing: 0.04em;
color: var(--accent);
margin: 0 0 7px;
}
.qq-modal-lbrow {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-bottom: 7px;
}
.qq-modal-lbrow .qq-modal-lb {
margin: 0;
}
.qq-copy {
font-family: inherit;
font-size: var(--text-micro);
font-weight: 700;
color: var(--accent);
background: var(--accent-050);
border: 1px solid #c9d4e5;
border-radius: 8px;
padding: 5px 12px;
cursor: pointer;
}
.qq-copy:hover {
background: var(--accent);
border-color: var(--accent);
color: #fff;
}
.qq-copy.is-pressed {
color: var(--point-600);
background: var(--point-050);
border-color: var(--point);
}
.qq-modal-tx {
font-family: inherit;
font-size: var(--text-small);
line-height: 1.6;
color: var(--ink);
background: var(--bg-tint);
border: 1px solid var(--line);
border-radius: 11px;
padding: 13px 14px;
margin: 0 0 18px;
white-space: pre-wrap;
overflow-wrap: anywhere;
}
.qq-modal-qr {
display: flex;
justify-content: center;
margin-bottom: 12px;
}
.qq-modal-qr img,
.qq-modal-qr svg {
border: 1px solid var(--line);
border-radius: 10px;
}
.qq-modal-na {
display: grid;
place-items: center;
width: 148px;
height: 148px;
border: 1px dashed var(--line);
border-radius: 10px;
font-size: var(--text-micro);
color: var(--faint);
}
.qq-modal-note {
font-size: var(--text-micro);
line-height: 1.55;
color: var(--muted);
font-weight: 600;
background: var(--accent-050);
border-radius: 9px;
padding: 9px 11px;
margin: 0 0 16px;
}
.qq-modal-note:empty {
display: none;
}
.qq-foot {
--foot-ink: #adadad;
text-align: center;
font-size: var(--text-small);
line-height: var(--line-ui);
color: var(--foot-ink);
font-weight: 400;
padding: 20px 0 6px;
}
