:root{--purple:#6542ad;--deep:#3d246e;--lavender:#f0eafb;--paper:#fff;--bg:#f8f7fb;--ink:#292333;--muted:#71687e;--line:#e4deed;--green:#22684c;--rose:#a43950;--radius:18px;font-family:"Malgun Gothic","Apple SD Gothic Neo",sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.7}
*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);background:white;border-radius:9px;padding:11px 18px;min-height:46px;font-weight:700}button:hover:not(:disabled){border-color:var(--purple);background:#f6f2fc}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #a477e1;outline-offset:4px}a{color:var(--purple)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(25px,3vw,34px);line-height:1.4;letter-spacing:-1px}h2{font-size:22px;line-height:1.5;letter-spacing:-.5px}h3{font-size:17px}p{white-space:pre-line}small,.muted{color:var(--muted)}.skip{position:fixed;top:-80px;background:white;padding:10px;z-index:5}.skip:focus{top:0}.header{background:white;border-bottom:1px solid var(--line)}.header-inner{max-width:1160px;margin:auto;padding:22px 30px;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--deep);font-size:19px;font-weight:800;line-height:1.5}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:1px}.brand-mark{display:grid;place-items:center;width:40px;height:44px;border-radius:13px 13px 13px 3px;background:var(--purple);color:white;font-size:17px}.edition{color:var(--muted);font-size:12px;white-space:nowrap}.edition b{color:var(--purple);font-size:19px;margin-left:9px}main{max-width:1160px;margin:auto;padding:35px 30px 60px;min-height:75vh}main:focus{outline:none}footer{max-width:1100px;margin:0 auto;padding:23px 0;border-top:1px solid var(--line);color:var(--muted);font-size:12px;display:flex;justify-content:space-between;gap:12px}.notice{max-width:1100px;margin:14px auto 0;background:#fff4da;color:#71521a;padding:12px 18px;border-radius:9px;font-size:13px}.intro{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:26px}.intro h1{margin-bottom:8px}.intro p{margin:0;color:var(--muted)}.tag{font-size:12px;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:6px;background:var(--lavender);color:var(--deep);font-weight:700}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:26px;align-items:start}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:27px}.route-panel{padding:0;overflow:hidden}.section-head{padding:24px 26px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.section-head h2{margin:0}.route-caption{padding:0 26px 16px;margin:0;color:var(--muted);font-size:13px}.missions{padding:0 15px 15px;position:relative}.missions:before{content:"";position:absolute;left:45px;top:28px;bottom:40px;width:2px;background:var(--line)}.mission{width:100%;border:0;border-radius:12px;padding:16px 14px;display:flex;gap:17px;text-align:left;align-items:center;font-weight:400;position:relative;background:transparent}.mission[aria-pressed=true]{background:var(--lavender)}.mission .node{flex-shrink:0;width:33px;height:33px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;background:white;color:var(--purple);font-weight:800;font-size:13px;z-index:1}.mission[aria-pressed=true] .node{background:var(--purple);color:white;border-color:var(--purple)}.mission .node.done{background:#e5f4ec;color:var(--green);border-color:#c6e5d6}.mission-body{min-width:0;flex:1}.mission strong{display:block;font-size:16px}.mission small{display:block;font-size:12px;overflow-wrap:anywhere}.mission-meta{text-align:right;font-size:12px;color:var(--muted);white-space:nowrap}.mini-track{height:3px;width:58px;background:var(--line);margin-top:6px;border-radius:4px;overflow:hidden}.mini-track i{display:block;background:var(--purple);height:100%}.side{display:grid;gap:18px}.start-panel{background:var(--deep);color:white;border:0}.start-panel h2{font-size:24px;margin:15px 0 7px}.start-panel p{color:#e2d9f2;font-size:13px}.start-panel .tag{background:#ffffff20;color:white}.start-panel .primary{background:white;color:var(--deep);width:100%;margin-top:8px}.start-panel .primary:hover{background:#f0eafb}.primary{background:var(--purple);border-color:transparent;color:white}.primary:hover:not(:disabled){background:var(--deep);color:white}.wide{width:100%}.stats{display:flex;gap:28px;margin-top:18px}.stats strong{display:block;font-size:24px;color:var(--deep);line-height:1.4}.stats small{font-size:12px}.divider{height:1px;background:var(--line);margin:22px 0}.exam-panel h3{margin-bottom:5px}.exam-panel p{font-size:13px;color:var(--muted)}.text-button{border:0;background:transparent;padding:7px 0;min-height:44px;color:var(--purple);text-align:left}.workspace{display:grid;grid-template-columns:265px minmax(0,1fr);gap:26px;align-items:start}.brief{font-size:13px}.brief h2{font-size:21px;margin-top:13px}.brief details{border-top:1px solid var(--line);margin-top:20px;padding-top:15px}.brief summary{cursor:pointer;font-weight:700;color:var(--deep);min-height:44px}.brief ul{padding-left:19px;color:var(--muted)}.funnel{margin:22px 0;display:grid;grid-template-columns:auto 1fr;gap:7px 12px;align-items:center}.funnel strong{grid-column:1/-1;font-size:13px;margin-bottom:4px}.funnel .step{padding:6px;background:var(--lavender);text-align:center;border-radius:4px;color:var(--deep);font-weight:700}.funnel .step:nth-of-type(2){margin-right:12px}.funnel .step:nth-of-type(3){margin-right:24px}.funnel .step:nth-of-type(4){margin-right:36px}.funnel small{font-size:11px}.question-panel{min-width:0;padding:30px 34px}.toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:22px}.toolbar .text-button{padding:5px 0}.progress-label{display:flex;justify-content:space-between;gap:15px;font-size:12px;color:var(--muted);margin-bottom:8px}progress{appearance:none;width:100%;height:7px;display:block;border:0;border-radius:10px;overflow:hidden;background:var(--lavender);accent-color:var(--purple)}progress::-webkit-progress-bar{background:var(--lavender)}progress::-webkit-progress-value{background:var(--purple)}progress::-moz-progress-bar{background:var(--purple)}.question-label{margin:27px 0 12px;color:var(--purple);font-size:12px;font-weight:700}.question-title{font-size:21px;line-height:1.75;white-space:pre-line;overflow-wrap:anywhere;margin-bottom:24px}.choices{display:grid;gap:11px}.choice{display:flex;align-items:center;gap:13px;width:100%;text-align:left;padding:16px;font-weight:400;line-height:1.6;white-space:pre-line;overflow-wrap:anywhere}.choice .letter{flex-shrink:0;display:grid;place-items:center;border:1px solid var(--line);width:28px;height:28px;border-radius:6px;font-size:12px;font-weight:800;color:var(--muted)}.choice[aria-pressed=true]{border:2px solid var(--purple);padding:15px;background:#f5f0fc;color:var(--deep);font-weight:700}.choice[aria-pressed=true] .letter{color:white;background:var(--purple);border-color:var(--purple)}.choice:disabled{opacity:1;cursor:default}.hint-area{margin:20px 0}.hint-area button{font-size:13px;border:0;color:var(--purple);background:var(--lavender)}.hint{border-left:3px solid #c5b0e7;padding:8px 13px;font-size:13px;background:#faf7ff;margin:9px 0}.actions{display:flex;gap:10px;justify-content:space-between;margin-top:25px;flex-wrap:wrap}.actions .right{display:flex;gap:10px}.feedback{background:#f2f8f5;border:1px solid #cee5d8;padding:21px;border-radius:12px;margin-top:22px;font-size:14px}.feedback.wrong{background:#fff6f7;border-color:#f0d7dd}.feedback h3{color:var(--green);margin-bottom:10px}.feedback.wrong h3{color:var(--rose)}.feedback p:last-child{margin:0}.feedback b{display:block;font-size:12px;margin-top:13px;margin-bottom:4px}.exam-map{display:flex;flex-wrap:wrap;gap:7px;margin-top:18px}.exam-map button{width:36px;min-height:36px;padding:4px;font-size:12px;border-radius:6px;font-weight:400}.exam-map button.answered{background:var(--lavender);border-color:#c9b5e8;color:var(--deep)}.exam-map button[aria-current=true]{outline:2px solid var(--purple);outline-offset:1px;font-weight:800}.result-layout{max-width:860px;margin:0 auto}.result-top{background:var(--deep);color:white;padding:32px;border-radius:var(--radius);display:flex;justify-content:space-between;gap:25px;align-items:center;margin-bottom:23px}.result-top h1{font-size:28px;margin:10px 0}.result-top p{color:#e2d9f2;margin:0;font-size:13px}.score{font-size:47px;line-height:1.3;font-weight:800;white-space:nowrap}.score small{font-size:16px;color:#e2d9f2}.skill-row{display:grid;grid-template-columns:1fr 110px 65px;align-items:center;gap:15px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.skill-row:last-child{border:0}.skill-row span:last-child{text-align:right}.review-item{border-top:1px solid var(--line);padding:18px 0}.review-item summary{cursor:pointer;font-weight:700;min-height:44px}.review-item p{margin:12px 0;font-size:14px}.answer-line{padding:12px;background:var(--lavender);border-radius:7px}.badge-row{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0}.badge{padding:6px 11px;background:#e7f3ec;color:var(--green);border:1px solid #cae4d5;border-radius:6px;font-size:12px}.empty{padding:30px;color:var(--muted)}[hidden]{display:none!important}
@media(max-width:850px){.dashboard-grid{grid-template-columns:minmax(0,1fr) 280px}.workspace{grid-template-columns:220px minmax(0,1fr)}.question-panel{padding:25px}.header-inner{padding:19px 22px}main{padding:28px 22px 45px}footer{margin:0 22px}.panel{padding:22px}.route-panel{padding:0}}
@media(max-width:680px){.dashboard-grid,.workspace{grid-template-columns:1fr}.dashboard-grid .side{grid-row:1}.side{grid-template-columns:1fr}.start-panel{padding:23px}.start-panel h2{font-size:22px}.start-panel p{margin-bottom:10px}.stats{margin:0;gap:23px}.intro{display:block;margin-bottom:22px}.intro>.tag{margin-top:14px}.brief{padding:20px}.brief .funnel{grid-template-columns:repeat(4,1fr);gap:5px;margin:15px 0}.funnel strong{grid-column:1/-1}.funnel .step:nth-of-type(n){margin:0;font-size:12px}.funnel small{display:none}.brief p{margin-bottom:10px}.brief details{margin-top:12px;padding-top:10px}.question-panel{padding:22px 18px}.question-title{font-size:19px}.header-inner{padding:16px 18px}.brand{font-size:16px;gap:9px}.brand small{font-size:10px;letter-spacing:0}.brand-mark{width:34px;height:38px}.edition{font-size:10px}.edition b{font-size:15px;margin-left:4px}main{padding:24px 16px 40px}h1{font-size:26px}.mission{gap:12px;padding:15px 10px}.mission strong{font-size:15px}.missions:before{left:41px}.mission-meta{font-size:11px}.section-head{padding:22px 24px 10px}.section-head h2{font-size:20px}.result-top{padding:24px;display:block}.score{margin-top:18px}.skill-row{grid-template-columns:1fr 70px 50px;gap:9px}footer{display:block;margin:0 16px}footer span{display:block}.notice{margin:12px 16px 0}.actions>button,.actions .right{flex:1}.actions .right button{flex:1}.intro p{font-size:13px}.toolbar{margin-bottom:16px}.toolbar .tag{font-size:11px}.result-layout .panel{padding:22px 18px}}
.exam-panel .wide+.wide{margin-top:9px}.materials{padding:5px 10px;font-size:12px;color:var(--muted)}.materials summary{cursor:pointer;min-height:44px}.materials a{display:block;padding:7px 0}.materials small{display:block;margin-top:8px}.server-panel{margin:22px 0}.server-panel>p{font-size:13px}.submission-form{display:flex;gap:10px;flex-wrap:wrap}.submission-form label{width:100%;font-size:13px;font-weight:700}.submission-form input{font:inherit;color:var(--ink);border:1px solid #bdb0cf;border-radius:8px;padding:11px;flex:1;min-width:150px;max-width:100%}.submission-form input:focus-visible{outline:3px solid #a477e1;outline-offset:3px}.ranking table{border-collapse:collapse;width:100%;font-size:13px;table-layout:fixed}.ranking th,.ranking td{text-align:left;padding:10px 6px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.ranking th{color:var(--muted)}
.start-panel button:not(.primary){color:var(--deep)}
@media(prefers-reduced-motion:no-preference){button{transition:background .15s,border-color .15s}}
