/* EPS-TOPIK free mock test — CBT-style runner on the Korea-guide look (teal #0b8d77, ink #163847, soft #e3f3ee). Mobile first. */
.epsm{--ink:#163847;--teal:#0b8d77;--teal-d:#0b6b60;--soft:#e3f3ee;--line:#d5e6e0;--muted:#4f6873;--warm:#c9821b;--bad:#c8402f;margin:0 0 34px}
.epsm [hidden]{display:none!important}
.epsm button{font:inherit;touch-action:manipulation}
.epsm-stats{margin-bottom:22px}
.epsm-stats .hbg-stat:nth-child(4){background:linear-gradient(150deg,#1b5f8f,#163e6b)}
.epsm-stats .hbg-stat:nth-child(2){background:linear-gradient(150deg,#b86d1b,#8a4a14)}

/* ---------- intro ---------- */
.epsm-intro{display:grid;gap:18px}
.epsm-panel{padding:22px;border:1px solid #dde8e5;border-radius:20px;background:#fff;box-shadow:0 8px 24px #123b330a}
.epsm-panel h2{margin:0 0 12px;font-size:21px;color:var(--ink)}
.epsm-sets{display:grid;gap:12px}
.epsm-set{position:relative;display:flex;flex-direction:column;gap:4px;padding:16px 18px 14px 54px;border:2px solid var(--line);border-radius:16px;background:#fff;color:var(--ink);text-align:left;cursor:pointer;transition:border-color .2s,background .2s}
.epsm-set::before{content:"";position:absolute;left:18px;top:19px;width:22px;height:22px;border-radius:50%;border:2px solid #9fb8b0;background:#fff}
.epsm-set b{font-size:19px}
.epsm-set span{font-size:14px;line-height:1.6;color:var(--muted)}
.epsm-set small{font-size:12px;color:var(--teal-d);font-weight:650}
.epsm-set:hover{border-color:#9fd2c4}
.epsm-set.is-on{border-color:var(--teal);background:#f3faf7}
.epsm-set.is-on::before{border-color:var(--teal);background:var(--teal);box-shadow:inset 0 0 0 4px #fff}
.epsm-start{width:100%;margin-top:16px;font-size:18px}
.epsm-resume{margin-top:14px;padding:14px 16px;border-radius:14px;background:#fdf6ea;border:1px solid #f0dfbf}
.epsm-resume p{margin:0 0 10px;font-size:15px;line-height:1.7;color:#5b4a2c}
.epsm-resume .kc-button{width:100%}
.epsm-rules{margin:0}
.epsm-rules li{font-size:15px;line-height:1.75;color:#2d4752}
.epsm kbd{display:inline-block;min-width:22px;padding:0 6px;border:1px solid #b9d3ca;border-bottom-width:2px;border-radius:6px;background:#fff;font:600 13px/20px system-ui,sans-serif;text-align:center;color:var(--ink)}

/* ---------- test ---------- */
.epsm-test{scroll-margin-top:12px}
.epsm-bar{position:sticky;top:var(--epsm-top,0px);z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 14px;padding:10px 12px 10px 16px;border-radius:16px;background:var(--ink);color:#fff;box-shadow:0 10px 26px #0f2b3a33}
.epsm-bar-set{font-weight:700;font-size:15px}
.epsm-sec{padding:2px 10px;border-radius:999px;background:#ffffff1f;font-size:13px;font-weight:650}
.epsm-sec.is-l{background:#2f7fb8}
.epsm-timer{margin-left:auto;padding:2px 10px;border-radius:10px;background:#ffffff14;font:700 22px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.epsm-timer.is-low{background:var(--bad);animation:epsm-blink 1s steps(2) infinite}
.epsm-submit{min-height:42px;padding:6px 16px;border:0;border-radius:10px;background:#ffd88a;color:#3d2a06;font-weight:750;cursor:pointer}
.epsm-submit:hover{background:#ffc95c}
@keyframes epsm-blink{50%{background:#a8301f}}

.epsm-grid-wrap{display:grid;gap:14px}
.epsm-q{min-width:0;padding:20px 18px 22px;border:1px solid #dde8e5;border-radius:20px;background:#fff;box-shadow:0 8px 24px #123b330a;outline:0}
.epsm-qhead{display:flex;gap:12px;align-items:flex-start;margin:0 0 14px}
.epsm-qno{flex:none;display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--teal);color:#fff;font:800 19px/1 system-ui,sans-serif}
.epsm-qno.sm{width:34px;height:34px;border-radius:10px;font-size:15px}
.epsm-inst{margin:0!important;font-size:18px;line-height:1.6;font-weight:700;color:var(--ink)!important;word-break:keep-all;overflow-wrap:anywhere}
.epsm-hint{margin:2px 0 0!important;font-size:14px;line-height:1.6;color:var(--muted)}
.epsm-pic{display:flex;justify-content:center;margin:6px 0 16px}
.epsm-pic .epsm-svg{display:block;width:min(170px,46vw);padding:14px;border:1px solid #e3ece9;border-radius:18px;background:#fbfdfc}
.epsm-svg svg,.epsm-osvg svg{display:block;width:100%;height:auto}
.epsm-passage{margin:0 0 14px;padding:16px 18px;border:2px solid #cfe0da;border-radius:14px;background:#fbfdfc;font-size:18px;line-height:1.85;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}
.epsm-stem{margin:0 0 14px!important;font-size:20px;line-height:1.8;color:var(--ink)!important;word-break:keep-all;overflow-wrap:anywhere}
.epsm-stem u{text-decoration-thickness:2px;text-underline-offset:5px;text-decoration-color:var(--warm);font-weight:700}
.epsm-blank{color:var(--teal);font-weight:700;white-space:pre}
.epsm-ask{margin:0 0 12px!important;padding-left:12px;border-left:4px solid var(--teal);font-size:18px;line-height:1.7;font-weight:700;color:var(--ink)!important}
.epsm-tablewrap{margin:0 0 14px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.epsm-table{width:100%;border-collapse:collapse;border:2px solid #cfe0da;border-radius:12px;font-size:16px;background:#fbfdfc}
.epsm-table th,.epsm-table td{padding:9px 12px;border:1px solid #dbe8e3;text-align:left;line-height:1.55;color:var(--ink)}
.epsm-table th{background:#eef6f3;font-weight:700}

.epsm-opts{display:grid;gap:10px;margin-top:6px}
.epsm-opt{display:flex;align-items:center;gap:12px;width:100%;min-height:58px;padding:10px 14px;border:2px solid var(--line);border-radius:14px;background:#fff;color:var(--ink);font-size:18px;line-height:1.55;text-align:left;cursor:pointer;transition:border-color .15s,background .15s,transform .1s}
.epsm-opt:hover{border-color:#8fcab9;background:#f6fbf9}
.epsm-opt:active{transform:scale(.99)}
.epsm-opt.is-on{border-color:var(--teal);background:var(--teal);color:#fff;box-shadow:0 8px 18px #0b8d7733}
.epsm-no{flex:none;color:var(--teal);font-size:24px;line-height:1;font-weight:700}
.epsm-opt.is-on .epsm-no{color:#fff}
.epsm-ot{min-width:0;word-break:keep-all;overflow-wrap:anywhere}
.epsm-opts.is-pic{grid-template-columns:repeat(2,minmax(0,1fr))}
.epsm-opts.is-pic .epsm-opt{flex-direction:column;align-items:center;gap:6px;padding:10px}
.epsm-opts.is-pic .epsm-no{align-self:flex-start}
.epsm-osvg{display:block;width:min(110px,100%);margin-top:-14px}
.epsm-opts.is-pic .epsm-opt.is-on{background:#e3f3ee;color:var(--ink)}
.epsm-opts.is-pic .epsm-opt.is-on .epsm-no{color:var(--teal)}
.epsm-opts.is-num{grid-template-columns:repeat(4,minmax(0,1fr))}
.epsm-opts.is-num .epsm-opt{justify-content:center;min-height:68px}
.epsm-no.big{font-size:34px}

.epsm-audio{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 16px;padding:12px 14px;border-radius:16px;background:var(--soft);border:1px solid #cfe6dd}
.epsm-play{display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:8px 22px 8px 16px;border:0;border-radius:999px;background:var(--teal);color:#fff;font-size:17px;font-weight:700;cursor:pointer;box-shadow:0 6px 14px #0b8d7733}
.epsm-play:hover{background:#04554e}
.epsm-play:disabled{background:#8fb3aa;box-shadow:none;cursor:not-allowed}
.epsm-play.is-busy{background:var(--teal);animation:epsm-pulse 1.2s ease-in-out infinite}
.epsm-play-ico{width:0;height:0;border-left:15px solid #fff;border-top:9px solid transparent;border-bottom:9px solid transparent}
.epsm-play.is-busy .epsm-play-ico{width:14px;height:16px;border:0;border-left:4px solid #fff;border-right:4px solid #fff}
.epsm-plays{font-size:14px;font-weight:650;color:var(--teal-d)}
.epsm-tts,.epsm-novoice{flex-basis:100%;margin:0!important;padding:6px 10px;border-radius:10px;background:#fdf6ea;color:#7a5512!important;font-size:13px;line-height:1.6}
.epsm-novoice button{margin-left:4px;padding:2px 10px;border:1px solid #d7b57a;border-radius:999px;background:#fff;color:#7a5512;font-size:13px;cursor:pointer}
.epsm-sc{flex-basis:100%;padding:8px 12px;border-radius:10px;background:#fff}
.epsm-sc p,.epsm-ri-sc p{margin:4px 0!important;font-size:16px;line-height:1.7;color:var(--ink)!important}
@keyframes epsm-pulse{50%{box-shadow:0 0 0 8px #0b8d7722}}

.epsm-nav{padding:16px;border:1px solid #dde8e5;border-radius:20px;background:#fff}
.epsm-nav-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;color:var(--ink)}
.epsm-nav-head span{font-size:14px;font-weight:700;color:var(--teal-d)}
.epsm-nav h3{margin:10px 0 6px!important;font-size:13px!important;line-height:1.4!important;color:var(--muted)}
.epsm-cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:6px}
.epsm-cell{height:42px;border:1px solid #c9dcd5;border-radius:10px;background:#fff;color:var(--ink);font:700 15px/1 system-ui,sans-serif;cursor:pointer}
.epsm-cell:hover{border-color:var(--teal)}
.epsm-cell.is-ans{border-color:var(--teal);background:var(--teal);color:#fff}
.epsm-cell.is-cur{outline:3px solid var(--warm);outline-offset:1px;border-color:var(--warm)}
.epsm-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:12px 0 0;padding:0;list-style:none;font-size:12px;color:var(--muted)}
.epsm-legend li::before{content:"";display:inline-block;width:12px;height:12px;margin-right:5px;border-radius:3px;vertical-align:-1px;border:1px solid #c9dcd5;background:#fff}
.epsm-legend .a::before{background:var(--teal);border-color:var(--teal)}
.epsm-legend .c::before{border:2px solid var(--warm)}

.epsm-move{position:sticky;bottom:0;z-index:15;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px -4px 0;padding:10px 4px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(#f7f9f800,#f7f9f8 30%)}
.epsm-move .kc-button{width:100%;min-height:52px;font-size:17px}
.epsm-move .kc-secondary{background:#fff}
.epsm-move .kc-button:disabled{opacity:.45;cursor:default}

/* ---------- dialog ---------- */
.epsm-dialog[hidden]{display:none!important}
.epsm-dialog{--ink:#163847;position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background:#0f2b3acc}
.epsm-dialog-box{width:min(440px,100%);padding:24px 22px 20px;border-radius:20px;background:#fff;box-shadow:0 24px 60px #0008;outline:0}
.epsm-dialog-box h2{margin:0 0 8px!important;font-size:22px!important;color:var(--ink)}
.epsm-dialog-box p{margin:0 0 18px!important;font-size:15px;line-height:1.75;color:#2d4752!important}
.epsm-dialog-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.epsm-dialog-btns .kc-button{width:100%;padding:10px}

/* ---------- result ---------- */
.epsm-result{scroll-margin-top:12px}
.epsm-score{display:grid;gap:14px}
.epsm-score-main{position:relative;overflow:hidden;padding:22px;border-radius:22px;background:linear-gradient(150deg,#b86d1b,#8a4a14);color:#fff;box-shadow:0 14px 30px #0f3b4a26}
.epsm-result.is-good .epsm-score-main{background:linear-gradient(150deg,#0f7a6b,#123f6b)}
.epsm-score-main::after{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;background:#ffffff14}
.epsm-score-main span{display:block;font-size:14px;font-weight:650;opacity:.9}
.epsm-score-main b{font-size:64px;line-height:1.1;font-weight:800}
.epsm-score-main small{margin-left:6px;font-size:20px;font-weight:650;opacity:.9}
.epsm-score-main p{position:relative;margin:8px 0 0!important;color:#fff!important;font-size:15px;line-height:1.7}
.epsm-score-bars{display:grid;gap:14px;align-content:center;padding:20px;border:1px solid #dde8e5;border-radius:22px;background:#fff}
.epsm-sbar{display:grid;grid-template-columns:1fr auto;gap:6px 10px;align-items:center}
.epsm-sbar span{font-size:15px;font-weight:650;color:var(--ink)}
.epsm-sbar b{font-size:18px;color:var(--ink)}
.epsm-trk{grid-column:1/-1;grid-row:2;display:block;height:20px;border-radius:10px;background:#edf3f1;overflow:hidden}
.epsm-fill{display:block;width:0;height:100%;border-radius:10px;background:var(--teal);transition:width 1.3s cubic-bezier(.2,.8,.2,1)}
.epsm-sbar.l .epsm-fill{background:#1b5f8f;transition-delay:.25s}
.epsm-time{margin:0!important;font-size:13px;line-height:1.7;color:var(--muted)}
.epsm-passnote{margin:18px 0}
.epsm-passnote p{margin:6px 0 0;font-size:14px;line-height:1.8;color:#5b4a2c}
.epsm-cta{display:flex;flex-wrap:wrap;gap:10px}
.epsm-cta .kc-button{flex:1 1 220px}
.epsm-book{font-size:14px;line-height:1.8;color:#2d4752}
.epsm-review{margin-top:26px}
.epsm-review-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}
.epsm-review-head h2{margin:0!important;font-size:22px!important;color:var(--ink)}
.epsm-filter{display:flex;gap:6px}
.epsm-filter button{min-height:40px;padding:4px 14px;border:1px solid #c9dcd5;border-radius:999px;background:#fff;color:var(--ink);font-size:14px;font-weight:650;cursor:pointer}
.epsm-filter button.is-on{border-color:var(--ink);background:var(--ink);color:#fff}
.epsm-rlist{display:grid;gap:12px;margin:0;padding:0;list-style:none}
.epsm-ri{min-width:0;padding:16px;border:1px solid #dde8e5;border-left:5px solid var(--teal);border-radius:16px;background:#fff}
.epsm-ri.is-wrong{border-left-color:var(--bad)}
.epsm-ri.is-skip{border-left-color:#9fb0bf}
.epsm-ri-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.epsm-ri-sec{font-size:13px;color:var(--muted)}
.epsm-ri-badge{margin-left:auto;font-size:13px;color:var(--teal-d)}
.is-wrong .epsm-ri-badge{color:var(--bad)}.is-skip .epsm-ri-badge{color:#6b818a}
.epsm-ri-inst{margin:0 0 8px!important;font-size:15px;font-weight:650;color:var(--ink)!important}
.epsm-ri-pic .epsm-svg{display:block;width:90px;margin:0 0 8px}
.epsm-passage.sm{padding:10px 14px;font-size:15px;line-height:1.75}
.epsm-stem.sm,.epsm-ask.sm{font-size:16px}
.epsm-ri .epsm-table{font-size:14px}
.epsm-ri-opts{display:grid;gap:6px;margin:6px 0 10px;padding:0;list-style:none}
.epsm-ri-opts li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:7px 10px;border:1px solid #e3ece9;border-radius:10px;font-size:15px;line-height:1.55;color:var(--ink)}
.epsm-ri-opts .epsm-no{font-size:18px}
.epsm-ri-opts.is-pic{grid-template-columns:repeat(4,minmax(0,1fr))}
.epsm-ri-opts.is-pic li{flex-direction:column;align-items:center;padding:6px}
.epsm-ri-opts.is-pic .epsm-osvg{width:56px;margin:0}
.epsm-ri-opts.is-num{grid-template-columns:repeat(4,minmax(0,1fr))}
.epsm-ri-opts.is-num li{flex-direction:column;justify-content:center}
.epsm-ri-opts li.is-right{border-color:var(--teal);background:var(--soft)}
.epsm-ri-opts li.is-mine{border-color:#e7b2a9;background:#fdeeeb}
.epsm-ri-opts em{padding:1px 8px;border-radius:999px;background:var(--teal);color:#fff;font-size:11px;font-style:normal;font-weight:700;white-space:nowrap}
.epsm-ri-opts .is-mine em{background:var(--bad)}
.epsm-ri-ex{margin:0!important;font-size:15px;line-height:1.75;color:#2d4752!important}
.epsm-ri-ex b{color:var(--teal-d)}
.epsm-ri-sc{margin:8px 0 0!important;padding:8px 12px;border:1px solid #dde8e5;border-radius:12px;background:#fbfdfc}
.epsm-ri-sc summary{font-size:14px;color:var(--teal-d)}
.epsm-about{max-width:none;margin-top:10px}

/* ---------- wider screens ---------- */
@media(min-width:560px){
 .epsm-sets{grid-template-columns:1fr 1fr}
 .epsm-start,.epsm-resume .kc-button{width:auto;min-width:260px}
 .epsm-opts.is-pic{grid-template-columns:repeat(4,minmax(0,1fr))}
 .epsm-q{padding:26px 28px 28px}
 .epsm-inst{font-size:20px}
}
@media(min-width:900px){
 .epsm-intro{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start}
 .epsm-grid-wrap{grid-template-columns:minmax(0,1fr) 270px;align-items:start}
 .epsm-nav{position:sticky;top:calc(var(--epsm-top,0px) + 74px)}
 .epsm-cells{grid-template-columns:repeat(5,minmax(0,1fr))}
 .epsm-move{position:static;max-width:calc(100% - 284px);margin:14px 0 0;padding:0;background:none;display:flex;justify-content:space-between}
 .epsm-move .kc-button{width:auto;min-width:170px}
 .epsm-score{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}
 .epsm-opt{font-size:19px}
}
@media(max-width:899px){
 .epsm-move{padding-right:66px}
}
@media(max-width:600px){
 .epsm-bar{padding:8px 10px 8px 12px;gap:6px 8px;border-radius:14px}
 .epsm-timer{font-size:19px}
 .epsm-submit{min-height:40px;padding:6px 12px}
 .epsm-ri-opts.is-pic,.epsm-ri-opts.is-num{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:380px){
 .epsm-bar-set{display:none}
 .epsm-stem{font-size:18px}
 .epsm-opt{font-size:17px;padding:10px 12px}
}
@media(prefers-reduced-motion:reduce){
 .epsm-fill,.epsm-opt,.epsm-set{transition:none}
 .epsm-timer.is-low,.epsm-play.is-busy{animation:none}
}
