/* Exam Answer Builder (economics/exam-answer-builder.php). The page chrome is the one-screen layout in
   /css/resource.css and the graphs' curves and grid come from market-graph.css; this is the stage: the set
   and its context (left), the question and its workspace (middle), and the checklist (right). On a laptop
   from 901 × 600 up it fits one window and each panel scrolls inside itself; up to 1300px wide the
   checklist sits under the question, in one scrolling column; under 900px everything stacks and the page
   scrolls. Theme tokens only. */

/* ---------- the stage ---------- */
.eab-main{gap:10px}
.eab-noscript{padding:16px}
.eab-stage{flex:1;min-height:0;display:grid;grid-template-columns:minmax(240px,290px) minmax(0,1fr) minmax(250px,310px);gap:12px}
.eab-left{padding:12px 14px;min-height:0;min-width:0;overflow:auto;display:flex;flex-direction:column;gap:12px}
.eab-work{padding:14px 16px;min-height:0;min-width:0;overflow:auto;display:flex;flex-direction:column;gap:10px;container-type:inline-size}
.eab-fb{padding:12px 14px;min-height:0;min-width:0;overflow:auto}
.eab-left h2,.eab-fb h2{margin:0;font:600 11.5px/1.2 var(--font-display);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.eab-left,.eab-work,.eab-fb{position:relative}
.eab-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.eab-hint{font:400 12.5px/1.4 var(--font-body);color:var(--muted);margin:0;letter-spacing:0;text-transform:none}
.eab-note{font-size:12.5px;line-height:1.45;color:var(--muted);margin:8px 0 0}
.eab-grow{flex:1}

/* the title bar's toggle: shorter names on a phone, so it fits */
.eab-sm{display:none}
@media (max-width:480px){
  .eab-lg{display:none}
  .eab-sm{display:inline}
  .rp-controls .seg-toggle[data-name="model"] button{padding:8px 9px}
  .rp-controls .seg-toggle[data-name="model"]{max-width:100%;overflow-x:auto;scrollbar-width:none}
}

/* ---------- the set and its context ---------- */
.eab-pick{display:flex;flex-direction:column;gap:6px}
.eab-pick-row{display:flex;gap:6px;align-items:stretch}
.eab-select{font:500 14px/1.3 var(--font-body);color:var(--ink);background:var(--panel);border:1px solid var(--line-strong);border-radius:6px;padding:7px 8px;min-width:0;min-height:36px}
.eab-pick-row .eab-select{flex:1}
.eab-select:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.eab-step{min-width:36px}
.eab-context{font-size:14px;line-height:1.5;color:var(--ink)}
.eab-context h3{margin:2px 0 6px;font:700 17px/1.25 var(--font-display);color:var(--ink)}
.eab-context p{margin:0 0 8px}
.eab-model{font:600 11.5px/1.2 var(--font-display) !important;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-deep);margin:0 !important}
.eab-context .eab-note{margin-top:4px}
table.eab-data{width:100%;border-collapse:collapse;font-size:13px;margin:4px 0 8px}
table.eab-data caption{caption-side:top;text-align:left;font-weight:600;color:var(--ink-soft);padding-bottom:4px}
table.eab-data th,table.eab-data td{border-bottom:1px solid var(--line);padding:4px 6px;text-align:left}
table.eab-data td + td,table.eab-data th + th{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.eab-partnav{display:flex;flex-direction:column;gap:6px}
.eab-parts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.eab-partbtn{width:100%;display:flex;align-items:center;gap:8px;text-align:left;font:500 14px/1.25 var(--font-body);color:var(--ink);background:transparent;border:1px solid transparent;border-radius:6px;padding:7px 8px;cursor:pointer;min-height:38px}
.eab-partbtn:hover{background:var(--panel-2)}
.eab-partbtn.current{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-deep);font-weight:600}
.eab-partbtn:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.eab-pl{flex:1}
.eab-dot{width:12px;height:12px;border-radius:50%;flex:none;border:2px solid var(--line-strong);background:transparent}
.eab-dot.first{background:var(--ok);border-color:var(--ok)}
.eab-dot.later{background:var(--ok-tint);border-color:var(--ok)}
.eab-dot.wrong{background:var(--bad-tint);border-color:var(--bad)}
.eab-dot.sum{border-radius:3px;border-color:var(--accent)}

