:root{--navy:#111d33;--navy2:#172844;--blue:#246bf3;--cyan:#1ec9ed;--violet:#7758f5;--mint:#18b99d;--orange:#ff8a34;--ink:#17213a;--muted:#68748a;--line:#dfe5ef;--soft:#f4f7fb;--white:#fff;--danger:#e5484d;--shadow:0 20px 55px rgba(20,36,66,.14)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background:#fff;font-family:Pretendard,"Noto Sans KR","Malgun Gothic",Arial,sans-serif;line-height:1.5}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
.hidden{display:none!important}
.muted{color:var(--muted)}
.section-label{margin:0 0 7px;color:var(--blue);font-size:12px;font-weight:800;letter-spacing:.13em}
.primary,.secondary,.danger{min-height:42px;border-radius:10px;padding:0 17px;font-weight:750}
.primary{border:1px solid var(--blue);color:#fff;background:var(--blue)}
.primary:hover{background:#1558d4}
.secondary{border:1px solid #ccd5e3;color:#36435a;background:#fff}
.wide{width:100%;min-height:50px}
:focus-visible{outline:3px solid rgba(36,107,243,.35);outline-offset:2px}

/* Public portal */
.portal-shell{min-height:100vh;background:#fff}.portal-header{position:relative;z-index:45;border-bottom:1px solid #e5e9f0;background:#fff}.portal-utility{height:34px;color:#68748a;background:#f4f6f9;font-size:11px}.portal-utility>div{max-width:1240px;height:100%;margin:auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between}.portal-utility nav{display:flex;gap:4px}.portal-utility button{border:0;padding:4px 8px;color:#606c80;background:none;font-size:11px}.portal-header-main{max-width:1240px;height:86px;margin:auto;padding:0 24px;display:flex;align-items:center;gap:38px}.portal-logo{display:flex;align-items:center;gap:12px;margin-right:auto}.portal-logo>span:last-child{display:flex;flex-direction:column}.portal-logo strong{font-size:19px;letter-spacing:-.045em}.portal-logo small{font-size:9px;color:#8390a4;letter-spacing:.12em;text-transform:uppercase}.logo-mark{width:42px;height:42px;position:relative;display:block;flex:0 0 auto}.logo-mark.small{width:34px;height:34px}.logo-mark i{position:absolute;border-radius:15px 15px 5px;background:linear-gradient(145deg,var(--blue),var(--cyan));transform:rotate(42deg)}.logo-mark i:nth-child(1){width:18px;height:34px;left:4px;top:4px}.logo-mark i:nth-child(2){width:15px;height:27px;right:2px;top:9px;background:linear-gradient(145deg,var(--violet),#b185ff)}.logo-mark i:nth-child(3){width:12px;height:18px;left:15px;bottom:0;background:#24d5b7}.logo-mark.small i{transform:rotate(42deg) scale(.8);transform-origin:center}.portal-gnb{height:100%;display:flex;align-items:center;gap:8px}.portal-gnb button{position:relative;height:100%;border:0;padding:0 20px;color:#344057;background:none;font-weight:800}.portal-gnb button:after{content:"";position:absolute;left:20px;right:20px;bottom:0;height:3px;border-radius:4px 4px 0 0;background:var(--blue);transform:scaleX(0);transition:.2s}.portal-gnb button:hover,.portal-gnb button.active{color:var(--blue)}.portal-gnb button.active:after{transform:scaleX(1)}.portal-join-button{height:44px;border:0;border-radius:24px;padding:0 20px;color:#fff;background:var(--navy);font-weight:800}.portal-join-button span{margin-left:8px;color:#7edff3}.portal-menu-button{display:none;border:0;background:none;font-size:25px}.portal-nav-backdrop{position:fixed;z-index:40;inset:120px 0 0;background:rgba(8,18,37,.48)}.portal-page{display:none}.portal-page.active{display:block}.portal-section{max-width:1180px;margin-left:auto;margin-right:auto;padding-left:24px;padding-right:24px}.portal-section-heading{text-align:center;margin-bottom:32px}.portal-section-heading p,.eyebrow{margin:0;color:var(--blue);font-size:11px;font-weight:850;letter-spacing:.15em}.portal-section-heading h2{margin:8px 0 5px;font-size:31px;letter-spacing:-.045em}.portal-section-heading span{color:var(--muted)}
.portal-hero{position:relative;max-width:1440px;height:575px;margin:auto;overflow:hidden;border-radius:0 0 34px 34px;background:#0c43cd}.hero-slide{position:absolute;inset:0;visibility:hidden;opacity:0;transition:opacity .45s}.hero-slide.active{visibility:visible;opacity:1}.hero-slide>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-slide:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,25,100,.72),rgba(4,31,112,.14) 68%)}.hero-slide:nth-child(2){background:linear-gradient(135deg,#071d63,#0e5ad8 62%,#14a7d6)}.hero-slide-pattern{position:absolute;inset:0;overflow:hidden}.hero-slide-pattern:before,.hero-slide-pattern:after,.hero-slide-pattern i{content:"";position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.2)}.hero-slide-pattern:before{width:620px;height:620px;right:-80px;top:-190px}.hero-slide-pattern:after{width:420px;height:420px;right:200px;bottom:-280px}.hero-slide-pattern i:nth-child(1){width:200px;height:200px;right:150px;top:80px;background:rgba(52,211,255,.1)}.hero-slide-pattern i:nth-child(2){width:110px;height:110px;right:390px;top:260px;background:rgba(118,89,245,.16)}.hero-slide-pattern i:nth-child(3){width:44px;height:44px;right:95px;bottom:75px;background:#35d8b3}.hero-slide-copy{position:relative;z-index:2;width:60%;padding:105px 0 60px max(6%,70px);color:#fff}.hero-slide-copy>p{margin:0;color:#bdeeff;font-size:12px;font-weight:850;letter-spacing:.15em}.hero-slide-copy h1,.hero-slide-copy h2{margin:17px 0 21px;font-size:49px;line-height:1.24;letter-spacing:-.05em}.hero-slide-copy h2{font-weight:850}.hero-slide-copy em{color:#a8efff;font-style:normal}.hero-slide-copy>span{display:block;max-width:610px;color:#e3edff;font-size:17px}.hero-slide-copy>button{margin-top:28px;border:1px solid rgba(255,255,255,.75);border-radius:11px;padding:14px 20px;color:#193469;background:#fff;font-weight:850}.hero-slide-copy>button b{margin-left:17px;color:var(--blue)}.hero-controls{position:absolute;z-index:5;left:max(6%,70px);bottom:43px;display:flex;align-items:center;gap:6px;color:#fff}.hero-controls>span{margin-right:13px;font-size:12px}.hero-controls>span b{font-size:15px}.hero-controls button{width:36px;height:36px;border:1px solid rgba(255,255,255,.45);border-radius:50%;color:#fff;background:rgba(5,25,82,.28);font-weight:850}.hero-controls button:hover{background:rgba(5,25,82,.58)}
.service-section{padding-top:75px;padding-bottom:72px}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.service-card{position:relative;min-height:220px;overflow:hidden;border:1px solid #e0e6ef;border-radius:22px;padding:28px;text-align:left;background:#fff;box-shadow:0 14px 38px rgba(24,44,78,.08)}.service-card:after{content:"";position:absolute;width:170px;height:170px;right:-70px;top:-70px;border-radius:50%;background:currentColor;opacity:.08}.service-card strong,.service-card small,.service-card b{display:block}.service-card strong{margin:17px 0 8px;color:var(--ink);font-size:22px}.service-card small{min-height:48px;color:var(--muted);line-height:1.65}.service-card b{margin-top:22px;color:currentColor;font-size:13px}.service-card.blue{color:var(--blue)}.service-card.violet{color:var(--violet)}.service-card.mint{color:var(--mint)}.service-icon{font-size:13px;font-weight:900}.schedule-section{display:grid;grid-template-columns:310px 1fr;gap:28px;margin-bottom:72px;padding:0;border:1px solid #dce4ef;border-radius:24px;overflow:hidden;background:#f7f9fc}.schedule-summary{padding:34px;color:#fff;background:linear-gradient(145deg,#113d86,#1c6bdd)}.schedule-summary p{margin:0 0 20px;color:#bfe8ff;font-size:12px;font-weight:850}.schedule-summary h2{margin:0 0 9px;font-size:28px;line-height:1.3}.schedule-summary span{color:#dcecff;font-size:13px}.schedule-timeline{margin:0;padding:26px 28px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;list-style:none}.schedule-timeline li{position:relative;padding-left:18px;border-left:2px solid #d7e2f1}.schedule-timeline time{display:block;color:var(--blue);font-size:17px;font-weight:900}.schedule-timeline strong,.schedule-timeline span{display:block}.schedule-timeline strong{margin:7px 0 4px;font-size:14px}.schedule-timeline span{color:var(--muted);font-size:12px;line-height:1.55}.participate-banner{min-height:210px;margin-bottom:72px;padding:40px 48px;display:flex;align-items:center;justify-content:space-between;border-radius:24px;color:#fff;background:linear-gradient(110deg,#111d33,#183c73 60%,#1c70c9)}.participate-banner p{margin:0;color:#78def5;font-size:11px;font-weight:850;letter-spacing:.16em}.participate-banner h2{margin:9px 0 6px;font-size:31px}.participate-banner span{color:#d5e4f8}.participate-banner button{border:1px solid rgba(255,255,255,.75);border-radius:11px;padding:15px 21px;color:#172f5a;background:#fff;font-weight:850}.participate-banner button b{margin-left:13px;color:var(--blue)}.home-board{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:72px}.board-card{border:1px solid #e0e5ed;border-radius:20px;padding:26px;background:#fff}.board-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.board-heading h2{margin:0;font-size:23px}.board-heading button{border:0;color:#67748a;background:none;font-size:12px;font-weight:750}.home-notice-list{display:grid}.home-notice{display:grid;grid-template-columns:1fr auto;gap:12px;width:100%;border:0;border-top:1px solid #e9edf3;padding:15px 3px;text-align:left;background:none}.home-notice:first-child{border-top:0}.home-notice strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-notice time{color:#8a96a8;font-size:12px}.home-faq-list{margin:0;padding:0;list-style:none}.home-faq-list li{border-top:1px solid #e9edf3}.home-faq-list li:first-child{border-top:0}.home-faq-list button{width:100%;border:0;padding:15px 3px;display:grid;grid-template-columns:28px 1fr auto;gap:8px;text-align:left;background:none}.home-faq-list b{color:var(--blue)}.home-faq-list em{color:#9ba6b6;font-style:normal}.empty-state{margin:18px 0;color:var(--muted);text-align:center}.research-features{margin-bottom:80px;padding:48px;display:grid;grid-template-columns:.8fr 1.2fr;gap:55px;border-radius:25px;background:#f1f6ff}.research-features>div>p{margin:0;color:var(--blue);font-size:11px;font-weight:850;letter-spacing:.15em}.research-features h2{margin:12px 0 22px;font-size:31px;line-height:1.4}.research-features>div>button{border:0;padding:0;color:var(--blue);background:none;font-weight:800}.research-features ul{margin:0;padding:0;display:grid;gap:10px;list-style:none}.research-features li{padding:16px;display:grid;grid-template-columns:45px 1fr;gap:12px;border-radius:13px;background:#fff}.research-features li>span{display:grid;place-items:center;width:39px;height:39px;border-radius:11px;color:#fff;background:var(--blue);font-size:11px;font-weight:900}.research-features strong,.research-features small{display:block}.research-features small{margin-top:4px;color:var(--muted);line-height:1.55}
.sub-visual{min-height:270px;padding:0 24px;display:flex;align-items:center;color:#fff;background:linear-gradient(120deg,#10234b,#1e69c9)}.sub-visual>div{width:100%;max-width:1180px;margin:auto}.sub-visual nav{margin-bottom:28px;display:flex;gap:9px;align-items:center;color:#c8d7ec;font-size:12px}.sub-visual nav button{border:0;padding:0;color:#c8d7ec;background:none}.sub-visual>div>p{margin:0;color:#8de9f7;font-size:11px;font-weight:850;letter-spacing:.17em}.sub-visual h1{margin:7px 0 8px;font-size:40px;letter-spacing:-.05em}.sub-visual>div>span{color:#d7e5f8}.about-visual{background:linear-gradient(120deg,rgba(9,33,78,.96),rgba(25,97,183,.93)),radial-gradient(circle at 80% 25%,#35d5e7,transparent 32%)}.participate-visual{background:linear-gradient(120deg,#151f43,#5c4bd0)}.guide-visual{background:linear-gradient(120deg,#0e385f,#0b8e9d)}.community-visual{background:linear-gradient(120deg,#27345d,#7a5794)}.sitemap-visual{background:linear-gradient(120deg,#202b40,#465a77)}.sub-layout{max-width:1180px;margin:0 auto;padding:58px 24px 90px;display:grid;grid-template-columns:210px minmax(0,1fr);gap:54px}.sub-sidebar{position:sticky;top:20px;align-self:start;display:grid;border-top:3px solid var(--navy)}.sub-sidebar strong{padding:20px 15px;border-bottom:1px solid #dfe5ee;font-size:20px}.sub-sidebar a{padding:13px 15px;border-bottom:1px solid #e7ebf1;color:#5d697d;font-size:13px}.sub-sidebar a:hover{color:var(--blue);background:#f6f9fe}.sub-content{min-width:0}.content-section{padding:0 0 68px;scroll-margin-top:20px}.content-section+.content-section{padding-top:58px;border-top:1px solid #e3e8ef}.content-section.tinted{margin:0 -30px 68px;padding:48px 30px;border:0;border-radius:20px;background:#f7f9fc}.content-section h2,.single-content h2{margin:9px 0 20px;font-size:30px;letter-spacing:-.04em}.content-section .lead{font-size:17px;line-height:1.85;color:#4f5b70}.purpose-grid{margin-top:32px;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.purpose-grid article{padding:22px;border:1px solid #e0e6ef;border-radius:15px}.purpose-grid span{color:var(--blue);font-size:12px;font-weight:900}.purpose-grid strong{display:block;margin:13px 0 7px;font-size:18px}.purpose-grid p{margin:0;color:var(--muted);font-size:13px;line-height:1.7}.target-table-wrap{overflow:auto}.target-table{min-width:760px;white-space:normal}.target-table th{color:#fff;background:#1f416e}.target-table th,.target-table td{padding:15px}.status-note{margin:17px 0 0;padding:16px 18px;border-left:4px solid var(--blue);background:#edf4ff;color:#4f5e75;font-size:13px}.status-note b{margin-right:8px;color:var(--blue)}.process-list{margin:27px 0 0;padding:0;list-style:none}.process-list li{position:relative;display:grid;grid-template-columns:145px 1fr;gap:25px;padding:0 0 30px}.process-list li:before{content:"";position:absolute;left:151px;top:8px;bottom:-5px;width:2px;background:#dbe4f1}.process-list li:after{content:"";position:absolute;left:145px;top:6px;width:14px;height:14px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 5px #e6efff}.process-list li:last-child:before{display:none}.process-list>li>span{color:var(--blue);font-weight:850}.process-list div{padding-left:20px}.process-list strong{font-size:17px}.process-list p{margin:5px 0;color:var(--muted)}.safety-section{padding:30px!important;display:grid;grid-template-columns:64px 1fr;gap:22px;border:0!important;border-radius:18px;background:#eef8f6}.safety-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;color:#fff;background:var(--mint);font-size:25px}.safety-section h2{margin-top:5px}.safety-section p{color:#536c68}.safety-section button{border:0;padding:0;color:#0c806c;background:none;font-weight:800}
.single-content{max-width:1180px;margin:auto;padding:68px 24px 90px}.participation-intro{text-align:center;margin-bottom:35px}.participation-intro h2{margin-bottom:8px}.participation-intro>p:last-child{color:var(--muted)}.participation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.participation-grid>article{position:relative;padding:29px;border:1px solid #dfe5ee;border-radius:20px;background:#fff;box-shadow:0 12px 35px rgba(25,44,77,.07)}.role-number{position:absolute;right:22px;top:22px;color:#aab4c4;font-size:12px;font-weight:900}.role-symbol{display:grid;place-items:center;width:58px;height:58px;border-radius:17px;color:#fff;background:linear-gradient(135deg,#216bde,#26bfe0);font-size:12px;font-weight:900}.role-symbol.school{background:linear-gradient(135deg,#654ee0,#a66de6)}.role-symbol.internal{background:linear-gradient(135deg,#07987f,#39c6a8)}.participation-grid h3{margin:20px 0 8px;font-size:23px}.participation-grid p{color:var(--muted);font-size:13px;line-height:1.7}.participation-grid ul{min-height:90px;margin:18px 0;padding-left:20px;color:#4f5d72;font-size:13px;line-height:1.9}.participation-grid button{width:100%;border:0;border-radius:10px;padding:13px;color:#fff;background:var(--navy);font-weight:800}.participation-grid button b{float:right}.assessment-status{margin-top:60px;padding:38px;border-radius:22px;background:#f4f7fb}.status-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.status-cards article{padding:19px;border:1px solid #e0e5ed;border-radius:13px;background:#fff}.status-cards span,.status-cards strong,.status-cards small{display:block}.status-cards span{width:max-content;padding:3px 8px;border-radius:10px;font-size:10px;font-weight:850}.status-cards .ready{color:#0a7b63;background:#dff8f1}.status-cards .draft{color:#7a668d;background:#eee9f5}.status-cards strong{margin:11px 0 5px}.status-cards small{color:var(--muted)}.preparation-check{margin-top:60px;padding:38px;border:1px solid #dfe5ee;border-radius:22px}.preparation-check ol{margin:25px 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;list-style:none}.preparation-check li{padding:17px;background:#f7f9fc;border-radius:12px}.preparation-check li>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:#fff;background:var(--blue);font-size:11px;font-weight:900}.preparation-check li p{margin:10px 0 0;color:var(--muted);font-size:12px}.preparation-check li strong{display:block;margin-bottom:4px;color:var(--ink);font-size:14px}.preparation-check>button{border:0;padding:0;color:var(--blue);background:none;font-weight:800}.guide-steps{margin:26px 0 0;padding:0;display:grid;gap:13px;list-style:none}.guide-steps li{padding:19px;display:grid;grid-template-columns:48px 1fr;gap:16px;border:1px solid #e2e7ef;border-radius:13px}.guide-steps li>span{display:grid;place-items:center;width:43px;height:43px;border-radius:12px;color:#fff;background:var(--blue);font-size:11px;font-weight:900}.guide-steps strong{font-size:17px}.guide-steps p{margin:5px 0 0;color:var(--muted)}.function-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.function-grid article{padding:20px;border:1px solid #e1e6ed;border-radius:13px;background:#fff}.function-grid article>span{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;color:#fff;background:linear-gradient(135deg,#1d65d5,#20bddb);font-weight:900}.function-grid strong{display:block;margin:13px 0 5px}.function-grid p{margin:0;color:var(--muted);font-size:13px}.fraction-guide{display:grid;grid-template-columns:280px 1fr;gap:38px;align-items:center;padding:28px;border:1px solid #dfe5ee;border-radius:18px}.fraction-preview{min-height:180px;display:flex;align-items:center;justify-content:center;gap:11px;border-radius:14px;background:#f5f8fc}.fraction-preview label{color:#6c788c;font-size:10px;text-align:center}.fraction-preview input{display:block;width:82px;height:48px;margin-top:5px;text-align:center;font-size:21px;font-weight:800}.fraction-preview>div{display:grid;gap:7px}.fraction-preview>div>i{height:2px;background:#2d3a50}.fraction-guide ol{margin:0;padding:0;display:grid;gap:12px;list-style:none}.fraction-guide li{display:grid;grid-template-columns:28px 1fr;gap:9px;align-items:center}.fraction-guide li b{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;color:#fff;background:var(--blue);font-size:11px}.fraction-guide li span{color:#526076}.trouble-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.trouble-grid article{padding:19px;border:1px solid #dfe5ed;border-radius:13px}.trouble-grid p{margin:6px 0 0;color:var(--muted);font-size:13px}.support-callout{margin-top:18px;padding:22px 25px;display:flex;justify-content:space-between;align-items:center;border-radius:13px;background:#12213b;color:#fff}.support-callout p{margin:4px 0 0;color:#c7d2e3;font-size:13px}.support-callout button,.contact-section button{border:1px solid rgba(255,255,255,.55);border-radius:9px;padding:12px 15px;color:#fff;background:transparent;font-weight:800}
.community-content{display:grid;gap:70px}.content-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:22px}.content-heading h2{margin-bottom:0}.board-search{width:300px;color:#677388;font-size:12px}.board-search input{margin-top:6px}.notice-table-wrap{overflow:auto;border-top:2px solid var(--navy)}.notice-table{min-width:680px;white-space:normal}.notice-table th:first-child,.notice-table td:first-child{width:90px;text-align:center}.notice-table th:last-child,.notice-table td:last-child{width:130px}.notice-table button{border:0;padding:0;text-align:left;background:none;font-weight:750}.notice-table button:hover{color:var(--blue);text-decoration:underline}.notice-table .pinned{display:inline-block;margin-right:8px;padding:2px 7px;border-radius:9px;color:#fff;background:var(--blue);font-size:9px}.board-count{color:var(--muted);font-size:12px}.faq-list{border-top:2px solid var(--navy)}.faq-list details{border-bottom:1px solid #e1e6ee}.faq-list summary{padding:18px 10px;display:grid;grid-template-columns:32px 1fr;gap:8px;cursor:pointer;list-style:none}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary b{color:var(--blue);font-size:17px}.faq-list details p{margin:0;padding:20px 50px;color:#556276;background:#f7f9fc;line-height:1.8}.contact-section{padding:34px 38px;display:flex;align-items:center;justify-content:space-between;border-radius:20px;color:#fff;background:linear-gradient(110deg,#152642,#254f88)}.contact-section h2{margin-bottom:6px}.contact-section p:last-child{margin:0;color:#ccd8e9}.sitemap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.sitemap-grid section{display:flex;flex-direction:column;border-top:3px solid var(--navy)}.sitemap-grid h2{margin:0;padding:18px 12px;border-bottom:1px solid #dfe5ed;font-size:20px}.sitemap-grid a,.sitemap-grid button{border:0;border-bottom:1px solid #e6eaf0;padding:13px 12px;text-align:left;color:#566278;background:none;font-size:13px}.sitemap-grid a:hover,.sitemap-grid button:hover{color:var(--blue);background:#f5f8fd}.portal-dialog{width:min(660px,calc(100% - 28px));border:0;border-radius:19px;padding:32px;box-shadow:0 25px 80px rgba(8,22,48,.32)}.portal-dialog::backdrop{background:rgba(7,17,35,.65)}.portal-dialog-close{position:absolute;right:18px;top:13px;border:0;background:none;font-size:29px;color:#68748a}.portal-dialog h2{margin:8px 0 4px}.portal-dialog time{color:#8b96a6;font-size:12px}.portal-dialog>div{margin-top:22px;padding-top:20px;border-top:1px solid #e1e6ed;white-space:pre-wrap;line-height:1.8}.portal-footer{padding:42px 24px;color:#aeb9ca;background:#111d33}.footer-inner{max-width:1180px;margin:auto;display:grid;grid-template-columns:260px 1fr 240px;gap:40px}.footer-brand{display:flex;gap:13px;align-items:center;color:#fff}.footer-links>button{border:0;padding:0 14px;color:#d3dbe7;background:none;font-size:12px}.footer-links>button:first-child{padding-left:0}.footer-links p{margin:18px 0 0;color:#8390a5;font-size:12px;line-height:1.7}.footer-support span,.footer-support strong,.footer-support small{display:block}.footer-support span{color:#7fcde3;font-size:10px;font-weight:850}.footer-support strong{margin:5px 0;color:#fff}.footer-support small{color:#8390a5}

.service-grid{grid-template-columns:repeat(4,1fr);gap:16px}.service-card{min-height:235px;padding:24px}.service-card.cyan{color:#0697b6}.experience-visual{background:linear-gradient(120deg,#062a55,#1079b4 62%,#15aab5)}.experience-content{display:grid;gap:46px}.experience-setup{padding:38px;border:1px solid #dfe5ee;border-radius:22px;background:#fff;box-shadow:0 15px 45px rgba(24,43,76,.08)}.experience-heading{text-align:center}.experience-heading h2{margin-bottom:7px}.experience-heading>p:last-child{margin:0;color:var(--muted)}.experience-type-grid{margin:32px 0 27px;display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.experience-type-grid button{position:relative;min-height:155px;border:1px solid #dfe5ee;border-radius:15px;padding:22px;text-align:left;background:#fff}.experience-type-grid button:hover,.experience-type-grid button.active{border-color:var(--blue);background:#f2f7ff;box-shadow:0 0 0 1px var(--blue)}.experience-type-grid span{position:absolute;right:17px;top:14px;color:#a8b3c3;font-size:11px;font-weight:900}.experience-type-grid strong,.experience-type-grid small{display:block}.experience-type-grid strong{margin:14px 0 8px;font-size:19px}.experience-type-grid small{color:var(--muted);line-height:1.6}.experience-options{display:grid;grid-template-columns:1fr .7fr 1fr;gap:15px}.experience-options fieldset{margin:0;border:1px solid #dfe5ed;border-radius:13px;padding:15px}.experience-options legend{padding:0 7px;color:#536178;font-size:12px;font-weight:850}.experience-options fieldset>div{display:flex;gap:7px;flex-wrap:wrap}.experience-options label{position:relative;cursor:pointer}.experience-options label input{position:absolute;opacity:0}.experience-options label span{display:block;border:1px solid #d8dfe9;border-radius:9px;padding:10px 13px;color:#5f6b7e;font-size:12px;font-weight:750}.experience-options label input:checked+span{border-color:var(--blue);color:#fff;background:var(--blue)}.experience-options label.disabled{cursor:not-allowed;opacity:.55}.experience-options label em{font-size:9px;font-style:normal}.experience-start{display:block;margin:30px auto 0;border:0;border-radius:11px;padding:14px 24px;color:#fff;background:var(--navy);font-weight:850}.experience-start b{margin-left:20px}.experience-callout{margin-top:28px;padding:31px 35px;display:flex;align-items:center;justify-content:space-between;border-radius:18px;color:#fff;background:linear-gradient(110deg,#0f3e75,#167da0)}.experience-callout h2{margin:6px 0}.experience-callout span{color:#d9edf5}.experience-callout button{border:1px solid rgba(255,255,255,.65);border-radius:9px;padding:12px 16px;color:#fff;background:transparent;font-weight:850}.experience-runner{overflow:hidden;border:1px solid #d7dfe9;border-radius:20px;background:#e9edf3;box-shadow:0 18px 55px rgba(19,36,67,.13)}.experience-runner>header{min-height:88px;padding:14px 22px;display:flex;align-items:center;justify-content:space-between;color:#fff;background:var(--navy)}.experience-runner>header p{margin:3px 0 0;color:#99abc5;font-size:10px;font-weight:850;letter-spacing:.1em}.experience-runner>header h2{margin:1px 0 0;font-size:20px}.experience-runner>header button{border:0;padding:0;color:#9fc7ff;background:none;font-size:12px;font-weight:750}.experience-tools{display:flex;align-items:center;gap:10px}.experience-tools>span{color:#cbd6e6;font-size:11px}.experience-tools>span i{display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:50%;background:#30d4aa}.experience-tools>button{height:38px!important;border:1px solid #56667e!important;border-radius:8px!important;padding:0 11px!important;color:#fff!important}.experience-tools>div{min-width:100px;padding:7px 12px;border-radius:9px;text-align:center;background:#263650}.experience-tools small,.experience-tools strong{display:block}.experience-tools small{color:#b8c3d5;font-size:9px}.experience-tools strong{color:#ffb35f;font-size:18px}.experience-workspace{min-height:560px;display:grid;grid-template-columns:minmax(0,1fr) 240px}.experience-question-area{min-width:0;display:grid;grid-template-rows:45px minmax(0,1fr) 68px}.experience-progress{padding:0 20px;display:flex;align-items:center;justify-content:space-between;background:#f8fafc;border-bottom:1px solid #dce2eb}.experience-progress span{font-weight:850}.experience-progress button{display:none;border:0;color:var(--blue);background:none;font-weight:750}.experience-question{width:min(820px,calc(100% - 35px));min-height:400px;margin:17px auto;padding:32px 38px;border:1px solid #d8dfe8;border-radius:7px;background:#fff}.experience-question .demo-heading{display:grid;grid-template-columns:40px 1fr;gap:13px;align-items:start}.experience-question .demo-number{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;color:#fff;background:var(--blue);font-weight:850}.experience-question .demo-prompt{font-size:19px;line-height:1.75}.experience-question .demo-options{margin-top:25px;display:grid;gap:9px}.experience-question .demo-option{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:center;border:1px solid #d8dfe9;border-radius:9px;padding:12px;cursor:pointer}.experience-question .demo-option input{position:absolute;opacity:0}.experience-question .demo-option span:first-of-type{display:grid;place-items:center;width:26px;height:26px;border:1px solid #aeb8c7;border-radius:50%;font-size:12px}.experience-question .demo-option.selected{border-color:var(--blue);background:#f2f7ff}.experience-question .demo-option.selected span:first-of-type{color:#fff;background:var(--blue);border-color:var(--blue)}.experience-question .demo-input{margin-top:28px;padding:20px;border-radius:10px;background:#f5f8fc}.experience-question .demo-input label{display:block;margin-bottom:8px;font-weight:800}.experience-question .demo-input input{width:180px;font-size:18px}.experience-question .demo-input small{display:block;margin-top:7px;color:var(--muted)}.experience-question .demo-fraction{margin:30px auto;display:flex;justify-content:center;align-items:center;gap:10px}.experience-question .demo-fraction>label,.experience-question .demo-fraction>div label{color:#6b788c;font-size:10px;text-align:center}.experience-question .demo-fraction input{display:block;width:90px;margin-top:5px;text-align:center;font-size:20px}.experience-question .demo-fraction>div{display:grid;gap:7px}.experience-question .demo-fraction>div>i{height:2px;background:#26344a}.experience-question-area>footer{padding:0 20px;display:flex;align-items:center;justify-content:center;gap:10px;border-top:1px solid #dce2eb;background:#f8fafc}.experience-question-area>footer button{min-width:145px;border:1px solid #cbd4e1;border-radius:9px;padding:11px;background:#fff;font-weight:800}.experience-question-area>footer button:last-child{border-color:var(--blue);color:#fff;background:var(--blue)}#experienceNav{padding:22px 17px;color:#fff;background:#1c2b44}#experienceNav>div:first-child strong,#experienceNav>div:first-child small{display:block}#experienceNav>div:first-child small{margin-top:4px;color:#8fa0b8;font-size:10px}.experience-nav-buttons{margin:20px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.experience-nav-buttons button{aspect-ratio:1;border:1px solid #526078;border-radius:7px;color:#d8deeb;background:#283850;font-weight:800}.experience-nav-buttons button.answered{border-color:#27bd94;background:#16765e}.experience-nav-buttons button.current{border-color:#6198ff;background:#2b69d9;box-shadow:0 0 0 2px #6198ff}.experience-legend{display:flex!important;gap:10px!important;color:#aab6c8;font-size:10px}.experience-legend span{display:flex;align-items:center;gap:4px}.experience-legend i{width:9px;height:9px;border:1px solid #65748a;border-radius:2px}.experience-legend i.answered{border-color:#27bd94;background:#27bd94}.experience-legend i.current{border-color:#6198ff;background:#6198ff}#submitExperience{width:100%;margin-top:23px;border:0;border-radius:9px;padding:12px;color:#fff;background:var(--orange);font-weight:850}.experience-complete{padding:80px 20px;text-align:center}.experience-complete>span{display:grid;place-items:center;width:68px;height:68px;margin:0 auto 17px;border-radius:50%;color:#fff;background:var(--mint);font-size:28px}.experience-complete h3{font-size:24px}.experience-complete p{color:var(--muted)}.experience-complete button{border:0;border-radius:9px;padding:12px 18px;color:#fff;background:var(--blue);font-weight:800}.experience-guide-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.experience-guide-cards article{padding:19px;border:1px solid #dfe5ed;border-radius:13px}.experience-guide-cards span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:#fff;background:var(--blue);font-size:10px;font-weight:900}.experience-guide-cards strong{display:block;margin:11px 0 5px}.experience-guide-cards p{margin:0;color:var(--muted);font-size:12px}.sitemap-grid{grid-template-columns:repeat(5,1fr)}

.board-footer{display:flex;align-items:center;justify-content:space-between}.board-pagination{display:flex;align-items:center;gap:8px}.board-pagination button{border:1px solid #d6deea;border-radius:7px;padding:7px 10px;color:#526076;background:#fff;font-size:11px}.board-pagination button:disabled{opacity:.4;cursor:not-allowed}.board-pagination span{color:#6b778a;font-size:11px}.home-notice .pinned{display:inline-block;margin-right:5px;padding:2px 6px;border-radius:8px;color:#fff;background:var(--blue);font-size:9px}

/* Access modal */
.access-layer{position:fixed;z-index:80;inset:0;display:grid;place-items:center;padding:20px}
.access-backdrop{position:absolute;inset:0;background:rgba(10,21,43,.74);backdrop-filter:blur(4px)}
.access-card{position:relative;width:min(560px,100%);max-height:92vh;overflow:auto;border-radius:24px;padding:38px;background:#fff;box-shadow:var(--shadow)}
.access-close{position:absolute;right:18px;top:14px;border:0;background:none;font-size:30px;color:#657084}
.access-card h2{margin:0;font-size:29px;letter-spacing:-.04em}
.login-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:25px 0 20px;padding:5px;border-radius:13px;background:#f0f3f8}
.login-tab{border:0;border-radius:9px;padding:11px 4px;color:#68748a;background:transparent;font-size:13px;font-weight:750}
.login-tab.active{color:#fff;background:var(--navy)}
.login-form{display:none}.login-form.active{display:block}
.login-form label,.dialog label{display:flex;flex-direction:column;gap:7px;margin:13px 0;color:#465269;font-size:13px;font-weight:700}
input,select,textarea{width:100%;border:1px solid #ccd5e2;border-radius:9px;padding:11px 12px;color:#1c2940;background:#fff}
textarea{min-height:100px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--blue);outline:3px solid rgba(36,107,243,.1)}
.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.direct-panel h2{margin:12px 0 5px}.direct-panel .identity-box{padding:16px;border-radius:13px;background:#f4f7fc}
.link-button{border:0;padding:0;color:var(--blue);background:none;font-weight:750}
.assessment-list{display:grid;gap:12px;margin-top:22px}
.assessment-card{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:15px;padding:17px}
.assessment-card small,.assessment-card p{display:block;margin:3px 0;color:var(--muted)}
.assessment-card button{border:0;border-radius:10px;padding:11px 16px;color:#fff;background:var(--blue);font-weight:750}
.assessment-card button[disabled]{color:#7a869b;background:#e6ebf2;cursor:not-allowed}
.assessment-state{display:inline-block;padding:3px 8px;border-radius:10px;color:#18634f;background:#dcf8ef;font-size:11px;font-weight:800}

/* Assessment runner */
.runner{height:100vh;overflow:hidden;background:#e9edf3}
.runner-header{height:78px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;color:#fff;background:var(--navy)}
.runner-brand,.runner-actions{display:flex;align-items:center;gap:13px}.runner-brand>div{display:flex;flex-direction:column}
.runner-brand small{color:#b8c3d5}.runner-logo{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#2b7fff,#1dc8ea);font-weight:900}
.save-state{display:flex;align-items:center;gap:7px;color:#c7d0df;font-size:12px}.save-state span{width:8px;height:8px;border-radius:50%;background:#3ed6a0}.save-state.saving span{background:#ffb74d;animation:pulse 1s infinite}.save-state.error span{background:#ff646a}
.timer{height:56px;min-width:122px;padding:8px 18px;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:9px;background:#263650}.timer small{color:#bdc7d8}.timer strong{font-size:22px;color:#ffb35f;font-variant-numeric:tabular-nums}
.runner-tool{height:40px;border:1px solid #58657b;border-radius:8px;padding:0 12px;color:#fff;background:transparent}.runner-tool:hover,.runner-tool:focus-visible{border-color:#7aa8ff;background:#263650}
.runner-exit{height:40px;border:1px solid #58657b;border-radius:8px;padding:0 15px;color:#fff;background:transparent}
.runner-layout{height:calc(100vh - 78px);display:grid;grid-template-columns:minmax(0,1fr) 286px}
.question-stage{min-width:0;display:grid;grid-template-rows:48px minmax(0,1fr) 76px}
.stage-toolbar{padding:0 24px;display:flex;align-items:center;justify-content:space-between;color:#606d83;background:#f7f9fb;border-bottom:1px solid #d8dee8}
.stage-toolbar span{font-weight:800}.stage-toolbar button{display:none;border:0;color:var(--blue);background:none;font-weight:750}
.question-paper{width:min(920px,calc(100% - 48px));height:calc(100% - 34px);margin:17px auto;padding:38px 48px;overflow:auto;border:1px solid #d9dfe8;border-radius:5px;background:#fff;box-shadow:0 8px 24px rgba(30,45,70,.07)}
.question-heading{display:grid;grid-template-columns:46px 1fr;gap:15px;align-items:start}
.question-number{display:grid;place-items:center;min-width:42px;width:auto;height:42px;padding:0 12px;border-radius:999px;color:#fff;background:var(--blue);font-weight:850;font-size:18px;line-height:1;white-space:nowrap}
.question-heading{grid-template-columns:auto 1fr}
.question-number.long{font-size:14px;letter-spacing:-.02em}
.question-number.longer{font-size:12.5px}
.question-prompt{font-size:21px;line-height:1.75;letter-spacing:-.02em}
.question-prompt b{font-weight:850}.question-prompt u{text-underline-offset:4px;text-decoration-thickness:2px}
.math-frac{display:inline-flex;flex-direction:column;vertical-align:middle;min-width:1.5em;margin:0 .12em;text-align:center;line-height:1.05}.math-frac>span:first-child{padding:0 .12em;border-bottom:1px solid currentColor}.math-frac>span:last-child{padding:0 .12em}
.question-material{margin:24px 0 18px;padding:22px;border-radius:8px;background:#f8fafc;text-align:center}
.question-material:empty{display:none}
.question-figure{margin:0}.question-figure img{display:block;max-width:100%;max-height:340px;margin:auto;object-fit:contain}
.question-table-wrap{overflow:auto;margin-bottom:18px}.question-table{width:auto;min-width:520px;margin:auto;border-collapse:collapse;background:#fff;font-size:17px}.question-table th,.question-table td{border:1px solid #77839a;padding:11px 16px;text-align:center;line-height:1.6;font-size:17px}.question-table thead th{background:#eef2f8;font-weight:800;color:#16233a;border-bottom:2px solid #59657c}.question-table tbody th{background:#f4f7fb;font-weight:750;color:#16233a}.question-table.row-head tbody th{text-align:center;white-space:nowrap;border-right:2px solid #59657c}.question-table tbody td{font-variant-numeric:tabular-nums}
.option-list{display:grid;gap:11px;margin-top:25px}
.option{position:relative;display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:start;border:1px solid #d8dfe9;border-radius:9px;padding:14px 16px;background:#fff;cursor:pointer}
.option:hover{border-color:#8ab2ff;background:#f8fbff}.option.selected{border-color:var(--blue);background:#f1f6ff;box-shadow:0 0 0 1px var(--blue)}
.option input{position:absolute;opacity:0;pointer-events:none}.option-key{display:grid;place-items:center;width:28px;height:28px;border:1px solid #aeb8c8;border-radius:50%;font-weight:750;color:#5e6a80}.option.selected .option-key{border-color:var(--blue);color:#fff;background:var(--blue)}
.option-text{padding-top:2px;font-size:17px;line-height:1.65}
.text-answer{margin:30px 0 0;padding:24px;border-radius:10px;background:#f6f8fc}.text-answer label{display:block;margin-bottom:10px;font-weight:800}.text-answer input{display:inline-block;max-width:100%;font-size:18px}
.text-answer .input-help{display:block;margin-top:8px;color:var(--muted);font-size:12px}
.math-answer-button{min-width:112px;min-height:54px;padding:8px 18px;border:1px dashed #8e9aae;border-radius:4px;color:#1f2a3b;background:#fff;font-size:18px}.math-answer-button:hover,.math-answer-button:focus-visible{border-style:solid;border-color:var(--blue);box-shadow:0 0 0 3px rgba(36,107,243,.12)}.math-answer-button.empty{color:#768399;font-size:13px}.math-answer-value{display:inline-flex;align-items:center;gap:7px}.math-answer-value .whole{font-weight:750}.math-answer-value .fraction{display:inline-grid;grid-template-rows:auto 1px auto;min-width:28px;text-align:center;line-height:1.15}.math-answer-value .fraction i{height:1px;background:currentColor}.math-answer-value .fraction span{padding:1px 5px}
.runner-footer{padding:0 24px;display:flex;align-items:center;justify-content:center;gap:12px;border-top:1px solid #d8dee8;background:#f7f9fb}.runner-nav{min-width:150px}
.question-aside{padding:22px 18px;overflow:auto;color:#fff;background:#1b2a43}
.aside-handle{display:none}.aside-head{display:flex;align-items:center;justify-content:space-between}.aside-head div{display:flex;flex-direction:column}.aside-head small{color:#8293ad;font-size:10px;font-weight:850;letter-spacing:.14em}.aside-head strong{font-size:19px}.aside-head button{display:none;border:0;color:#fff;background:none;font-size:25px}
.legend{display:flex;gap:12px;margin:20px 0 16px;color:#aeb9cb;font-size:11px}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:10px;height:10px;border:1px solid #65748a;border-radius:3px}.legend i.answered{border-color:#34cda4;background:#34cda4}.legend i.current{border-color:#4d8cff;background:#4d8cff}
.question-nav{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.question-nav button{aspect-ratio:1;border:1px solid #526078;border-radius:7px;color:#d7ddea;background:#26364f;font-size:13px;font-weight:750}.question-nav button.answered{border-color:#29bd95;color:#fff;background:#16775f}.question-nav button.current{border-color:#5f97ff;box-shadow:0 0 0 2px #5f97ff;background:#2b69da}.question-nav button.missing{border-color:#ff746f;color:#ffd5d3}
.missing-note{margin-top:15px;padding:10px;border-radius:8px;color:#ffd1cf;background:rgba(229,72,77,.16);font-size:12px}.submit-button{width:100%;height:46px;margin-top:20px;border:0;border-radius:9px;color:#fff;background:var(--orange);font-weight:850}
.runner-complete{padding:70px 20px;text-align:center}.runner-complete .complete-icon{display:grid;place-items:center;width:74px;height:74px;margin:0 auto 20px;border-radius:50%;color:#fff;background:#24b88f;font-size:36px}.runner-complete h2{font-size:27px}.runner-complete p{color:var(--muted)}

/* Admin */
.app{min-height:100vh;display:grid;grid-template-columns:254px 1fr;background:#f2f5f9}
body.role-school .internal-only{display:none!important}
.sidebar{position:sticky;top:0;height:100vh;padding:22px 14px;display:flex;flex-direction:column;color:#dfe7f4;background:var(--navy)}
.side-brand{display:flex;align-items:center;gap:10px;padding:4px 8px 25px}.side-brand>span{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;color:#fff;background:linear-gradient(135deg,var(--blue),var(--cyan));font-weight:900}.side-brand div{display:flex;flex-direction:column}.side-brand strong{font-size:14px}.side-brand small{color:#8998b0;font-size:11px}
.sidebar nav{display:grid;gap:5px}.nav-item{position:relative;width:100%;height:47px;padding:0 12px;display:flex;align-items:center;gap:11px;border:0;border-radius:10px;color:#aeb9cb;background:transparent;font-weight:700;text-align:left}.nav-item>span{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:#263650;font-size:12px}.nav-item:hover,.nav-item.active{color:#fff;background:#263650}.nav-item.active:before{content:"";position:absolute;left:0;width:3px;height:23px;border-radius:4px;background:#54a1ff}.nav-badge{margin-left:auto;padding:1px 7px;border-radius:10px;color:#fff;background:var(--danger);font-size:10px;font-style:normal}
.side-footer{margin-top:auto;padding:16px 10px;display:flex;flex-direction:column;border-top:1px solid #2c3b54}.side-footer small{color:#8492a8}.side-footer button{margin-top:10px;border:1px solid #45546b;border-radius:7px;padding:7px;color:#dce4ef;background:transparent}
.workspace{min-width:0;position:relative}.topbar{height:86px;padding:0 28px;display:flex;align-items:center;gap:14px;border-bottom:1px solid #e0e5ed;background:#fff}.topbar>div{margin-right:auto}.topbar h2{margin:0;font-size:24px}.topbar p{margin:2px 0 0;color:#8792a4;font-size:12px}.menu-button{display:none;border:0;background:none;font-size:24px}
.view{display:none;padding:26px}.view.active{display:block}
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.summary-card{position:relative;min-height:118px;padding:21px;border:1px solid #e0e6ef;border-radius:15px;background:#fff}.summary-card small{display:block;color:#7a8799;font-weight:700}.summary-card strong{display:block;margin-top:5px;font-size:29px}.summary-card em{position:absolute;right:16px;top:17px;display:grid;place-items:center;width:39px;height:39px;border-radius:12px;color:var(--blue);background:#eaf2ff;font-style:normal}
.panel{margin-bottom:18px;padding:21px;border:1px solid #e0e6ef;border-radius:15px;background:#fff}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.panel-head h3{margin:0;font-size:18px}.panel-head p{margin:3px 0;color:var(--muted);font-size:13px}.panel-head>span{color:#8590a1;font-size:12px}
.dashboard-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.progress-row{display:grid;grid-template-columns:90px 1fr 70px;gap:12px;align-items:center;margin:15px 0}.progress-track{height:9px;border-radius:5px;background:#e8edf4;overflow:hidden}.progress-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--cyan))}
.stack-list,.notice-list,.inquiry-list{display:grid;gap:9px}.stack-item,.notice-item,.inquiry-item{padding:13px;border:1px solid #e2e7ef;border-radius:10px}.stack-item strong,.notice-item strong,.inquiry-item strong{display:block}.stack-item small,.notice-item small,.inquiry-item small{color:#8791a1}.notice-item p,.inquiry-item p{white-space:pre-wrap}.item-actions{display:flex;gap:6px;margin-top:9px}.item-actions button,.table-action{border:1px solid #cad3e1;border-radius:7px;padding:6px 9px;color:#3b4a62;background:#fff;font-size:12px}.item-actions .danger,.table-action.danger{color:var(--danger)}
.toolbar{margin-bottom:15px;display:flex;justify-content:space-between;gap:12px}.toolbar>input{max-width:340px}.toolbar-fields{display:flex;gap:8px;flex-wrap:wrap}.toolbar-fields input,.toolbar-fields select{width:auto;min-width:165px}.toolbar-actions{display:flex;gap:8px}
.table-panel{padding:0;overflow:hidden}.table-panel .panel-head{padding:19px 20px 0}.table-wrap{max-width:100%;overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:12px 14px;border-bottom:1px solid #e5e9f0;text-align:left;font-size:13px}th{color:#68748a;background:#f8fafc;font-size:12px}tbody tr:hover{background:#f9fbff}
.table-actions{display:flex;gap:6px}.name-cell{font-weight:700}.copy-cell code{display:inline-block;max-width:220px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.empty{padding:28px;text-align:center;color:#8792a4}.danger{border:1px solid #f1c7c9!important;color:var(--danger)!important;background:#fff!important}.pin,.inactive-label{display:inline-block;margin-right:6px;padding:2px 6px;border-radius:8px;color:#725400;background:#fff0b7;font-size:10px}.inactive-label{margin-left:6px;color:#667085;background:#edf0f5}.reply-box{margin-top:10px;padding:12px;border-radius:9px;background:#f5f8fc}.reply-editor{display:grid;gap:8px;margin-top:10px}.inquiry-item header{display:flex;align-items:start;justify-content:space-between;gap:10px}.inquiry-meta{display:block;color:#8792a4;font-size:11px}.notice-actions{display:flex;gap:6px}.audio-player{margin:22px 0}.audio-player audio{width:100%}
.status{display:inline-flex;padding:4px 8px;border-radius:12px;background:#eef2f7;font-size:11px;font-weight:800}.status.complete{color:#12785c;background:#dff8ef}.status.doing{color:#155ec7;background:#e5f0ff}.status.expired{color:#a63b40;background:#ffebeb}.status.ready{color:#725400;background:#fff4cc}
.link-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.link-card{padding:14px;border-radius:10px;background:#f5f8fd}.link-card code{display:block;margin:7px 0;overflow:hidden;text-overflow:ellipsis;color:#596579}.link-card button{border:0;padding:0;color:var(--blue);background:none;font-weight:750}
.inline-form{display:grid;gap:10px}.check-label{flex-direction:row!important;align-items:center!important}.check-label input{width:auto}.text-action{border:0;color:var(--blue);background:none;font-weight:750}.compact-panel{max-width:780px}.password-form{display:grid;grid-template-columns:1fr 1fr auto;gap:9px}
.catalog-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.catalog-card{padding:16px;border:1px solid #e0e6ef;border-radius:12px}.catalog-card header{display:flex;align-items:start;justify-content:space-between}.catalog-card h4{margin:0}.catalog-card p{margin:8px 0 0;color:var(--muted);font-size:12px}.catalog-card .catalog-meta{display:flex;gap:8px;margin-top:12px}.catalog-meta span{padding:4px 8px;border-radius:8px;background:#f0f4fa;font-size:11px;font-weight:750}
.export-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.export-card{min-height:145px;padding:18px;display:flex;flex-direction:column;align-items:flex-start;border:1px solid #dbe3ef;border-radius:13px;text-align:left;background:linear-gradient(145deg,#fff,#f6f9ff)}.export-card:hover{border-color:#8fb5ff;box-shadow:0 8px 24px rgba(36,107,243,.1)}.export-card strong{font-size:15px}.export-card small{margin:8px 0;color:var(--muted)}.export-card span{margin-top:auto;color:var(--blue);font-size:12px;font-weight:800}.export-history{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.export-history h4{margin:0 0 9px}.export-log{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #eef1f5;font-size:12px}.export-log span{color:var(--muted)}
.loading-layer{position:absolute;z-index:30;inset:86px 0 0;display:grid;place-content:center;text-align:center;background:rgba(244,247,251,.75);backdrop-filter:blur(2px)}.loading-layer span{width:36px;height:36px;margin:auto;border:4px solid #dce6f8;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}
.toast{position:fixed;z-index:200;left:50%;bottom:24px;max-width:calc(100% - 32px);padding:11px 17px;border-radius:10px;color:#fff;background:#1b2a43;box-shadow:var(--shadow);transform:translate(-50%,120px);opacity:0;transition:.25s}.toast.show{transform:translate(-50%,0);opacity:1}.toast.error{background:#ad3237}

/* Dialogs */
.dialog{width:min(520px,calc(100% - 24px));max-height:90vh;overflow:auto;border:0;border-radius:16px;padding:24px;box-shadow:var(--shadow)}.dialog::backdrop{background:rgba(13,25,47,.62)}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h3{margin:0}.dialog-head button{border:0;background:none;font-size:26px}.dialog-actions{margin-top:20px;display:flex;justify-content:flex-end;gap:8px}.attempt-dialog{width:min(760px,calc(100% - 24px))}.attempt-answer-list{display:grid;gap:8px}.attempt-answer{padding:11px;border-radius:9px;background:#f5f7fb}.confirm-dialog{text-align:center}.confirm-icon{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 13px;border-radius:50%;color:#fff;background:var(--blue);font-size:28px}.confirm-dialog .dialog-actions{justify-content:center}
.math-input-dialog{width:min(560px,calc(100% - 24px))}.math-input-dialog .dialog-head small{display:block;color:var(--blue);font-size:10px;font-weight:850;letter-spacing:.12em}.math-input-guide{color:var(--muted);font-size:13px}.math-input-preview{min-height:140px;margin:18px 0;padding:22px;display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid #d7dfe9;border-radius:10px;background:#f8fafc}.math-input-preview label{margin:0;text-align:center;color:#657187;font-size:11px}.math-input-preview input{display:block;width:90px;margin-top:5px;text-align:center;font-size:23px;font-weight:750}.math-whole-field input{height:52px}.math-whole-spacer{width:0}.math-fraction-fields{display:grid;grid-template-rows:auto 2px auto;gap:8px}.math-fraction-fields>span{display:block;height:2px;background:#24344e}.math-fraction-fields input{height:45px}.math-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.math-keypad button{height:42px;border:1px solid #d1d9e5;border-radius:7px;background:#fff;font-weight:750}.math-keypad button:hover,.math-keypad button:focus-visible{border-color:#88aef8;background:#f1f6ff}.field-error{margin:10px 0 0;color:var(--danger);font-size:13px}
.preflight-dialog{width:min(680px,calc(100% - 24px))}.preflight-dialog .dialog-head small{display:block;color:var(--blue);font-size:10px;font-weight:850;letter-spacing:.12em}.preflight-identity{margin:18px 0 12px;padding:12px 15px;display:flex;justify-content:space-between;border-radius:9px;background:#eef4ff}.preflight-identity span{color:var(--muted);font-size:12px}.preflight-summary{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px}.preflight-summary>div{padding:13px;border:1px solid var(--line);border-radius:9px}.preflight-summary small,.preflight-summary strong{display:block}.preflight-summary small{color:var(--muted);font-size:11px}.preflight-summary strong{margin-top:4px}.preflight-guide{margin:18px 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:9px;list-style:none;counter-reset:preflight}.preflight-guide li{counter-increment:preflight;position:relative;padding:13px 13px 13px 42px;border-radius:9px;background:#f7f9fc}.preflight-guide li:before{content:counter(preflight);position:absolute;left:13px;top:13px;display:grid;place-items:center;width:21px;height:21px;border-radius:50%;color:#fff;background:var(--blue);font-size:11px;font-weight:800}.preflight-guide strong,.preflight-guide span{display:block}.preflight-guide span{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45}.preflight-consent{flex-direction:row!important;align-items:center!important;padding:13px;border:1px solid #cbd7e8;border-radius:9px;background:#fff}.preflight-consent input{width:auto;margin-right:8px}

@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.35}}
@media(max-width:1000px){
	.portal-header nav{display:none}.hero{min-height:500px;border-radius:0}.hero-copy{padding-left:5%;width:58%}.hero h1{font-size:39px}
	.summary-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}
	.runner-layout{grid-template-columns:1fr}.stage-toolbar button{display:block}
	.question-aside{position:fixed;z-index:55;left:0;right:0;bottom:0;max-height:72vh;border-radius:20px 20px 0 0;box-shadow:0 -16px 45px rgba(4,14,32,.3);transform:translateY(105%);transition:transform .25s}.question-aside.open{transform:translateY(0)}.aside-handle{display:block;width:44px;height:4px;margin:-10px auto 14px;border-radius:3px;background:#687990}.aside-head button{display:block}.question-nav{grid-template-columns:repeat(8,1fr)}.nav-backdrop{position:fixed;z-index:50;inset:78px 0 0;background:rgba(7,17,35,.55)}.nav-backdrop:not(.hidden){display:block!important}
}
@media(max-width:760px){
	.portal-header{height:70px;padding:0 17px}.portal-logo strong{font-size:15px}.portal-logo small{display:none}.logo-mark{width:34px;height:34px}.portal-admin-link{padding:9px 14px}
	.hero{min-height:580px}.hero-art{object-position:62% center}.hero:after{background:linear-gradient(180deg,rgba(4,24,90,.82),rgba(4,24,90,.18) 72%)}.hero-copy{width:100%;padding:54px 25px}.hero h1{font-size:35px}.hero-copy>p:not(.hero-kicker){font-size:15px}.hero-copy br{display:none}
	.quick-section{margin:48px auto;padding:0 18px}.quick-grid{grid-template-columns:1fr}.guide-strip{margin:0 18px 45px;padding:25px;grid-template-columns:1fr}.guide-strip i{display:none}.portal-footer{flex-direction:column;gap:3px;text-align:center}
	.access-card{padding:30px 19px}.login-tabs{grid-template-columns:1fr}.field-pair{grid-template-columns:1fr}.preflight-summary{grid-template-columns:1fr 1fr}.preflight-summary>div:first-child{grid-column:1/-1}.preflight-guide{grid-template-columns:1fr}
	.runner-header{height:68px;padding:0 12px}.runner-logo{width:35px;height:35px}.runner-brand strong{max-width:145px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runner-brand small,.save-state{display:none}.runner-tool{width:38px;padding:0}.runner-tool span{display:none}.timer{height:48px;min-width:93px;padding:5px 10px;gap:5px}.timer small{font-size:10px}.timer strong{font-size:17px}.runner-exit{padding:0 9px}
	.runner-layout{height:calc(100vh - 68px)}.question-stage{grid-template-rows:42px minmax(0,1fr) 66px}.question-paper{width:100%;height:100%;margin:0;border:0;border-radius:0;padding:24px 17px}.question-heading{grid-template-columns:38px 1fr;gap:10px}.question-number{width:35px;height:35px;font-size:15px}.question-prompt{font-size:17px;line-height:1.7}.question-material{margin:18px 0 15px;padding:13px}.option-list{gap:9px}.option{grid-template-columns:29px 1fr;padding:12px 11px}.option-text{font-size:15px}.runner-footer{padding:0 10px}.runner-nav{min-width:0;flex:1}.question-nav{grid-template-columns:repeat(6,1fr)}
	.app{grid-template-columns:1fr}.sidebar{position:fixed;z-index:50;left:0;width:254px;transform:translateX(-102%);transition:.22s}.sidebar.open{transform:none}.menu-button{display:block}.topbar{height:76px;padding:0 16px}.topbar .secondary{padding:0 10px}.view{padding:15px}.summary-grid{grid-template-columns:1fr 1fr;gap:10px}.summary-card{min-height:105px;padding:16px}.summary-card strong{font-size:24px}.toolbar{align-items:stretch;flex-direction:column}.toolbar>input{max-width:none}.toolbar-fields{display:grid;grid-template-columns:1fr}.toolbar-fields input,.toolbar-fields select{width:100%}.link-grid,.catalog-grid,.export-grid{grid-template-columns:1fr}.password-form{grid-template-columns:1fr}.panel{padding:16px}.table-panel{padding:0}.portal-footer{font-size:11px}.toolbar-actions{display:grid;grid-template-columns:1fr 1fr}
}
@media(max-width:380px){.summary-grid{grid-template-columns:1fr}.question-nav{grid-template-columns:repeat(5,1fr)}.runner-brand strong{max-width:110px}.timer small{display:none}.timer{min-width:61px}.hero h1{font-size:31px}}
@media(max-width:480px){.runner-actions{gap:5px}.runner-brand{min-width:0;gap:6px}.runner-brand strong{max-width:68px}.runner-tool{width:34px;height:36px}.runner-exit{width:34px;height:36px;padding:0;font-size:0}.runner-exit:after{content:"×";font-size:20px}.timer{min-width:61px;padding:4px 6px}.timer small{display:none}.math-input-dialog{padding:18px}.math-input-preview{padding:16px 8px}.math-input-preview input{width:75px}.dialog-actions{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

/* Public portal responsive overrides */
.experience-nav-buttons button.missing{border-color:#ff746f;color:#ffd3d1;background:#773944}
@media(max-width:1180px){.portal-header-main{gap:16px}.portal-gnb{gap:0}.portal-gnb button{padding:0 13px}.portal-gnb button:after{left:13px;right:13px}.service-grid{grid-template-columns:repeat(2,1fr)}.service-card{min-height:210px}.schedule-section{margin-left:24px;margin-right:24px}.sitemap-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1000px){
	.portal-header{height:auto;max-width:none;margin:0;padding:0}.portal-header nav{display:flex}.portal-header-main{height:78px}.portal-menu-button{display:block;order:3}.portal-join-button{order:2}.portal-gnb{position:absolute;z-index:50;left:0;right:0;top:120px;height:auto;padding:12px 24px;display:none!important;grid-template-columns:repeat(5,1fr);gap:5px;background:#fff;box-shadow:0 15px 30px rgba(9,22,47,.14)}.portal-gnb.open{display:grid!important}.portal-gnb button{height:52px;border-radius:8px;padding:0 8px}.portal-gnb button:after{display:none}.portal-gnb button.active{background:#eef4ff}.portal-nav-backdrop{inset:112px 0 0}.portal-hero{height:530px;border-radius:0}.hero-slide-copy{width:68%;padding-left:5%}.hero-slide-copy h1,.hero-slide-copy h2{font-size:41px}.hero-controls{left:5%}.schedule-section{grid-template-columns:1fr}.schedule-summary{padding:27px}.schedule-timeline{grid-template-columns:repeat(2,1fr)}.research-features{grid-template-columns:1fr;gap:25px}.sub-layout{grid-template-columns:1fr;gap:25px}.sub-sidebar{position:static;grid-template-columns:repeat(4,1fr);border:0}.sub-sidebar strong{grid-column:1/-1;border-top:3px solid var(--navy)}.sub-sidebar a{border:1px solid #e0e5ed}.participation-grid{grid-template-columns:1fr}.participation-grid ul{min-height:0}.preparation-check ol{grid-template-columns:1fr 1fr}.function-grid{grid-template-columns:1fr 1fr}.experience-workspace{grid-template-columns:1fr}.experience-progress button{display:block}#experienceNav{display:none;position:fixed;z-index:75;left:15px;right:15px;bottom:15px;max-height:70vh;overflow:auto;border-radius:18px;box-shadow:0 15px 60px rgba(5,15,35,.45)}#experienceNav.open{display:block}.experience-nav-buttons{grid-template-columns:repeat(8,1fr)}.experience-guide-cards{grid-template-columns:1fr 1fr}.footer-inner{grid-template-columns:1fr 1fr}.footer-support{grid-column:2}.sitemap-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:760px){
	.portal-header{height:auto;padding:0}.portal-utility{display:none}.portal-header-main{height:70px;padding:0 16px}.portal-logo strong{font-size:15px}.portal-logo small{display:none}.logo-mark{width:36px;height:36px}.portal-join-button{display:none}.portal-menu-button{margin-left:auto}.portal-gnb{top:70px;padding:10px 14px;grid-template-columns:1fr}.portal-nav-backdrop{inset:70px 0 0}.portal-hero{height:560px}.hero-slide>img{object-position:62% center}.hero-slide:after{background:linear-gradient(180deg,rgba(4,24,90,.88),rgba(4,30,106,.23) 78%)}.hero-slide-copy{width:100%;padding:60px 22px}.hero-slide-copy h1,.hero-slide-copy h2{font-size:34px}.hero-slide-copy>span{font-size:15px}.hero-slide-copy br{display:none}.hero-controls{left:22px;bottom:28px}.portal-section{padding-left:17px;padding-right:17px}.service-section{padding-top:52px;padding-bottom:50px}.portal-section-heading h2{font-size:27px}.service-grid{grid-template-columns:1fr}.schedule-section{margin:0 17px 50px}.schedule-timeline{grid-template-columns:1fr;padding:22px}.participate-banner{margin:0 17px 50px;padding:30px;display:block}.participate-banner h2{font-size:26px}.participate-banner button{margin-top:22px}.home-board{grid-template-columns:1fr;margin-bottom:50px}.research-features{margin:0 17px 55px;padding:28px}.research-features h2{font-size:27px}.sub-visual{min-height:235px;padding:0 18px}.sub-visual nav{margin-bottom:21px}.sub-visual h1{font-size:34px}.sub-visual>div>span{font-size:13px}.sub-layout,.single-content{padding:42px 17px 65px}.sub-sidebar{grid-template-columns:1fr 1fr}.content-section{padding-bottom:48px}.content-section+.content-section{padding-top:42px}.content-section.tinted{margin-left:0;margin-right:0;padding:29px 18px}.content-section h2,.single-content h2{font-size:26px}.purpose-grid{grid-template-columns:1fr}.process-list li{grid-template-columns:1fr;gap:5px;padding-left:27px}.process-list li:before{left:7px}.process-list li:after{left:1px}.process-list div{padding-left:0}.safety-section{grid-template-columns:1fr}.target-table{min-width:700px}.participation-grid>article{padding:23px}.assessment-status,.preparation-check{padding:25px 18px}.status-cards,.preparation-check ol{grid-template-columns:1fr}.experience-callout{display:block;padding:27px 22px}.experience-callout button{margin-top:20px}.function-grid,.trouble-grid{grid-template-columns:1fr}.fraction-guide{grid-template-columns:1fr;padding:20px}.support-callout,.contact-section{align-items:flex-start;flex-direction:column;gap:18px}.content-heading{align-items:stretch;flex-direction:column}.board-search{width:100%}.community-content{gap:50px}.sitemap-grid{grid-template-columns:1fr}.experience-setup{padding:25px 17px}.experience-type-grid,.experience-options{grid-template-columns:1fr}.experience-runner>header{align-items:flex-start;flex-direction:column;gap:14px}.experience-tools{width:100%;justify-content:space-between;flex-wrap:wrap}.experience-workspace{min-height:520px}.experience-question{width:100%;min-height:390px;margin:0;border:0;border-radius:0;padding:24px 17px}.experience-question-area{grid-template-rows:43px minmax(0,1fr) 66px}.experience-question-area>footer{padding:0 9px}.experience-question-area>footer button{min-width:0;flex:1}.experience-guide-cards{grid-template-columns:1fr}.experience-nav-buttons{grid-template-columns:repeat(5,1fr)}.footer-inner{grid-template-columns:1fr}.footer-support{grid-column:auto}.footer-links>button{padding:5px 9px}.footer-links>button:first-child{padding-left:0}.portal-footer{text-align:left}.access-card{padding:30px 19px}.login-tabs{grid-template-columns:1fr}.field-pair{grid-template-columns:1fr}
}
@media(max-width:420px){.hero-slide-copy h1,.hero-slide-copy h2{font-size:30px}.sub-sidebar{grid-template-columns:1fr}.experience-tools>span{display:none}.experience-question .demo-heading{grid-template-columns:35px 1fr}.experience-question .demo-prompt{font-size:17px}.experience-question .demo-fraction input{width:76px}}

/* Keep visually-hidden demo radios from inheriting the global full-width input rule. */
.experience-question .demo-option input{width:1px;height:1px;margin:0;overflow:hidden;pointer-events:none}

/* Detailed portal links keep their route, highlight the current section, and land with breathing room. */
.sub-sidebar a.active,.sub-sidebar a[aria-current="location"]{color:var(--blue);background:#eef4ff;font-weight:850;box-shadow:inset 3px 0 0 var(--blue)}
.notice-section,.faq-section,.experience-setup{scroll-margin-top:24px}

/* Keep callout copy and actions visually separated at every responsive width. */
.participate-banner,.experience-callout,.support-callout,.contact-section{column-gap:clamp(28px,4vw,54px)}
.participate-banner>div,.experience-callout>div,.support-callout>div,.contact-section>div{min-width:0;flex:1 1 auto}
.participate-banner>button,.experience-callout>button,.support-callout>button,.contact-section>button{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;min-height:52px;padding:13px 20px;white-space:nowrap}
.community-content{min-width:0;grid-template-columns:minmax(0,1fr)}
.contact-section{min-width:0}
.contact-section{width:100%}
.contact-section>button{min-width:205px}

@media(max-width:760px){
	.contact-section{padding:28px 22px}
	.participate-banner>button,.experience-callout>button,.support-callout>button,.contact-section>button{width:100%;min-width:0}
}

/* 마지막 문항 하단 버튼: 오른쪽 답안 제출과 동일한 주황색 */
.runner-nav.submit-mode{border:1px solid var(--orange);color:#fff;background:var(--orange);font-weight:850}
.runner-nav.submit-mode:hover{background:#f57a1f;border-color:#f57a1f}

/* 화면 확대·낮은 창에서 보기가 잘려 안 보이는 문제 대응 */
.question-stage{position:relative}
.question-paper{scroll-padding-bottom:24px;overscroll-behavior:contain}
.scroll-more{position:absolute;left:0;right:0;bottom:76px;height:56px;display:none;align-items:flex-end;justify-content:center;padding-bottom:8px;pointer-events:none;z-index:4;background:linear-gradient(180deg,rgba(247,249,251,0) 0%,rgba(247,249,251,.92) 70%,rgba(247,249,251,1) 100%)}
.question-stage.has-more .scroll-more{display:flex}
.scroll-more span{padding:5px 14px;border-radius:999px;border:1px solid #cfd8e5;background:#fff;color:#3a4a63;font-size:13px;font-weight:750;box-shadow:0 4px 12px rgba(30,45,70,.12)}
@media (max-height:820px){
	.question-paper{height:calc(100% - 16px);margin:8px auto;padding:22px 28px}
	.question-material{margin:15px 0 13px;padding:13px}
	.option-list{margin-top:16px;gap:8px}
	.scroll-more{bottom:76px}
}
@media (max-height:660px){
	.runner-header{height:60px}
	.runner-layout{height:calc(100vh - 60px)}
	.question-stage{grid-template-rows:40px minmax(0,1fr) 62px}
	.question-paper{padding:16px 20px}
	.question-prompt{font-size:16px;line-height:1.6}
	.scroll-more{bottom:62px;height:48px}
}

.question-expression{font-size:1.12em;line-height:1.95;font-weight:650;color:#1f2733}

/* ── 화면 축소·확대 시 문항 카드가 줄지 않아 하단 보기와 버튼이 잘리던 문제 ──
   그리드 항목의 기본 min-height:auto 가 축소를 막아, 카드가 스크롤 대신 늘어나
   푸터가 화면 밖으로 밀려났다. 각 단계에 min-height:0 을 주어 실제로 줄어들게 한다. */
.runner-layout{grid-template-rows:minmax(0,1fr);min-height:0}
.question-stage{min-height:0}
.question-stage>*{min-height:0}
.question-paper{min-height:0;max-height:100%}
.question-aside{min-height:0}

/* 주관식 답 입력칸 뒤 단위 기호 */
.answer-unit{margin-left:8px;font-size:16px;font-weight:700;color:#1f2733;white-space:nowrap}

/* 선분 표기 (AB 위에 줄) */
.seg{position:relative;display:inline-block;padding-top:.12em;font-style:normal;letter-spacing:.02em}
.seg::before{content:"";position:absolute;left:0;right:0;top:.02em;height:1px;background:currentColor}

/* 문항 안의 수 나열을 이미지 자료처럼 박스에 담아 가운데 정렬 */
.number-set{margin:16px 0 4px;padding:16px 18px;border-radius:8px;background:#f8fafc;text-align:center;font-size:1.1em;line-height:2;font-weight:650;color:#1f2733}
.number-set .unit-note{display:block;margin-top:6px;font-size:.82em;font-weight:500;color:#5b6a80}

/* 학생 대사 (중2 10번) */
.student-say-list{display:flex;flex-direction:column;gap:10px;text-align:left}
.student-say{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid #dde3ec;border-radius:10px;background:#fff}
.student-say figure{margin:0;flex:0 0 62px}
.student-say img{width:62px;height:auto;display:block}
.student-say p{margin:0;font-size:15.5px;line-height:1.7}
.student-say b{margin-right:8px;font-weight:800;color:#1f4f9c}

/* 대화 상자 (중2 22번 등) */
.talk-box{margin:14px 0 0;padding:12px 16px;border:1px solid #cfd8e5;border-radius:10px;background:#fff;text-align:left;line-height:1.85;font-size:15.5px}

/* 문항 본문 안의 제시 상자 (기존 인라인 스타일 통일) */
.q-box{margin:12px 0;padding:12px 16px;border:1px solid #cfd8e5;border-radius:8px;background:#fff;line-height:1.85;text-align:left}
.q-cell{display:inline-block;padding:7px 12px;border:1px solid #cfd8e5;border-radius:6px;background:#fff}

/* 테스트용 링크 표시 */
.test-badge{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:8px;color:#7a4b00;background:#ffe6b8;font-size:10px;font-weight:800}

/* 단어 배열형 문항 */
.arrange-answer{display:flex;flex-direction:column;gap:22px;text-align:left}
.arrange-slot{display:flex;flex-direction:column;gap:8px}
.arrange-label{font-size:15px;font-weight:800;color:#1f4f9c}
.arrange-line{min-height:60px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 14px;border:2px dashed #b9c5d6;border-radius:10px;background:#fff}
.arrange-line.drag-over{border-color:var(--blue);background:#eef5ff}
.arrange-hint{color:#98a4b6;font-size:14px}
.arrange-pool{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;border-radius:10px;background:#eef2f8;min-height:52px}
.arrange-pool.drag-over{outline:2px solid var(--blue)}
.word-chip{padding:9px 15px;border:1px solid #b9c5d6;border-radius:999px;background:#fff;color:#1f2733;font-size:16px;font-weight:650;cursor:grab;line-height:1.4}
.word-chip:hover{border-color:var(--blue);color:var(--blue)}
.arrange-line .word-chip{border-color:var(--blue);color:#12356e;background:#eaf2ff}
.word-chip.dragging{opacity:.45}

/* 내부 미리보기 배지 */
.assessment-state.preview{color:#7a4b00;background:#ffe6b8}

/* 그림 보기: 기본 5열, 좁아지면 4·3·2열 */
.option-list.picture-options{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.option-list.picture-options .option{grid-template-columns:1fr;justify-items:center;text-align:center;padding:12px 8px;gap:8px}
.option-list.picture-options .option-key{margin:0 auto}
.option-list.picture-options .option-text{width:100%}
.option-list.picture-options img{width:100%;height:auto;display:block}
@media (max-width:1180px){.option-list.picture-options{grid-template-columns:repeat(4,1fr)}}
@media (max-width:900px){.option-list.picture-options{grid-template-columns:repeat(3,1fr)}}
@media (max-width:600px){.option-list.picture-options{grid-template-columns:repeat(2,1fr)}}

/* 듣기 전용 선택지(내용이 음원에만 있는 경우) */
.choice-blank{color:#5b6a80;font-weight:650}

/* 여자/남자 메뉴 나란히 */
.menu-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 6px}
.menu-pair figure{margin:0;display:flex;flex-direction:column;gap:8px}
.menu-pair figcaption{order:-1;font-size:15px;font-weight:800;color:#1f4f9c}
.menu-pair img{width:100%;height:auto;border:1px solid #dde3ec;border-radius:8px}
@media (max-width:640px){.menu-pair{grid-template-columns:1fr}}

/* 음원 소진 표시 */
audio[data-used="1"]{opacity:.5}

/* 듣기 전용 보기 아이콘 */
.listen-mark{margin:0;display:flex;justify-content:center}
.listen-mark img{width:64px;height:auto;display:block}

/* 짝지어진 보기 (여자/남자 등) */
.pair-opt{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:6px}
.pair-opt b{padding:2px 8px;border-radius:999px;background:#eef2f8;color:#1f4f9c;font-size:13px;font-weight:800}
.pair-opt i{color:#9aa7ba;font-style:normal;margin:0 2px}

/* 지문 강조 · 가운데 정렬 */
.eng-passage.lg{font-size:19px;font-weight:750;line-height:2}
.eng-passage.center{text-align:center}

/* 빈칸 밑줄 */
.blank{display:inline-block;min-width:120px;border-bottom:2px solid #1f2733;margin:0 4px;vertical-align:baseline}

/* 보기 낱말 상자 */
.word-bank{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;padding:14px 16px;border:2px solid #cfd8e5;border-radius:10px;background:#fff}
.word-bank-title{padding:3px 12px;border-radius:999px;background:#1f4f9c;color:#fff;font-size:13px;font-weight:800}
.bank-word{padding:7px 14px;border:1px solid #cfd8e5;border-radius:8px;background:#f7f9fc;font-size:17px;font-weight:650}

/* 요약문 상자 · 긴 빈칸 */
.eng-passage.summary{background:#f7f9fc;border-style:dashed}
.blank.wide{min-width:190px}

/* 여러 빈칸 입력 */
.blanks-answer{display:flex;flex-direction:column;gap:12px;text-align:left}
.blank-field{display:flex;align-items:center;gap:12px}
.blank-field span{min-width:38px;font-weight:800;color:#1f4f9c}
.blank-input{flex:1;max-width:360px;height:44px;padding:0 14px;border:1px solid #b9c5d6;border-radius:9px;font-size:17px}
.blank-input:focus{border-color:var(--blue);outline:none}

/* 보기 2단 표 (여자/남자) */
.pair-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%}
.pg-cell{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid #e2e7ef;border-radius:8px;background:#fbfcfe}
.pg-cell em{padding:2px 8px;border-radius:999px;background:#eef2f8;color:#1f4f9c;font-style:normal;font-size:12.5px;font-weight:800}
@media (max-width:620px){.pair-grid{grid-template-columns:1fr}}

/* 지문 중간 보기 위치 표시 */
.slot-mark{display:inline-block;min-width:26px;height:26px;line-height:24px;margin:0 4px;border:1px solid var(--blue);border-radius:50%;color:var(--blue);text-align:center;font-size:14px;font-weight:800;background:#fff}

/* 선택지 나열 박스 */
.choice-box{background:#f7f9fc;border-style:dashed}
.choice-box>div{margin:6px 0}

/* 지문 제목 */
.passage-title{margin:0 0 14px;text-align:center;font-size:20px;font-weight:850;color:#16233a}

/* 헤드셋 보기: 모바일에서도 5열 유지 */
.option-list.picture-options.listen-grid{grid-template-columns:repeat(5,1fr)!important}
.option-list.picture-options .listen-mark img{width:min(64px,100%)}

/* 메뉴 이미지 2열 고정 */
.menu-pair.plain{grid-template-columns:1fr 1fr}
.menu-pair.plain figcaption{display:none}
@media (max-width:640px){.menu-pair.plain{grid-template-columns:1fr 1fr}}
/* 인물 그림처럼 내용이 없는 삽화는 작게. 보기까지 스크롤이 길어지지 않게 한다. */
.menu-pair.compact{max-width:320px;margin-left:auto;margin-right:auto;gap:12px}
.menu-pair.compact img{width:auto;max-width:100%;max-height:130px;margin:0 auto}

/* 짧은 빈칸 한 줄 배치 */
.blanks-answer.inline{flex-direction:row;flex-wrap:nowrap;align-items:center;gap:10px}
.blanks-answer.inline .blank-field{flex:1;min-width:0}
.blanks-answer.inline .blank-input{max-width:none;width:100%;height:46px;text-align:center}
.blanks-answer.inline .input-help{display:none}

/* 지문 속 위치 표시 크게 */
.slot-mark{min-width:32px;height:32px;line-height:30px;margin:0 6px;border-width:2px;font-size:16px;vertical-align:middle}

/* 보기 2열 배치 */
.option-list.cols-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* 짧은 빈칸 (단어 하나 분량) */
.blank.short{min-width:74px}

/* 보기 낱말 상자 — 두 줄 형태 */
.word-bank.two-line{display:block;position:relative;padding:22px 18px 16px;text-align:center}
.word-bank.two-line .word-bank-title{position:absolute;top:-13px;left:50%;transform:translateX(-50%)}
.bank-rows div{font-size:18px;font-weight:650;line-height:2}

/* 그림 + 지문 나란히 */
.pic-text-row{display:grid;grid-template-columns:minmax(140px,240px) 1fr;gap:18px;align-items:center}
.pic-text-row figure{margin:0}
.pic-text-row .q-box{margin:0}
@media (max-width:640px){.pic-text-row{grid-template-columns:1fr}}





/* ── 응시 화면 상단 줄바꿈 깨짐 방지 ── */
.runner-header{gap:12px;flex-wrap:nowrap}
.runner-header button,
.save-state,
.save-state strong,
.timer,
.timer small,
.timer strong{white-space:nowrap}

/* 제목은 넘치면 말줄임 */
.runner-brand{min-width:0;flex:1 1 auto}
.runner-brand>div{min-width:0}
.runner-brand strong,
.runner-brand small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 버튼 묶음은 줄어들지 않게 */
.runner-actions{flex:0 0 auto;flex-wrap:nowrap}

/* 남은 시간: 라벨과 숫자를 가로로 */
.timer{flex-direction:row;flex-shrink:0}

/* 폭이 모자라면 버튼 글자를 먼저 접는다 */
@media (max-width:1100px){
	.runner-tool span{display:none}
	.runner-tool{width:40px;padding:0}
	.save-state strong{display:none}
}
@media (max-width:820px){
	.runner-header{padding:0 12px;gap:8px}
	.runner-brand small{display:none}
	.timer{min-width:96px;height:46px;padding:6px 10px;gap:6px}
	.timer small{display:none}
	.timer strong{font-size:19px}
	.runner-exit{padding:0 10px}
}

/* ══ 2026-08-28 검수 반영 ══════════════════════════════════════════════════ */

/* ── 모바일에서 '이전/다음 문항' 버튼이 잘리거나 안 보이던 문제 ──
   iOS 사파리·크롬은 100vh 를 '툴바가 접힌 상태'의 높이로 계산한다. 툴바가 떠 있는
   동안에는 그 높이만큼 화면 아래가 잘려서, 맨 아래 푸터의 버튼이 툴바에 가려졌다.
   실제로 보이는 높이인 100dvh 로 잡고, 홈 인디케이터 영역(safe-area)만큼 푸터에
   여백을 준다. dvh 를 모르는 옛 브라우저는 기존 100vh 규칙을 그대로 쓴다. */
@supports (height:100dvh){
	.runner{height:100dvh}
	.runner-layout{height:calc(100dvh - 78px)}
	@media (max-width:760px){.runner-layout{height:calc(100dvh - 68px)}}
	@media (max-height:660px){.runner-layout{height:calc(100dvh - 60px)}}
}

/* ── 휴대전화 자판이 올라오면 '답안 제출' 단추가 자판에 가리던 문제 ──
   크롬·사파리는 자판이 떠도 100dvh 를 줄이지 않아, 맨 아래 푸터가 자판 뒤로 들어간다.
   보이는 높이(visualViewport)로 가려진 만큼을 --kb 에 담아(trackKeyboard) 그만큼 줄인다.
   자판이 없으면 --kb 는 0 이라 지금 화면과 똑같다. 아래 480px 규칙보다 앞에 있어야 한다. */
@supports (height:100dvh){
	.runner{height:calc(100dvh - var(--kb,0px))}
	.runner-layout{height:calc(100dvh - var(--kb,0px) - 78px)}
	@media (max-width:760px){.runner-layout{height:calc(100dvh - var(--kb,0px) - 68px)}}
	@media (max-height:660px){.runner-layout{height:calc(100dvh - var(--kb,0px) - 60px)}}
}
.runner-footer{padding-bottom:env(safe-area-inset-bottom,0px)}
@media (max-width:760px){
	/* 푸터 높이를 고정하지 않아 안전영역이 있어도 버튼이 눌리지 않는다 */
	.question-stage{grid-template-rows:42px minmax(0,1fr) auto}
	.runner-footer{padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
	.runner-nav{min-height:46px}
}

/* ── 창을 줄이거나 화면을 확대해 세로가 아주 짧아지면 '다음 문항' 버튼이 사라지던 문제 ──
   문항 카드 안쪽 스크롤만으로는 부족해 화면 전체를 스크롤로 바꾼다.
   반드시 위 @supports(100dvh) 규칙보다 뒤에 있어야 한다. 앞에 두면 .runner-layout 높이가
   100dvh 로 다시 고정되고, 그 아래로 밀려난 푸터가 .runner 의 overflow:hidden 에 잘린다. */
@media (max-height:480px){
	body{overflow:auto !important}
	.runner,#runnerView{height:auto;min-height:0;overflow:visible}
	.runner-layout{height:auto;min-height:0;grid-template-rows:auto}
	.question-stage{grid-template-rows:auto auto auto}
	.question-paper{height:auto;max-height:none;margin:8px auto;overflow:visible}
	.question-aside{height:auto}
	.runner-footer{position:sticky;bottom:0;z-index:6;padding-top:8px;padding-bottom:calc(8px + env(safe-area-inset-bottom,0px))}
	.scroll-more{display:none !important}
}

/* ── 수식 표기 ── */
.mv{font-family:"Times New Roman",Times,"Nanum Myeongjo",serif;font-style:italic;font-weight:inherit;letter-spacing:.01em;padding-right:.04em}
.mgap{display:inline-block;width:.24em}
.math-mixed{white-space:nowrap}
.math-mixed>.math-frac{margin-left:.02em;margin-right:.02em}
.number-set{word-spacing:.5em}

/* ── 값이 둘인 보기(㉠·㉡, (가)·(나))를 세로로 줄맞춤 ── */
.opt-cols{display:inline-grid;grid-template-columns:4.6em auto;column-gap:1.1em;justify-content:start;text-align:left}
.opt-cols.wide{grid-template-columns:6.8em auto}

/* ── 표 위 캡션 ── */
.figure-caption{margin:0 0 12px;text-align:center;font-size:1.02em;font-weight:750;color:#1f2733}

/* ── 줄기와 잎 그림: 가로 줄 없이 세로 줄만, 잎은 왼쪽 정렬 ── */
.stem-caption{margin:0 0 2px;text-align:center;font-weight:750;color:#1f2733}
.stem-legend{margin:0 0 8px;text-align:right;font-size:.9em;color:#1f2733}
.question-table.stem-leaf{min-width:0;width:100%}
.question-table.stem-leaf th,.question-table.stem-leaf td{border:0;padding:7px 16px;font-size:17px}
.question-table.stem-leaf thead th{background:#eef2f8;border-bottom:1.5px solid #59657c}
.question-table.stem-leaf tbody tr:last-child td{border-bottom:1.5px solid #59657c}
.question-table.stem-leaf th+th,.question-table.stem-leaf td+td{border-left:1.5px solid #59657c}
.question-table.stem-leaf tbody td:first-child{text-align:center;width:22%}
.question-table.stem-leaf tbody td:last-child{text-align:left;min-width:230px;padding-left:22px;word-spacing:.8em}

/* ── 공통 지문 안내문은 왼쪽 정렬, 홍보문 등은 가운데 정렬 ── */
.shared-passage{text-align:left}
.q-box.center,.eng-passage.center{text-align:center}

/* ── 수식 입력기(π·문자 키패드) ── */
.expr-answer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:6px}
.expr-answer .expr-prefix{font-size:20px;font-weight:700;color:#1f2733}
.expr-button{min-height:52px;padding:0 18px;border:1px solid #b9c5d6;border-radius:9px;background:#fff;color:#1f2733;font-size:20px;font-weight:700;text-align:left}
.expr-button:hover{border-color:var(--blue)}
.expr-button.empty{color:#98a4b6;font-size:15px;font-weight:600}
.expr-input-dialog{width:min(460px,calc(100% - 24px))}
.expr-input-dialog .dialog-head small{display:block;color:var(--blue);font-size:10px;font-weight:850;letter-spacing:.12em}
.expr-display{display:flex;align-items:center;gap:8px;margin:16px 0 14px;padding:14px 16px;border:1px solid #d7dfe9;border-radius:10px;background:#f8fafc}
.expr-display .expr-prefix{font-size:22px;font-weight:700;color:#1f2733}
.expr-display .expr-unit{font-size:17px;font-weight:700;color:#1f2733;white-space:nowrap}
.expr-value{flex:1;min-width:0;height:46px;padding:0 12px;border:1px solid #b9c5d6;border-radius:8px;background:#fff;font-size:22px;font-weight:700;color:#1f2733}
.expr-value:focus{border-color:var(--blue);outline:none}
.expr-keypad{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.expr-keypad button{height:52px;border:1px solid #ccd6e4;border-radius:9px;background:#fff;font-size:20px;font-weight:750;color:#1f2733}
.expr-keypad button:hover{border-color:var(--blue);background:#f3f8ff}
.expr-keypad button:active{background:#e6f0ff}

/* ── 영역 전환 안내 ── */
.section-break-dialog{width:min(420px,calc(100% - 24px));text-align:center}
.section-break-mark{width:56px;height:56px;margin:4px auto 16px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#e8f3ff;color:var(--blue);font-size:27px;font-weight:800}
.section-break-dialog h3{margin:0 0 8px;font-size:21px;letter-spacing:-.03em}
.section-break-dialog p{margin:0 0 22px;color:var(--muted);font-size:16px}
.section-break-dialog .dialog-actions{justify-content:center}

/* ══ 2026-08-28 2차 검수 반영 ══════════════════════════════════════════════ */

/* ── 수 나열: 부호와 숫자가 갈라지지 않고 콤마 뒤에서만 줄이 바뀐다 ── */
.ns-item{display:inline-block;white-space:nowrap}
.number-set{word-spacing:normal}
.number-set .ns-item{margin-right:.45em}

/* ── 표·설명 상자는 화면 폭에 맞추고, 넘치면 그 안에서 가로로 스크롤한다 ── */
.question-table{min-width:0}
.question-table th,.question-table td{padding:9px 12px;font-size:16px}
.question-table.stem-leaf th,.question-table.stem-leaf td{padding:6px 14px;font-size:16px}
.question-table.row-head tbody th{font-size:15.5px;padding:8px 12px}
.question-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.q-box{overflow-x:auto;-webkit-overflow-scrolling:touch}
.question-material{overflow-x:auto;-webkit-overflow-scrolling:touch}
.question-prompt table{max-width:100%}

/* ── 문항 번호 칸 때문에 생기던 들여쓰기 제거 ──
   문두(.question-prompt)는 번호 원 옆 칸에 들어가서, 문두 안에 든 표·설명 상자가
   회색 재료 상자보다 오른쪽으로 밀려 보였다. 번호 칸+간격만큼 왼쪽으로 당겨
   회색 상자와 같은 폭으로 맞춘다. */
.question-prompt>.q-box,
.question-prompt>table,
.question-prompt>.question-table-wrap,
.question-prompt>figure,
.question-prompt>.number-set,
.question-prompt>.word-bank{margin-left:-61px}
@media (max-width:760px){
	.question-prompt>.q-box,
	.question-prompt>table,
	.question-prompt>.question-table-wrap,
	.question-prompt>figure,
	.question-prompt>.number-set,
	.question-prompt>.word-bank{margin-left:-48px}
}

/* ── 수식 입력기: 숫자·연산 칸과 문자 칸 ── */
.expr-keypad{grid-template-columns:repeat(5,1fr)}
.expr-symbols{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:8px}
.expr-symbols button{height:48px;border:1px solid #ccd6e4;border-radius:9px;background:#f8fafc;font-size:21px;color:#1f2733}
.expr-symbols button:hover{border-color:var(--blue);background:#f3f8ff}
.expr-symbols button:active{background:#e6f0ff}
.expr-symbols .mv{font-weight:600}
.expr-value{font-family:"Times New Roman",Times,"Nanum Myeongjo",serif}

/* ── 행 머리글 표는 모바일에서 화면 폭을 꽉 채운다(중2 수학 17번, 초5 수학 24번) ── */
@media (max-width:760px){
	.question-table.row-head{width:100%}
	.question-table.row-head tbody th{white-space:normal;word-break:keep-all}
}

/* ── 초5 영어 25번 답안 줄: 글자를 키우고 밑줄은 짧게(가로 스크롤 방지) ── */
.eng-passage.answer-line .blank{min-width:118px;max-width:100%;border-bottom-width:2px}
@media (max-width:400px){.eng-passage.answer-line .blank{min-width:96px}}

/* ── 어구를 골라 넣는 칸의 문장(B: It's ____)은 크게 보여 준다 ── */
.arrange-slot.pick .arrange-label{font-size:21px;line-height:1.9;letter-spacing:-.01em}
@media (max-width:480px){.arrange-slot.pick .arrange-label{font-size:19px}}

/* ══ 학교 관리자 화면: 교사 일괄 등록 · 안내문 PDF ═══════════════════════ */

.bulk-dialog{width:min(760px,calc(100% - 24px))}
.bulk-dialog .dialog-head small{display:block;color:var(--blue);font-size:10px;font-weight:850;letter-spacing:.12em}
.bulk-tabs{display:flex;gap:8px;margin:4px 0 16px;border-bottom:1px solid #e2e8f1}
.bulk-tab{border:0;padding:10px 14px;background:none;color:#68748a;font-size:14px;font-weight:800;border-bottom:3px solid transparent}
.bulk-tab.active{color:var(--blue);border-bottom-color:var(--blue)}
.bulk-panel{margin-top:4px}
.bulk-help{margin:8px 0 12px;color:var(--muted);font-size:13px;line-height:1.7}
.bulk-count-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.bulk-count-row label{margin:0;font-size:13px;font-weight:800;color:#344057}
.bulk-count-row input{width:110px;height:42px;margin-top:6px;padding:0 12px;border:1px solid #b9c5d6;border-radius:9px;font-size:15px}
.bulk-table-wrap{max-height:320px;overflow:auto;border:1px solid #e2e8f1;border-radius:10px}
.bulk-table{width:100%;border-collapse:collapse;font-size:14px}
.bulk-table th{position:sticky;top:0;z-index:1;padding:10px;background:#f4f7fb;color:#16233a;font-weight:800;border-bottom:1px solid #e2e8f1;text-align:left}
.bulk-table td{padding:6px 8px;border-bottom:1px solid #eef2f7}
.bulk-table td.bulk-no{width:52px;text-align:center;color:#68748a;font-weight:800}
.bulk-table input{width:100%;height:38px;padding:0 10px;border:1px solid #ccd6e4;border-radius:7px;font-size:14px}
.bulk-table input:focus{border-color:var(--blue);outline:none}
#bulkTeacherPaste{width:100%;margin-top:10px;padding:12px;border:1px solid #b9c5d6;border-radius:10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;line-height:1.7;resize:vertical}
#bulkTeacherPaste:focus{border-color:var(--blue);outline:none}

/* 안내문은 그리는 동안만 화면 위에 펼친다.
   PDF 엔진은 CSS 1px 을 1pt 로 그리므로, 종이 크기도 A4 = 595 x 842 로 맞춘다.
   (794px 로 두면 A4 를 넘겨서 잘리거나 빈 장이 나온다) */
.guide-sheet-host{display:none}
.guide-sheet-host.drawing{display:block;position:absolute;left:0;top:0;width:100%;min-height:100vh;z-index:9999;background:#eef1f6;padding:60px 0 40px}
.guide-progress{position:fixed;left:0;right:0;top:0;height:46px;display:flex;align-items:center;justify-content:center;background:var(--navy);color:#fff;font-size:14px;font-weight:800;letter-spacing:-.02em}
.guide-sheets{width:595px;margin:0 auto}
/* 한 장에 다 들어가야 한다. 크기를 모두 --gs 배수(em)로 두어, 넘치면 fitGuideSheets 가 --gs 만 줄인다. */
.guide-sheet{--gs:10.5px;width:595px;height:842px;overflow:hidden;display:flex;flex-direction:column;margin:0 auto 14px;padding:34px 44px;box-sizing:border-box;background:#fff;color:#1b2333;font-family:"Nanum Gothic",sans-serif;font-size:var(--gs);line-height:1.6}
.guide-sheet>*{flex:0 0 auto}
.guide-page-break{height:0}
.guide-sheet h1{margin:0 0 .7em;text-align:center;font-size:1.43em;line-height:1.45;font-weight:800}
.guide-sheet h1 span{display:block;margin-top:.22em;font-size:.84em}
.guide-to{margin:0 0 .78em;font-size:1.05em;font-weight:800}
.guide-body{margin:0 0 .78em;font-size:1em;line-height:1.58;text-align:justify}
.guide-table{width:100%;margin:0 0 .9em;border-collapse:collapse;font-size:1em}
.guide-table th{width:8.8em;padding:.38em .85em;border:1px solid #9aa6ba;background:#f2f5f9;font-weight:800;text-align:center}
.guide-table td{padding:.38em .85em;border:1px solid #9aa6ba}
.guide-alert{margin:-.35em 0 .9em;color:#c8102e;font-size:.96em;font-weight:800;line-height:1.55}
.guide-notice{margin:.8em 0;padding:.6em .95em;border:1px dashed #9aa6ba;font-size:.96em;line-height:1.5;text-align:center}
.guide-access{display:flex;gap:1.33em;align-items:flex-start;padding:1em;border:1px solid #9aa6ba}
.guide-qr{width:10.67em;text-align:center;flex:0 0 auto}
.guide-qr img{display:block;width:10.67em;height:10.67em}
.guide-qr small{display:block;margin-top:.5em;font-size:.86em;font-weight:800}
.guide-access-body{flex:1;min-width:0;font-size:.96em;line-height:1.55}
.guide-access-body strong{display:block;margin-bottom:.36em;font-size:1.1em}
.guide-access-body p{margin:0 0 .42em}
.guide-fallback-title{font-weight:800}
.guide-note{color:#1f4f9c;font-weight:800}
.guide-sign{margin:.9em 0 0;padding-top:.2em;text-align:center;font-size:1.05em;line-height:1.6;margin-top:auto}
.guide-sign b{font-size:1.14em}

/* PDF 로 심을 한글 글꼴(안내문에서만 쓰인다) */
@font-face{font-family:"Nanum Gothic";src:url("/include/font/NanumGothic.ttf") format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Nanum Gothic";src:url("/include/font/NanumGothicBold.ttf") format("truetype");font-weight:700;font-display:swap}

/* ── 예비검사 자유 등록 화면 ── */
.open-entry .login-tabs{display:none}
.open-intro{margin:0 0 16px;padding:12px 14px;border-radius:9px;background:#eef4ff;color:#1f4f9c;font-size:13.5px;line-height:1.8}
.field-optional,.field-required{margin-left:6px;padding:2px 7px;border-radius:999px;font-size:10.5px;font-weight:800;vertical-align:middle}
.field-optional{background:#eef2f8;color:#68748a}
.field-required{background:#ffeaea;color:#c0392b}

/* ── 빈칸 안에 (A) 같은 표시가 들어가는 경우 ── */
.blank{text-align:center}
.row-note{display:block;margin-top:2px;color:#68748a;font-size:11.5px;font-weight:600}

/* ══ 검사·설문 현황 화면 ═══════════════════════════════════════════════════ */
.progress-table{width:100%;border-collapse:collapse;font-size:14px}
.progress-table th{padding:11px 12px;border-bottom:1px solid #e2e8f1;background:#f7f9fc;color:#4a5566;font-size:12px;font-weight:800;text-align:left;white-space:nowrap}
.progress-table td{padding:11px 12px;border-bottom:1px solid #eef2f7;vertical-align:middle}
.progress-table tbody tr{cursor:pointer}
.progress-table tbody tr:hover{background:#f5f9ff}
.progress-table .name-cell strong{display:block;font-weight:800;color:#16233a}
.mini-progress{display:flex;align-items:center;gap:8px;min-width:130px}
.mini-track{flex:1;height:8px;border-radius:6px;background:#e6ecf5;overflow:hidden}
.mini-track i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--blue),var(--cyan))}
.mini-progress span{min-width:42px;font-size:12px;font-weight:800;color:#344057;text-align:right}
.check-label.inline{margin:0;font-size:12.5px;white-space:nowrap}

.export-filter{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin:0 0 12px;padding:14px 16px;border:1px solid #e2e8f1;border-radius:10px;background:#f8fafc}
.export-filter label{margin:0;font-size:12px;font-weight:800;color:#4a5566}
.export-filter select{display:block;min-width:150px;height:40px;margin-top:6px;padding:0 10px;border:1px solid #ccd6e4;border-radius:8px;background:#fff;font-size:13.5px}
.export-filter .check-label{display:flex;align-items:center;gap:6px;height:40px;font-size:13px}
.export-filter button{height:40px}
.export-filter-summary{margin:0 0 14px;color:var(--blue);font-size:12.5px;font-weight:800}
@media (max-width:760px){.export-filter select{min-width:0;width:100%}.export-filter label{flex:1 1 100%}}

/* ── 데이터셋 다운로드 표 ── */
.dataset-table tbody tr{cursor:default}
.dataset-table tbody tr:hover{background:#fff}
.dataset-table .table-actions{display:flex;gap:6px;flex-wrap:wrap}
.dataset-table .table-actions button{height:34px;padding:0 12px;border:1px solid #ccd6e4;border-radius:7px;background:#fff;font-size:12.5px;font-weight:800;color:#1f4f9c}
.dataset-table .table-actions button:hover{border-color:var(--blue);background:#f3f8ff}
.export-side{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid #eef2f7}
.export-side>span{color:#68748a;font-size:12px;font-weight:800}
.export-side button{height:36px;padding:0 14px;font-size:13px}
.export-filter-summary{margin-left:auto;color:var(--blue);font-size:12.5px;font-weight:800;align-self:center}
tr.row-flash{animation:rowFlash 1.6s ease}
@keyframes rowFlash{0%,100%{background:#fff}20%{background:#e8f3ff}}

/* ------------------------------------------------------------------ 설문 화면 */
.survey-page{display:block}
.survey-section{display:inline-block;margin-bottom:14px;padding:6px 13px;border-radius:999px;color:#1f4f9c;background:#eaf2ff;font-size:13.5px;font-weight:850;letter-spacing:.02em}
.survey-notice{margin:0 0 16px;padding:13px 17px;border-radius:9px;background:#eef3fa;color:#3c4a61;font-size:15px;font-weight:600;line-height:1.7}
.survey-guide{margin:16px 0 0;padding:14px 17px;border-left:3px solid #b9cdf0;border-radius:0 8px 8px 0;background:#f5f8fd;color:#4c5a70;font-size:15px;line-height:1.8}
.survey-guide b{color:var(--ink)}
.em-blue{color:var(--blue);font-weight:800}
.survey-guide .em-blue{color:var(--blue)}
.survey-legal{margin-top:14px;padding:12px 14px;border:1px dashed #cbd6e6;border-radius:8px;color:#5a6679;font-size:12.5px;line-height:1.7}
.survey-intro{margin-top:8px;padding:34px;border:1px solid #dbe3ef;border-radius:14px;background:#fbfcfe;font-size:16.5px;line-height:1.95}
.survey-intro h2{margin:0 0 26px;text-align:center;font-size:26px;line-height:1.5;letter-spacing:-.02em;color:var(--ink)}
.survey-intro p{margin:0 0 16px}
.survey-intro p:last-child{margin-bottom:0}
.survey-intro b{font-weight:850}
.survey-figure-note{text-align:left}
.survey-figure-note>b{display:block;margin-bottom:10px;color:#4c5a70;font-size:13px}
.device-samples{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.device-samples figure{margin:0}
.device-samples img{width:100%;height:92px;object-fit:contain;display:block}
.device-samples figcaption{margin-top:6px;color:#5a6679;font-size:12.5px;text-align:center}

/* 척도표 — 설문지와 같은 표. 칸 너비를 똑같이 두고, 가로 스크롤 없이 줄바꿈으로 맞춘다 */
.grid-wrap{margin-top:24px;max-width:100%}
.grid-table{width:100%;max-width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}
.grid-table th,.grid-table td{border-bottom:1px solid #e6ebf3}
.grid-table thead th{padding:12px 6px;max-width:100%;background:#eef3fa;border-bottom:1px solid #cfd9e8;color:#33415a;font-size:14px;font-weight:800;line-height:1.4;text-align:center;vertical-align:bottom;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
.grid-table thead th.grid-th-label{width:40%;padding-left:18px;text-align:left;font-size:16px;color:#26344c;vertical-align:middle}
/* 보기가 많은 척도는 항목 칸을 조금 줄여 보기 칸이 너무 좁아지지 않게 한다 */
.grid-table[data-cols="6"] thead th.grid-th-label{width:34%}
.grid-table[data-cols="7"] thead th.grid-th-label{width:28%}
.grid-table[data-cols="7"] thead th{font-size:13px;padding:10px 4px}
.grid-table[data-cols="7"] tbody td{padding:7px 1px}
.grid-table thead th .t{display:block}
.grid-table thead th .n{display:block;margin-top:6px;color:#7b8aa2;font-size:13px;font-weight:750}
.grid-group-row th{padding:9px 18px;background:var(--navy2);color:#fff;font-size:14px;font-weight:850;text-align:left;letter-spacing:.02em}
.grid-td-label{padding:16px 18px;max-width:100%;text-align:left;font-size:16.5px;font-weight:500;line-height:1.65;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;hyphens:auto}
.grid-row.done .grid-td-label{color:#33405a}
.grid-row.next .grid-td-label{color:#12284d;font-weight:650;background:#f4f8ff;box-shadow:inset 4px 0 0 var(--blue)}
.grid-row.next td{background:#f4f8ff}
.grid-row:hover .grid-td-label{color:#12284d}
.grid-table tbody td{padding:7px 2px;text-align:center;vertical-align:middle}
.grid-cell{position:relative;display:grid;place-items:center;height:48px;max-width:100%;border-radius:9px;cursor:pointer}
.grid-cell:hover{background:#eef4ff}
.grid-cell input{position:absolute;opacity:0;pointer-events:none}
.grid-cell .dot{display:block;width:26px;height:26px;border:2px solid #b3bfd1;border-radius:50%;background:#fff;transition:border-color .12s,background .12s,box-shadow .12s}
.grid-cell .m{display:none}
.grid-cell.selected .dot{border-color:var(--blue);background:var(--blue);box-shadow:inset 0 0 0 3px #fff}
.grid-row.done{background:#fafcff}

/* 숫자·드롭다운 입력칸 (줄 목록형) */
.field-answer{display:grid;gap:11px;margin-top:24px}
.field-line{display:grid;gap:10px;border:1px solid #d8dfe9;border-radius:11px;padding:16px 18px;background:#fff}
.field-line-label{font-size:16.5px;line-height:1.65}
.field-line-label small{display:block;margin-top:4px;color:var(--muted);font-size:13.5px}
.field-line-label em{color:var(--blue);font-style:normal;font-weight:750}
.field-line-cells{display:flex;flex-wrap:wrap;gap:12px}
.field-cell{display:flex;flex-direction:column;gap:5px;min-width:180px}
.field-cell>small{color:var(--muted);font-size:13.5px;font-weight:750}
.field-cell.wide{flex:1 1 260px}
.field-number{display:inline-flex;align-items:center;gap:7px}
.field-number input{width:140px;height:46px;border:1px solid #c6d0de;border-radius:9px;padding:0 12px;text-align:right;font-size:17px;font-weight:750}
.field-number b{flex:0 0 auto;white-space:nowrap;color:#4c5a70;font-size:15px;font-weight:800}
.field-text{height:46px;border:1px solid #c6d0de;border-radius:9px;padding:0 12px;font-size:16px}
.field-cell select,.field-table select{height:46px;border:1px solid #c6d0de;border-radius:9px;padding:0 12px;font-size:16px;background:#fff}
.field-cell input:focus,.field-cell select:focus,.field-table input:focus,.field-table select:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 3px rgba(36,107,243,.15)}
.field-error{display:none;margin-top:5px;color:var(--danger);font-size:13px;font-weight:750;line-height:1.45}
.field-error.show{display:block}
input.invalid,select.invalid{border-color:var(--danger);background:#fff5f5}
input.invalid:focus{box-shadow:0 0 0 3px rgba(229,72,77,.18)}

/* 원본 설문지가 표인 입력 문항(학교 Q6·Q11·Q12, 학부모 Q8-1) */
.field-table-wrap{margin-top:24px;max-width:100%}
.field-table{width:100%;max-width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}
.field-table th,.field-table td{border-bottom:1px solid #e6ebf3;padding:13px 10px;vertical-align:middle}
.field-table thead th{background:#eef3fa;border-bottom:1px solid #cfd9e8;color:#33415a;font-size:15px;font-weight:800;text-align:center;word-break:keep-all}
.field-table thead th:first-child{text-align:left;padding-left:16px}
.field-table thead th{max-width:100%;white-space:normal;overflow-wrap:anywhere}
.field-table-label{padding-left:16px;max-width:100%;text-align:left;font-size:16px;font-weight:500;line-height:1.6;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
.field-table-label small{display:block;margin-top:4px;color:var(--muted);font-size:13.5px;font-weight:400}
.field-table-label em{color:var(--blue);font-style:normal;font-weight:750}
.field-table td{text-align:center}
.field-table .field-number{justify-content:center;width:100%}
.field-table .field-number input{width:100%;max-width:150px}
.field-table .field-text{width:100%}
.field-table .field-error{text-align:left}
.field-table .label-input{display:block;margin-top:8px}
.field-table .label-input .field-text{width:min(280px,100%)}

/* 복수응답 · 기타 직접 입력 */
.option-list.multi .option-key{border-radius:7px}
.option-wrap{display:grid;gap:8px}
.option-etc{display:block;padding-left:42px}
.option-etc input{width:min(340px,100%);height:38px;border:1px solid #c6d0de;border-radius:8px;padding:0 11px;font-size:14px}
.option-etc input{font-size:15px;height:42px}
.option-etc input:disabled{background:#f4f6fa;color:#a3aebe}
.etc-error{display:none;margin-top:6px;color:var(--danger);font-size:13px;font-weight:750}
.etc-error.show{display:block}

/* 9점 척도 막대 */
.scale-bar{margin-top:26px}
.scale-anchors{display:flex;justify-content:space-between;margin-bottom:9px;color:#54627a;font-size:13px;font-weight:750}
.scale-choices{display:grid;grid-template-columns:repeat(9,1fr);gap:6px}
.scale-choice{position:relative;display:grid;place-items:center;height:52px;border:1px solid #d5dce7;border-radius:9px;background:#fff;cursor:pointer;font-weight:800;color:#5e6a80}
.scale-choice input{position:absolute;opacity:0;pointer-events:none}
.scale-choice:hover{border-color:#8ab2ff;background:#f8fbff}
.scale-choice.selected{border-color:var(--blue);color:#fff;background:var(--blue);box-shadow:0 0 0 1px var(--blue)}

/* 문항 이동판: 설문은 번호가 A1·Q8-1 처럼 길다 */
.question-nav button.wide-label{aspect-ratio:auto;height:38px;padding:0 4px;font-size:12px}
.confirm-dialog #confirmCancel.hidden{display:none}

@media (max-width:900px){
	/* 창이 좁아지면 표를 줄 단위 카드로 바꾼다. 가로 스크롤 없이 읽히게. */
	.grid-table,.grid-table tbody,.grid-table tr,.grid-table th,.grid-table td{display:block;width:auto}
	.grid-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
	.grid-table tbody tr.grid-row{margin-bottom:11px;padding:15px 16px;border:1px solid #d8dfe9;border-radius:11px;background:#fff}
	.grid-table tbody tr.grid-row.done{border-color:#bcd4ff;background:#fafcff}
	.grid-table tbody tr.grid-row.next{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue)}
	.grid-table th,.grid-table td{border-bottom:0}
	.grid-td-label{padding:0 0 12px!important;font-size:16.5px;background:none!important;box-shadow:none!important}
	.grid-group-row th{margin:6px 0 9px;padding:8px 13px;border-radius:8px;width:max-content}
	.grid-table tbody td{padding:0;text-align:left;background:none!important}
	.grid-cell{display:grid;grid-template-columns:26px 1fr;place-items:center start;gap:10px;height:auto;padding:11px 12px;border:1px solid #e2e8f1;border-radius:9px;margin-bottom:6px}
	.grid-cell .m{display:block;color:#4c5a70;font-size:15px;line-height:1.45;text-align:left}
	.grid-cell.selected{border-color:var(--blue);background:#f1f6ff}
	.grid-cell.selected .m{color:#1f4f9c;font-weight:750}
	/* 입력 표도 같은 방식으로 카드가 된다 */
	.field-table,.field-table tbody,.field-table tr,.field-table th,.field-table td{display:block;width:auto}
	.field-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
	.field-table tbody tr{margin-bottom:11px;padding:15px 16px;border:1px solid #d8dfe9;border-radius:11px;background:#fff}
	.field-table th,.field-table td{border-bottom:0;padding:0}
	.field-table-label{padding:0 0 11px!important;font-size:16px}
	.field-table td{text-align:left;margin-bottom:9px}
	.field-table td:before{content:attr(data-label);display:block;margin-bottom:5px;color:var(--muted);font-size:13.5px;font-weight:750}
	.field-table td[data-label=""]:before{display:none}
	.field-table .field-number{justify-content:flex-start}
	.field-table .field-number input{max-width:none}
	.device-samples{grid-template-columns:repeat(2,1fr)}
	.field-cell{min-width:0;flex:1 1 100%}
	.field-number input{width:100%}
	.scale-choices{grid-template-columns:repeat(9,1fr);gap:3px}
	.scale-choice{height:46px;font-size:14px}
	.question-nav{grid-template-columns:repeat(4,1fr)}
	.survey-intro{padding:22px 18px}
	.survey-intro h2{font-size:21px}
	.option-etc{padding-left:0}
	.question-prompt{font-size:19px}
}

/* ── 로직에 맞지 않는 응답 안내 ── */
.question-nav button.invalid{border-color:#ffb020;color:#3a2600;background:#ffb020;font-weight:850}
.page-warning{margin:0 0 18px;padding:14px 16px;border:1px solid #f0b429;border-left-width:5px;border-radius:8px;background:#fff8e6;color:#7a4b00}
.page-warning strong{display:block;margin-bottom:6px;font-size:14.5px;font-weight:850}
.page-warning ul{margin:0;padding-left:18px}
.page-warning li{font-size:13.5px;line-height:1.8}
.page-warning li+li{margin-top:4px}
.legend i.invalid{background:#ffb020;border-color:#ffb020}

/* 표(척도) 문항 안의 "기타" 줄에 딸린 직접 입력칸 */
.answer-etc { margin-top: 10px; }
.answer-etc-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.answer-etc-row > span { font-weight: 600; color: #334155; }
.answer-etc-row .field-text { flex: 1 1 220px; min-width: 180px; }
/* 9점 척도 양끝·가운데 문구는 눈에 띄게 (학생용 C2-1·C2-2) */
.scale-anchors span { font-weight: 700; font-size: 1.05rem; color: #1e293b; }
/* 보기가 짧고 개수가 많은 문항(독서량·학급 번호 등)은 여러 열로 나눈다 */
.option-list.cols-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.option-list.cols-4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
@media (max-width:640px){
	.option-list.cols-3,.option-list.cols-4{grid-template-columns:repeat(2,1fr)}
}

/* 보기를 눌러 순위를 매기는 문항 (교사용 B2) */
.rank-status { display: grid; gap: 8px; margin-bottom: 14px; }
.rank-slot { display: flex; align-items: baseline; gap: 10px; padding: 9px 12px; border: 1px solid #e2e8f0; border-radius: 8px; background: #f8fafc; color: #94a3b8; }
.rank-slot b { flex: 0 0 auto; font-size: .9rem; color: #64748b; }
.rank-slot.filled { border-color: #bfdbfe; background: #eff6ff; color: #1e293b; }
.rank-slot.filled b { color: #1d4ed8; }
.rank-list { display: grid; gap: 10px; }
.rank-option { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; cursor: pointer; font: inherit; }
.rank-badge { flex: 0 0 auto; display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; border: 1px solid #cbd5e1; background: #fff; font-weight: 700; color: #1d4ed8; }
.rank-option.selected .rank-badge { border-color: #1d4ed8; background: #1d4ed8; color: #fff; }
.rank-hint { margin: 12px 0 0; color: #475569; font-size: .93rem; }
@media (min-width: 720px) { .rank-status { grid-template-columns: repeat(3, 1fr); } }

/* 경고창은 빨간색, 확인창은 파란색 — 설문지 표기와 맞춘다 */
.confirm-dialog.alert .confirm-icon { background: #dc2626; }
.confirm-dialog.alert .primary { background: #dc2626; border-color: #dc2626; }
.confirm-dialog.alert .primary:hover { background: #b91c1c; border-color: #b91c1c; }

/* 표(척도) 문항에서 답하지 않아도 되는 줄(기타) */
.grid-optional { display: block; margin-top: 3px; font-weight: 400; font-size: .8rem; color: #94a3b8; }
.grid-clear { display: inline-block; margin-top: 6px; padding: 3px 9px; border: 1px solid #cbd5e1; border-radius: 999px; background: #fff; font-size: .78rem; color: #475569; cursor: pointer; }
.grid-clear:hover { border-color: #94a3b8; color: #1e293b; }

/* 개인정보 수집·이용 동의서 (학생·학부모 최초 1회) */
.access-card.wide { width: min(940px, 100%); padding: 32px 34px; }
.consent-screen { width: 100%; }
.consent-title { margin: 0 0 18px; text-align: center; font-size: 22px; line-height: 1.45; letter-spacing: -.03em; color: #0f172a; }
.consent-doc { max-height: 42vh; overflow-y: auto; overflow-x: hidden; padding: 18px 20px; border: 1px solid #e2e8f0; border-radius: 10px; background: #fff; line-height: 1.65; }
.consent-doc h4 { margin: 18px 0 8px; font-size: .95rem; color: #1d4ed8; }
.consent-doc h4:first-child { margin-top: 0; }
.consent-doc p { margin: 0 0 10px; }
/* 표는 가로로 넘치지 않게 접어서 보여 준다 */
.consent-table { width: 100%; table-layout: fixed; border-collapse: collapse; margin: 6px 0 12px; font-size: .88rem; }
.consent-table th, .consent-table td { border: 1px solid #e2e8f0; padding: 9px 11px; text-align: left; vertical-align: top; line-height: 1.6; white-space: normal; word-break: keep-all; overflow-wrap: break-word; }
.consent-table th { width: 27%; background: #f8fafc; font-weight: 600; color: #334155; }
.consent-table thead th { width: auto; text-align: center; }
.consent-note { margin: 10px 0; font-size: .86rem; color: #64748b; }
.consent-pledge { margin-top: 14px; padding: 12px 14px; border-radius: 8px; background: #eff6ff; color: #1e293b; }
.consent-who { margin-top: 18px; }
.consent-who .field-text { width: 100%; max-width: 320px; }
/* 동의 / 동의하지 않음 은 한 줄에 나란히 */
.consent-choice { margin: 18px 0 0; padding: 0; border: 0; }
.consent-choice legend { padding: 0 0 10px; font-weight: 700; color: #1e293b; }
.consent-choice .consent-options { display: flex; gap: 12px; flex-wrap: wrap; }
/* 보기 앞의 번호 동그라미가 없는 화면이라 한 칸으로 놓는다.
   2열 그리드를 그대로 쓰면 글자가 32px 칸에 갇혀 "동의 / 하지 / 않음" 으로 끊긴다. */
.consent-choice .option { flex: 1 1 200px; margin: 0; grid-template-columns: 1fr; justify-items: center; text-align: center; }
.consent-choice .option-text { padding-top: 0; white-space: nowrap; }
.consent-declined { margin-bottom: 14px; padding: 12px 14px; border: 1px solid #fecaca; border-radius: 10px; background: #fef2f2; color: #991b1b; }
.consent-declined p { margin: 6px 0 0; font-size: .9rem; }
.consent-actions { margin-top: 18px; display: flex; justify-content: flex-end; }
.consent-actions .primary { padding: 11px 22px; font-size: 1rem; }
@media (max-width: 720px) {
	.access-card.wide { padding: 26px 16px; }
	.consent-doc { max-height: none; padding: 14px; }
	.consent-title { font-size: 18px; }
	.consent-table { font-size: .84rem; }
	.consent-table th { width: 32%; }
	/* 3열 표는 좁은 화면에서 줄 단위로 편다 */
	.consent-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
	.consent-table.stacked td { display: block; border-top: 0; }
	.consent-table.stacked tr td:first-child { border-top: 1px solid #e2e8f0; }
	.consent-table.stacked td:before { content: attr(data-label); display: block; margin-bottom: 4px; font-weight: 600; color: #64748b; font-size: .8rem; }
	.consent-choice .option { flex: 1 1 100%; }
}

/* 학교명 자동완성 목록 (학교 담당자 로그인) */
.login-form label { position: relative; }
.suggest-list { position: absolute; z-index: 30; left: 0; right: 0; top: 100%; margin: 4px 0 0; padding: 4px; list-style: none; max-height: 240px; overflow-y: auto; border: 1px solid #cbd5e1; border-radius: 8px; background: #fff; box-shadow: 0 10px 24px rgba(15,23,42,.12); }
.suggest-item { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 8px 10px; border-radius: 6px; cursor: pointer; font-weight: 500; color: #1e293b; }
.suggest-item small { color: #94a3b8; font-weight: 400; }
.suggest-item:hover, .suggest-item.active { background: #eff6ff; }

/* 학교관리 표 안의 6종 응답현황 */
.mini-progress { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 12px; min-width: 240px; }
.mini-progress-row { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: .8rem; }
.mini-progress-row small { color: #64748b; }
.mini-progress-row b { color: #1e293b; font-variant-numeric: tabular-nums; }
/* 대시보드 진행 현황 — 완료/전체와 완료율을 함께 */
#progressOverview .progress-row strong { display: inline-flex; align-items: baseline; gap: 8px; font-variant-numeric: tabular-nums; }
#progressOverview .progress-row strong em { font-style: normal; color: #1d4ed8; font-weight: 700; }

/* 공지 첨부파일 */
.file-label { display: grid; gap: 4px; font-size: .9rem; color: #334155; }
.file-label small { color: #94a3b8; }
.file-current { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 10px; border: 1px dashed #cbd5e1; border-radius: 8px; background: #f8fafc; font-size: .88rem; color: #475569; }
.file-current small { width: 100%; color: #94a3b8; }
.notice-file { display: inline-flex; align-items: center; gap: 8px; margin-top: 10px; padding: 8px 12px; border: 1px solid #dbeafe; border-radius: 8px; background: #eff6ff; color: #1d4ed8; text-decoration: none; font-size: .9rem; font-weight: 600; }
.notice-file:hover { background: #dbeafe; }
.notice-file small { color: #64748b; font-weight: 400; }

/* ── 동의서: 보호자 성명을 적어야 동의 여부를 고를 수 있다 ── */
.consent-hint{margin:0 0 10px;color:var(--danger);font-size:13px;font-weight:750}
.consent-choice.locked .consent-options{opacity:.45;pointer-events:none}

/* ── 목록 쪽 나누기 ── */
.pager{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px 12px;padding:13px 20px;border-top:1px solid #eef2f7;background:#fcfdff}
.pager.hidden{display:none}
.pager-size{justify-self:start}
.pager-size select{height:34px;padding:0 8px;border:1px solid #d8dfe9;border-radius:7px;background:#fff;color:#344057;font-size:12.5px;font-weight:750}
.pager-info{justify-self:end;color:#68748a;font-size:12.5px;font-weight:750;white-space:nowrap}
.pager-buttons{justify-self:center;display:flex;justify-content:center;gap:4px;flex-wrap:wrap}
.pager-buttons button{min-width:34px;height:34px;padding:0 9px;border:1px solid #d8dfe9;border-radius:7px;background:#fff;color:#344057;font-size:13px;font-weight:750}
.pager-buttons button:hover:not(:disabled){border-color:var(--blue);color:var(--blue);background:#f3f8ff}
.pager-buttons button.current{border-color:var(--blue);background:var(--blue);color:#fff}
.pager-buttons button:disabled{opacity:.4}
/* 폭이 모자라면 쪽 버튼을 윗줄로 올려 가운데를 지킨다. 사이드바(254px)가 있어 화면폭 기준으로 잡는다. */
@media (max-width:1080px){
	.pager{grid-template-columns:1fr 1fr;row-gap:11px}
	.pager-buttons{grid-area:1/1/2/3}
	.pager-size{grid-area:2/1/3/2}
	.pager-info{grid-area:2/2/3/3}
}
@media (max-width:760px){
	.pager{grid-template-columns:1fr;justify-items:center;padding:13px 14px}
	.pager-buttons{grid-area:auto;justify-self:center}
	.pager-size{grid-area:auto;justify-self:center}
	.pager-info{grid-area:auto;justify-self:center}
}

/* ══ 시도·학교별 조사현황 ════════════════════════════════════════════════ */
.status-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.status-tabs button{height:36px;border:1px solid #d8dfe9;border-radius:9px;padding:0 14px;color:#465369;background:#fff;font-size:13px;font-weight:800}
.status-tabs button:hover{border-color:var(--blue);color:var(--blue);background:#f3f8ff}
.status-tabs button.active{border-color:var(--blue);color:#fff;background:var(--blue)}
.region-table th[scope="row"]{width:96px;color:#344057;background:#f8fafc;font-weight:800;text-align:left}
.region-table td{white-space:nowrap}
.region-table td strong{font-size:14px}
.region-table .row-note{margin-left:6px;color:#8590a1;font-weight:700}
.region-table .total-row th,.region-table .total-row td{border-top:2px solid #cdd6e3;background:#f2f6fc}
.region-table .total-row td strong{color:var(--blue)}
.school-status-table th:nth-child(1),.school-status-table td:nth-child(1){width:64px}
.school-status-table td:nth-child(2){color:#8590a1;font-size:12px}
.school-status-table td strong{font-size:13.5px}
.school-status-table .row-note{margin-left:5px;color:#8590a1;font-weight:700}
@media (max-width:760px){
	.status-tabs button{height:34px;padding:0 10px;font-size:12px}
	.region-table th[scope="row"]{width:auto}
}

/* ── 고객사 제공용 현황 링크 화면 ── */
.board{min-height:100vh;background:#f2f5f9}
.board.hidden{display:none}
.board-header{position:sticky;top:0;z-index:20;height:72px;padding:0 26px;display:flex;align-items:center;justify-content:space-between;gap:16px;color:#fff;background:var(--navy)}
.board-brand{display:flex;align-items:center;gap:12px}
.board-logo{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:linear-gradient(145deg,var(--blue),var(--cyan));font-size:13px;font-weight:900}
.board-brand strong{display:block;font-size:16px;letter-spacing:-.03em}
.board-brand small{display:block;margin-top:2px;color:#9fb4d6;font-size:11px;font-weight:750}
.board-tools{display:flex;align-items:center;gap:12px}
.board-tools small{color:#b9c8e0;font-size:12px;font-weight:750}
.board-body{max-width:1320px;margin:0 auto;padding:22px 26px 44px}
.board-body .panel:last-child{margin-bottom:0}
.board-body .toolbar{padding:0 20px 14px}
.board-body .table-panel .panel-head{padding:19px 20px 14px}
.board-link-panel .panel-head{margin-bottom:12px}
.board-link-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.board-link-row code{flex:1;min-width:260px;overflow:hidden;padding:11px 13px;border:1px solid #d8dfe9;border-radius:9px;background:#f6f9fd;color:#26467e;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}
.board-link-row code.off{color:#98a3b4;background:#f1f3f6;text-decoration:line-through}
@media (max-width:760px){
	.board-header{height:64px;padding:0 14px}
	.board-brand small{display:none}
	.board-body{padding:14px 12px 30px}
	.board-link-row code{min-width:0;width:100%}
}

/* 마지막 문항 — 제출 단추를 누르도록 안내 */
.last-question-note { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-top: 22px; padding: 14px 16px; border: 1px solid #f6c89a; border-radius: 10px; background: #fff7ed; color: #7c3a05; line-height: 1.6; }
.last-question-note strong { color: #c2410c; }
.last-question-note b { color: #c2410c; }
.last-question-note .inline-submit{flex:0 0 auto;height:42px;margin-left:auto;border:0;border-radius:9px;padding:0 18px;color:#fff;background:var(--orange);font-weight:850}
.last-question-note .inline-submit:hover{background:#f57a1f}
@media (max-width:760px){.last-question-note .inline-submit{width:100%;margin:4px 0 0;height:46px}}
.consent-cell{display:flex;align-items:center;gap:6px;white-space:nowrap}
.consent-cell+.consent-cell{margin-top:4px}
.consent-who{min-width:34px;color:var(--muted);font-size:11px}
.consent-cell .row-note{display:inline;margin:0;color:#4f5d72;font-size:11px}
