:root{
  --ncees-blue:#0b5f9b;
  --ncees-blue-dark:#084674;
  --ncees-blue-mid:#2e6e9b;
  --ncees-blue-light:#cfe1f2;
  --ncees-line:#7ca2c4;
  --ncees-bg:#f5f7fb;
  --ncees-panel:#ffffff;
  --ncees-gray:#efefef;
  --ncees-text:#222;
  --danger:#8b3227;
  --flag:#1f7fd1;
}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:Arial,Helvetica,sans-serif;
  background:#d7e5f2;
  color:var(--ncees-text);
  overflow:hidden;
}
button,select,input{font:inherit}

.exam-shell{
  width:100vw;
  height:100vh;
  display:flex;
  flex-direction:column;
  background:#fff;
  border:1px solid var(--ncees-line);
}

.global-topbar{
  height:35px;
  min-height:35px;
  background:linear-gradient(180deg,#0c6db0,#084674);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 10px;
  border-bottom:1px solid #022f52;
}
.exam-title{
  font-size:15px;
  font-weight:700;
  letter-spacing:.1px;
}
.top-status{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:1px;
  font-size:12px;
}
.question-position{font-size:11px}

.utility-bar{
  height:26px;
  min-height:26px;
  background:linear-gradient(180deg,#d8e6f3,#c4d9ec);
  border-bottom:1px solid var(--ncees-line);
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 8px;
}
.utility-btn{
  border:none;
  color:#fff;
  background:linear-gradient(180deg,#9abbd8,#88abc9);
  border:1px solid #6d95bb;
  padding:0 8px;
  height:20px;
  cursor:pointer;
  font-size:12px;
}
.utility-right{
  display:flex;
  align-items:center;
  gap:6px;
}
.flag-inline{
  font-size:11px;
  color:#fff;
  background:linear-gradient(180deg,#9abbd8,#88abc9);
  border:1px solid #6d95bb;
  padding:0 8px;
  height:20px;
  display:flex;
  align-items:center;
  gap:6px;
}
.font-select{
  height:20px;
  border:1px solid #6d95bb;
  background:#f3f6fa;
  font-size:12px;
}

.main-split{
  flex:1;
  min-height:0;
  display:grid;
  grid-template-columns:minmax(420px,52%) 6px minmax(420px,calc(48% - 6px));
  overflow:hidden;
}
.reference-pane{
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:0;
  background:#f8fbff;
}
.splitter{
  cursor:col-resize;
  background:linear-gradient(180deg,#0d5d9c,#084674);
  border-left:1px solid #0a3f6b;
  border-right:1px solid #0a3f6b;
}
.splitter:hover,.splitter.dragging{
  background:linear-gradient(180deg,#1278c3,#0a4f81);
}
.ref-tab-row{
  display:flex;
  gap:1px;
  background:#e5eff8;
  padding:2px 4px 0;
  border-bottom:1px solid var(--ncees-line);
}
.ref-tab{
  border:1px solid var(--ncees-line);
  border-bottom:none;
  padding:4px 8px;
  background:linear-gradient(180deg,#fefefe,#dde9f5);
  cursor:pointer;
  font-size:12px;
}
.ref-tab.active{
  background:#fff;
  font-weight:700;
}
.ref-pane-body{
  flex:1;
  min-height:0;
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.ref-view{flex:1;min-height:0}
.ref-view{display:none}
.ref-view.active{display:flex;min-height:0}

.handbook-view{
  flex-direction:column;
}
.pdf-toolbar{
  height:28px;
  min-height:28px;
  display:flex;
  align-items:center;
  gap:4px;
  padding:2px 6px;
  background:linear-gradient(180deg,#0d5d9c,#0a4f81);
  color:#fff;
  border-bottom:1px solid #093d67;
}
.pdf-tool{
  min-width:22px;
  height:22px;
  border:1px solid #2a6fa3;
  background:#0a4a7b;
  color:#fff;
  cursor:pointer;
  padding:0 6px;
}
.pdf-page-indicator{
  flex:1;
  text-align:center;
  font-size:12px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-weight:700;
}
.zoom-select{
  height:22px;
  border:1px solid #2a6fa3;
}
.search-strip{
  padding:5px;
  border-bottom:1px solid #aac3db;
  background:#eff6fc;
  display:flex;
  gap:5px;
}
.search-strip.hidden{display:none}
.search-strip input{
  flex:1;
  min-width:0;
  padding:5px 8px;
  border:1px solid #7ea3c5;
  font-size:12px;
}
.search-btn{
  border:1px solid #7ea3c5;
  background:linear-gradient(180deg,#fff,#dfeaf4);
  padding:4px 10px;
  cursor:pointer;
  font-size:12px;
}
.pdf-frame-wrap{
  flex:1;
  min-height:0;
  background:#333;
  overflow:hidden;
}
.pdf-frame{
  width:100%;
  height:100%;
  border:none;
  background:#fff;
  display:block;
}

.codes-view{min-height:0}
.codes-sidebar{
  width:270px;
  border-right:1px solid var(--ncees-line);
  background:#f3f7fb;
  overflow:auto;
}
.codes-sidebar-header{
  padding:8px 10px;
  background:linear-gradient(180deg,#d8e7f4,#bfd5e8);
  border-bottom:1px solid var(--ncees-line);
  font-weight:700;
  font-size:12px;
}
.codes-note{
  font-size:11px;
  line-height:1.35;
  padding:8px 10px;
  border-bottom:1px solid #c9dced;
}
.code-list{padding:6px}
.code-item{
  width:100%;
  text-align:left;
  border:1px solid #a7c0d8;
  background:#fff;
  padding:8px;
  margin-bottom:6px;
  cursor:pointer;
  font-size:12px;
}
.code-item.active{
  border-color:#2a6fa3;
  background:#e7f1fb;
}
.codes-viewer{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
}
.code-indicator{
  text-align:left;
}

.question-pane{
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:0;
  background:#fff;
}
.question-header{
  min-height:34px;
  background:#fff;
  border-bottom:1px solid #d4d4d4;
  padding:8px 12px 4px;
}
.question-heading{
  font-size:20px;
  font-weight:700;
}
.question-body{
  flex:1;
  overflow:auto;
  padding:10px 16px 18px;
}
.question-prompt{
  white-space:pre-wrap;
  line-height:1.4;
  font-size:15px;
  margin-bottom:12px;
}
.options-box{
  border:1px solid #d6d6d6;
  background:#fafafa;
}
.option-row{
  border-bottom:1px solid #dddddd;
}
.option-row:last-child{border-bottom:none}
.option-label{
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:10px 12px;
  cursor:pointer;
}
.option-letter{
  min-width:24px;
  font-weight:400;
}
.option-text{
  flex:1;
  font-size:15px;
}
.answer-controls{
  margin-top:10px;
}
.action-btn{
  border:1px solid #7b9dbf;
  background:linear-gradient(180deg,#fdfefe,#dfeaf4);
  padding:6px 12px;
  cursor:pointer;
}
.question-meta{
  margin-top:16px;
  color:#3c5d78;
  font-size:12px;
  text-transform:uppercase;
}
.feedback-area{
  margin-top:8px;
  color:#0c4d7f;
  font-size:12px;
}
.question-pane.font-large .question-prompt,
.question-pane.font-large .option-text{font-size:17px}
.question-pane.font-xlarge .question-prompt,
.question-pane.font-xlarge .option-text{font-size:20px}

.bottom-nav{
  height:32px;
  min-height:32px;
  background:linear-gradient(180deg,#0d5d9c,#084674);
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 6px;
  border-top:1px solid #022f52;
}
.bottom-left,.bottom-right{
  display:flex;
  gap:6px;
}
.nav-btn{
  height:24px;
  border:1px solid #2a6fa3;
  background:transparent;
  color:#fff;
  padding:0 10px;
  cursor:pointer;
}
.nav-btn.primary{font-weight:700}
.nav-btn:disabled{opacity:.55;cursor:not-allowed}

.overlay{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.25);
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:40;
}
.overlay.hidden{display:none}

.review-window{
  width:min(96vw,1800px);
  height:min(90vh,980px);
  background:#fff;
  border:2px solid #5986b0;
  display:flex;
  flex-direction:column;
}
.review-titlebar{
  height:34px;
  background:linear-gradient(180deg,#0d5d9c,#084674);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  position:relative;
}
.close-review{
  position:absolute;
  right:8px;
  top:5px;
  width:24px;
  height:24px;
  border:1px solid #2a6fa3;
  background:transparent;
  color:#fff;
  cursor:pointer;
}
.review-instructions{
  border-bottom:1px solid #98b7d5;
}
.instructions-band{
  background:linear-gradient(180deg,#d8e7f4,#bfd5e8);
  border-bottom:1px solid #98b7d5;
  padding:4px 8px;
  color:#3f6c93;
  font-weight:700;
}
.instructions-text{
  padding:10px 12px;
  font-size:14px;
  line-height:1.45;
}
.incomplete-label{color:var(--danger);font-weight:700}
.review-table-header{
  padding:4px 8px;
  font-size:13px;
  color:#3f6c93;
  background:linear-gradient(180deg,#d8e7f4,#bfd5e8);
  border-top:1px solid #98b7d5;
  border-bottom:1px solid #98b7d5;
}
.review-grid{
  flex:1;
  overflow:auto;
  display:grid;
  grid-template-columns:repeat(3,1fr);
  align-content:start;
}
.review-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:7px 8px;
  border-right:1px solid #b9c8d8;
  border-bottom:1px solid #b9c8d8;
  min-height:30px;
  cursor:pointer;
  font-size:13px;
}
.review-item:hover{background:#f6fafe}
.review-item .left{
  display:flex;
  align-items:center;
  gap:6px;
}
.flag-marker{
  color:var(--flag);
  width:12px;
  text-align:center;
  font-weight:700;
}
.review-status{
  min-width:78px;
  text-align:right;
}
.review-status.incomplete{
  color:var(--danger);
  font-weight:700;
}
.review-footer{
  height:38px;
  padding:0 8px;
  background:linear-gradient(180deg,#0d5d9c,#084674);
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.review-footer-right{
  display:flex;
  gap:6px;
}

.calculator-window{
  width:280px;
  background:#f8fbff;
  border:2px solid #5986b0;
}
.calculator-title{
  height:34px;
  background:linear-gradient(180deg,#0d5d9c,#084674);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 10px;
}
.calculator-title button{
  border:1px solid #2a6fa3;
  background:transparent;
  color:#fff;
  width:24px;
  height:24px;
  cursor:pointer;
}
.calc-display{
  width:calc(100% - 16px);
  margin:8px;
  padding:10px;
  font-size:22px;
  text-align:right;
  border:1px solid #95b2cf;
}
.calc-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:6px;
  padding:0 8px 8px;
}
.calc-grid button{
  height:40px;
  border:1px solid #95b2cf;
  background:#fff;
  cursor:pointer;
}
.calc-grid .wide{
  grid-column:span 2;
}

@media (max-width:1200px){
  .main-split{
    grid-template-columns:1fr;
    grid-template-rows:1fr 1fr;
  }
  .splitter{display:none}
  .reference-pane{
    border-right:none;
    border-bottom:3px solid var(--ncees-blue);
    min-height:45vh;
  }
  .question-pane{min-height:45vh}
}


.load-banner{
  margin-bottom:10px;
  padding:8px 10px;
  border:1px solid #b6cfe5;
  background:#edf5fc;
  color:#264b69;
  font-size:12px;
}
.load-banner.hidden{display:none}
.question-image-wrap{
  margin:2px 0 12px;
  border:1px solid #d4dbe3;
  background:#fff;
  padding:12px;
  text-align:center;
}
.question-image-wrap.hidden{display:none}
.question-image{
  max-width:100%;
  max-height:320px;
  width:auto;
  height:auto;
  object-fit:contain;
}
.question-body.has-image .question-prompt{
  margin-top:0;
}
.feedback-area.error{
  color:#8b3227;
  font-weight:700;
}


.answer-controls{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.answer-reveal{
  margin-top:12px;
  border:1px solid #bed3e6;
  background:#f4f9fe;
  padding:12px;
  font-size:14px;
  line-height:1.45;
}
.answer-reveal.hidden{display:none}
.answer-reveal .correct-line{
  font-weight:700;
  margin-bottom:6px;
  color:#0b4f84;
}
.answer-reveal .explanation-title{
  font-weight:700;
  margin:8px 0 4px;
  color:#264b69;
}
.overlay{
  z-index:50;
}
.setup-window{
  width:min(760px,94vw);
  max-height:88vh;
  background:#fff;
  border:2px solid #5986b0;
  display:flex;
  flex-direction:column;
}
.setup-titlebar{
  height:36px;
  background:linear-gradient(180deg,#0d5d9c,#084674);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
}
.setup-body{
  padding:16px;
  overflow:auto;
}
.setup-section{
  margin-bottom:14px;
}
.setup-label{
  font-weight:700;
  margin-bottom:6px;
  display:block;
}
.setup-note{
  font-size:12px;
  color:#496884;
  margin-bottom:8px;
}
.section-actions{
  display:flex;
  gap:8px;
  margin-bottom:8px;
}
.section-checklist{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:8px;
  border:1px solid #d7e1ea;
  background:#fafcff;
  padding:10px;
}
.section-item{
  display:flex;
  align-items:flex-start;
  gap:8px;
  font-size:14px;
}
.setup-grid{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:12px;
  margin:12px 0;
}
.setup-field input[type="number"]{
  width:100%;
  padding:8px;
  border:1px solid #9eb8cf;
}
.checkbox-field{
  display:flex;
  align-items:flex-end;
}
.setup-actions{
  margin-top:8px;
}
.setup-primary{
  background:#0b5f9b;
  color:#fff;
}
.setup-message{
  margin-top:10px;
  min-height:18px;
  color:#8b3227;
  font-size:12px;
  font-weight:700;
}
.review-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid #d7e1ea;
  padding:8px 10px;
  cursor:pointer;
}
.review-item:hover{
  background:#f4f9fe;
}
.review-item .left{
  display:flex;
  gap:8px;
  align-items:center;
}
.review-status.incomplete{
  color:#8b3227;
  font-weight:700;
}
.flag-marker{
  color:#1f7fd1;
  font-weight:700;
  min-width:14px;
}
.results-window{
  width:min(480px,92vw);
  background:#fff;
  border:2px solid #5986b0;
}
.results-body{
  padding:24px 20px 28px;
  text-align:center;
}
.results-score{
  font-size:34px;
  font-weight:700;
  color:#0b4f84;
}
.results-percent{
  margin-top:6px;
  font-size:22px;
  font-weight:700;
  color:#264b69;
}
.results-message{
  margin-top:14px;
  font-size:16px;
  line-height:1.45;
  color:#34546f;
}
.results-summary{
  margin-top:18px;
  padding-top:16px;
  border-top:1px solid #d7e1ea;
  display:grid;
  gap:10px;
  font-size:16px;
}
@media (max-width: 900px){
  .setup-grid{
    grid-template-columns:1fr;
  }
}