/* the level tags: Achieved, Merit, Excellence */
.eab-lv{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:4px;font:700 11px/1 var(--font-mono);flex:none;vertical-align:1px}
.eab-badge{display:inline-block;padding:3px 8px;border-radius:999px;font:600 12px/1.3 var(--font-display);white-space:nowrap}
.lv-A{background:var(--accent-tint);color:var(--accent-deep)}
.lv-M{background:var(--hint-tint);color:var(--hint)}
.lv-E{background:var(--warn-tint);color:var(--warn)}

/* ---------- the question ---------- */
.eab-qhead{display:flex;align-items:center;gap:8px 10px;flex-wrap:wrap}
.eab-qhead h2{margin:0;font:700 17px/1.25 var(--font-display);color:var(--ink)}
.eab-qhead h2:focus{outline:none}
.eab-kind{font:600 12px/1.2 var(--font-display);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.eab-q{margin:0;font-size:15.5px;line-height:1.5;color:var(--ink)}
.eab-space{display:flex;flex-direction:column;gap:10px;flex:none}
.eab-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:4px}

/* ---------- graphs ---------- */
.eab-graphs{display:flex;gap:10px;min-width:0}
.eab-fig{margin:0;flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.eab-fig figcaption{font:600 13px/1.3 var(--font-display);color:var(--ink-soft);text-align:center}
.eab-svgbox{min-width:0}
.eab-svg{display:block;width:100%;height:auto;max-height:max(250px,calc(100dvh - 380px));margin:0 auto;background:var(--panel);border:1px solid var(--line);border-radius:6px;user-select:none;-webkit-user-select:none}
.eab-graphs.n2 .eab-svg{max-height:max(220px,calc(100dvh - 400px))}
.eab-svg.live{touch-action:none;cursor:crosshair}
.eab-svg:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.eab-svg .eab-hit{stroke:transparent;stroke-width:24;cursor:grab;pointer-events:stroke}
.eab-svg .eab-hit[data-k="price"]{cursor:ns-resize}
.eab-svg .eab-hit:not([data-k="price"]){cursor:ew-resize}
.eab-svg .eab-sub{font-size:72%}
.eab-svg text{font-size:calc(13px * var(--k,1))}
.eab-svg .axis-tick-text{font-size:calc(11px * var(--k,1))}
.eab-svg .axis-title{font-size:calc(13px * var(--k,1))}
.eab-svg .eab-cl{font-weight:600;font-size:calc(15px * var(--k,1))}
.eab-svg .eab-cl.ghost{fill:var(--muted);font-weight:400}
.eab-svg .eab-proj{stroke:var(--ink-soft);stroke-width:1.5;stroke-dasharray:4 4;fill:none}
.eab-svg .eab-proj.mark{stroke:var(--warn);stroke-width:2}
.eab-svg .eab-axl{font-weight:600;font-size:calc(14px * var(--k,1));fill:var(--ink)}
.eab-svg .eab-axl.mark{fill:var(--warn)}
.eab-svg .eab-mark{fill:var(--warn);stroke:var(--panel);stroke-width:2.5}
.eab-svg .eab-price{stroke:var(--accent-b);stroke-width:3}
.eab-svg .eab-price.ghost{stroke:var(--muted);stroke-width:2;stroke-dasharray:6 5}
.eab-svg .eab-plabel{font-weight:700;font-size:calc(15px * var(--k,1));fill:var(--accent-b-deep)}
.eab-svg .eab-plabel.ghost{fill:var(--muted);font-weight:400}
.eab-svg .eab-arrow{stroke:var(--hint);stroke-width:4;stroke-opacity:.75;fill:none}
.eab-svg .eab-ah{fill:var(--hint)}
.eab-svg .eab-drop{stroke:var(--line-strong);stroke-width:1.2;stroke-dasharray:3 4}
.eab-svg .eab-brk{stroke:var(--ok);stroke-width:2.5;fill:none}
.eab-svg .eab-pill{fill:var(--ok-tint);stroke:var(--ok);stroke-width:1.5}
.eab-svg .eab-gapt{font-weight:700;font-size:calc(14px * var(--k,1));fill:var(--ok)}
.eab-svg .eab-gap.ghost .eab-brk{stroke:var(--muted)}
.eab-svg .eab-gap.ghost .eab-pill{fill:var(--panel-2);stroke:var(--muted)}
.eab-svg .eab-gap.ghost .eab-gapt{fill:var(--muted)}
.eab-svg .eab-gap.ask .eab-pill{stroke-dasharray:3 3}
.eab-svg .eab-cell{fill:transparent;stroke:var(--line-strong);stroke-width:1;stroke-dasharray:3 3;cursor:pointer}
.eab-svg .eab-cell:hover{fill:var(--accent-tint)}
.eab-svg .eab-cell.on{fill:var(--accent);fill-opacity:.38;stroke:var(--accent-deep);stroke-dasharray:none}

.eab-tools{display:flex;flex-wrap:wrap;gap:10px 18px}
.eab-tool{display:flex;flex-direction:column;gap:5px;min-width:0}
.eab-tool > label,.eab-tl{font:600 13px/1.3 var(--font-display);color:var(--ink)}
.eab-tl output{font:600 13px/1.3 var(--font-mono);color:var(--accent-deep)}
.eab-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.eab-row .eab-select{flex:1 1 100%}
.eab-tool .btn-sm{font-size:13px;padding:6px 10px;min-height:34px}
.eab-choices{display:flex;flex-wrap:wrap;gap:6px}
.eab-chip{font:600 14px/1.2 var(--font-body);padding:7px 14px;min-height:36px;border-radius:999px;border:1.5px solid var(--line-strong);background:var(--panel);color:var(--ink);cursor:pointer}
.eab-chip:hover{border-color:var(--accent)}
.eab-chip[aria-checked="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.eab-chip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* one graph: the controls beside it, where there's room */
@container (min-width:560px){
  .eab-space:has(> .eab-graphs.n1){display:grid;grid-template-columns:minmax(0,1fr) 210px;align-items:start}
  .eab-space:has(> .eab-graphs.n1) .eab-tools{flex-direction:column;flex-wrap:nowrap}
}
@container (max-width:520px){
  .eab-graphs.n2{flex-direction:column}
}

/* ---------- calculations ---------- */
.eab-calc{display:flex;flex-direction:column;gap:10px;max-width:560px}
.eab-in label{display:block;font:600 14px/1.35 var(--font-body);color:var(--ink);margin-bottom:4px}
.eab-inrow{display:flex;align-items:center;gap:6px}
.eab-inrow input{font:500 16px/1.2 var(--font-mono);width:150px;max-width:50vw;padding:7px 9px;border:1.5px solid var(--line-strong);border-radius:6px;background:var(--panel);color:var(--ink);min-height:40px}
.eab-inrow input:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.eab-unit{font:500 14px var(--font-mono);color:var(--ink-soft)}
.eab-mk{font:700 16px var(--font-body);width:18px}
.eab-in.ok input{border-color:var(--ok);background:var(--ok-tint)}
.eab-in.ok .eab-mk{color:var(--ok)}
.eab-in.no input{border-color:var(--bad);background:var(--bad-tint)}
.eab-in.no .eab-mk{color:var(--bad)}

/* ---------- short answers ---------- */
.eab-opts{display:flex;flex-direction:column;gap:8px}
.eab-opt{text-align:left;font:500 15px/1.4 var(--font-body);padding:11px 14px;border-radius:8px;border:1.5px solid var(--line-strong);background:var(--panel);color:var(--ink);cursor:pointer;display:flex;flex-direction:column;gap:5px;min-height:44px}
.eab-opt:hover:not(:disabled){border-color:var(--accent);background:var(--accent-tint)}
.eab-opt:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.eab-opt .why{font-size:13.5px;color:var(--ink-soft)}
.eab-opt.wrong{border-color:var(--bad);background:var(--bad-tint);cursor:default}
.eab-opt.right{border-color:var(--ok);background:var(--ok-tint);cursor:default}
.eab-opt .why.ok{color:var(--ok);font-weight:700}
.eab-opt:disabled:not(.right):not(.wrong){opacity:.55;cursor:default}

/* ---------- flow diagrams ---------- */
.eab-flow{display:grid;grid-template-columns:110px minmax(0,1fr) 110px;gap:10px;align-items:stretch}
.eab-country{display:flex;align-items:center;justify-content:center;text-align:center;font:700 16px/1.25 var(--font-display);color:var(--accent-deep);background:var(--accent-tint);border:2px solid var(--accent);border-radius:10px;padding:10px}
.eab-flows{display:flex;flex-direction:column;gap:10px}
.eab-fl{border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;background:var(--panel)}
.eab-fl.ok{border-color:var(--ok);background:var(--ok-tint)}
.eab-fl.no{border-color:var(--bad);background:var(--bad-tint)}
.eab-fl.ok .eab-mk{color:var(--ok)}
.eab-fl.no .eab-mk{color:var(--bad)}
.eab-fthing{font:600 14px/1.3 var(--font-body);text-align:center;color:var(--ink)}
.eab-farrow{position:relative;height:14px}
.eab-farrow .shaft{position:absolute;left:8px;right:8px;top:6px;height:3px;border-radius:2px;background:var(--line-strong)}
.eab-farrow.to-r .shaft,.eab-farrow.to-l .shaft{background:var(--warn)}
.eab-farrow.to-r::after,.eab-farrow.to-l::after{content:"";position:absolute;top:1px;border:6px solid transparent}
.eab-farrow.to-r::after{right:0;border-left:10px solid var(--warn);border-right:0}
.eab-farrow.to-l::after{left:0;border-right:10px solid var(--warn);border-left:0}
.eab-fctl{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:center}
.eab-fctl .eab-chip{font-size:13px;padding:6px 10px}

/* ---------- written answers ---------- */
.eab-write{display:grid;grid-template-columns:1fr;gap:12px}
.eab-write .eab-built{order:-1}
@container (min-width:620px){ .eab-write{grid-template-columns:1fr 1fr} .eab-write .eab-built{order:0} }
.eab-write h3{margin:0 0 6px;font:600 12px/1.2 var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.eab-blocks{display:flex;flex-direction:column;gap:6px}
.eab-block{text-align:left;font:400 14px/1.4 var(--font-body);color:var(--ink);background:var(--panel-2);border:1.5px dashed var(--line-strong);border-radius:8px;padding:8px 10px;cursor:pointer;min-height:40px}
.eab-block:hover{border-color:var(--accent);border-style:solid;background:var(--accent-tint)}
.eab-block:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.eab-ans{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;counter-reset:piece}
.eab-piece{display:flex;gap:6px;align-items:flex-start;background:var(--panel);border:1.5px solid var(--accent);border-radius:8px;padding:6px 6px 6px 10px;counter-increment:piece}
.eab-piece::before{content:counter(piece);font:700 12px/20px var(--font-mono);color:var(--accent-deep);flex:none}
.eab-piece.flagged{border-color:var(--bad);background:var(--bad-tint)}
.eab-ptext{flex:1;font-size:14px;line-height:1.4;color:var(--ink)}
.eab-pbtns{display:flex;gap:2px;flex:none}
.eab-ib{width:32px;height:32px;border-radius:6px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink-soft);cursor:pointer;font-size:12px;padding:0}
.eab-ib:hover:not(:disabled){border-color:var(--accent);color:var(--accent-deep)}
.eab-ib:disabled{opacity:.35;cursor:default}
.eab-ib:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
.eab-empty{font-size:13.5px;color:var(--muted);border:1.5px dashed var(--line);border-radius:8px;padding:14px;text-align:center}
.eab-own{border-top:1px solid var(--line);padding-top:8px}
.eab-own summary{cursor:pointer;font:600 14px/1.3 var(--font-display);color:var(--ink);min-height:32px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.eab-own textarea{width:100%;margin:8px 0;font:400 14.5px/1.5 var(--font-body);color:var(--ink);background:var(--panel);border:1.5px solid var(--line-strong);border-radius:6px;padding:8px 10px;resize:vertical;box-sizing:border-box}
.eab-own textarea:focus-visible{outline:2px solid var(--focus);outline-offset:1px}

/* ---------- the checklist ---------- */
.eab-intro{font-size:14px;line-height:1.5;color:var(--ink-soft);margin:8px 0}
.eab-sub{margin:12px 0 4px;font:600 12px/1.2 var(--font-display);color:var(--ink-soft)}
.eab-verdict{margin:8px 0;padding:8px 10px;border-radius:6px;font:600 14px/1.35 var(--font-body)}
.eab-verdict.ok{background:var(--ok-tint);color:var(--ok)}
.eab-verdict.no{background:var(--bad-tint);color:var(--bad)}
.eab-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.eab-item{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;line-height:1.45;color:var(--ink)}
.eab-tick{font:700 15px/20px var(--font-body);width:16px;flex:none;text-align:center}
.eab-item.ok .eab-tick{color:var(--ok)}
.eab-item.no .eab-tick{color:var(--bad)}
.eab-item.todo .eab-tick{color:var(--muted)}
.eab-it{flex:1;min-width:0}
.eab-why{display:block;margin-top:3px;color:var(--ink-soft)}
.eab-fix{display:block;margin-top:3px;color:var(--ok);font-weight:600}
.eab-fix::before{content:"→ "}
.eab-sol,.eab-model-ans,.eab-self{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.eab-sol h3,.eab-self h3,.eab-mh{margin:0 0 6px;font:600 13px/1.3 var(--font-display);color:var(--ink)}
.eab-mh{margin-top:12px}
.eab-sol ol{margin:0;padding-left:20px;font-size:13.5px;line-height:1.5;color:var(--ink)}
.eab-sol li + li{margin-top:4px}
.eab-model-ans summary{cursor:pointer;font:600 13px/1.3 var(--font-display);color:var(--ink);min-height:28px}
.eab-model-ans p{margin:6px 0 0;font-size:13.5px;line-height:1.55;color:var(--ink);background:var(--panel-2);border-left:3px solid var(--ok);padding:8px 10px;border-radius:0 6px 6px 0}
.eab-self ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.eab-self label{display:flex;gap:8px;align-items:flex-start;font-size:13.5px;line-height:1.4;cursor:pointer}
.eab-self input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--accent);flex:none}
.eab-help{margin:12px 0 0}

/* ---------- the set's summary ---------- */
table.eab-sum{width:100%;border-collapse:collapse;font-size:14px}
table.eab-sum caption{caption-side:top;text-align:left;font:600 13px/1.3 var(--font-display);color:var(--ink-soft);padding-bottom:6px}
table.eab-sum th,table.eab-sum td{padding:8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
table.eab-sum th{font:600 12px/1.2 var(--font-display);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.eab-st{font-weight:600;white-space:nowrap}
.eab-st.first{color:var(--ok)}
.eab-st.later{color:var(--ok)}
.eab-st.no{color:var(--bad)}
.eab-st.none,.eab-st.na{color:var(--muted);font-weight:400}

/* ---------- laptops up to 1200px: the checklist moves under the question (the script moves it into the
   question's panel), so the two scroll together ---------- */
@media (max-width:1199px){
  .eab-stage{grid-template-columns:minmax(230px,260px) minmax(0,1fr)}
  .eab-fb.in-work{border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none;padding:12px 0 0;overflow:visible;flex:none}
}
/* ---------- tablets and phones: everything stacks and the page scrolls ---------- */
@media (max-width:900px){
  .eab-stage{display:flex;flex-direction:column}
  .eab-left,.eab-work,.eab-fb{overflow:visible}
  .eab-left{order:1}.eab-work{order:2}.eab-fb{order:3}
  .eab-svg,.eab-graphs.n2 .eab-svg{max-height:none}
  .eab-partbtn,.eab-select,.eab-chip,.eab-tool .btn-sm,.eab-step{min-height:40px}
  .eab-ib{width:40px;height:40px}
  .eab-actions .btn{min-height:40px}
}
@media (max-width:640px){
  .eab-work,.eab-left,.eab-fb{padding:10px}
  .eab-flow{grid-template-columns:1fr;gap:6px}
  .eab-country{padding:6px}
  .eab-flow .eab-country.r{order:3}
  .eab-flows{order:2}
  .eab-farrow{display:none}
}
