/* Slate & Lime (palette A from EIC Settings) */
:root{
  --title:#3E5462; --title-text:#FFFFFE; --accent:#CBD86A; --accent-text:#2E3D47;
  --header:#E3E8EB; --header-dark:#55656F; --label:#D3DADF; --panel:#EDF0F2; --section:#ECF1D0;
  --ring:#DDE8F1; --r1r2:#BDD1E3; --ir:#F3DBD6; --zs:#D6E8CF; --rcd:#EAF3E4; --input:#FBF6DA;
  --btn-cct:#E4ECBE; --btn-dev:#E1E6EA; --btn-rcbo:#C8D3DB; --btn-cab:#EEF0E8; --btn-util:#C9D0D5; --btn-text:#23313A;
  --comments:#BFBFBF; --zscol:#D9D9D9; --line:#9AA5AD; --row-h:34px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;}
body{font-family:Arial,Helvetica,sans-serif;font-size:13px;color:#000;background:#fff;display:flex;flex-direction:column;height:100dvh;overflow:hidden;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left);-webkit-text-size-adjust:100%}
button{font:inherit;color:var(--btn-text);background:var(--btn-util);border:1px solid var(--header-dark);border-radius:7px;padding:0 12px;min-height:38px;font-weight:bold;font-size:12px;white-space:nowrap;touch-action:manipulation;cursor:pointer}
button:active{filter:brightness(.92)}
button.ghost{background:transparent;border-color:transparent}
button.on{background:var(--accent);color:var(--accent-text)}
#top{display:flex;align-items:stretch;gap:8px;padding:6px 8px;background:#fff}
.logo{width:64px;min-height:40px;border:1.5px dashed var(--header-dark);color:var(--header-dark);display:flex;align-items:center;justify-content:center;font-weight:bold;font-size:11px;border-radius:4px}
.title{flex:1;background:var(--title);color:var(--title-text);font-weight:bold;font-size:17px;display:flex;align-items:center;padding:0 14px;border-right:3px solid #505050;border-bottom:3px solid #505050}
.dbbox{width:30%;max-width:260px;background:var(--accent);color:var(--accent-text);font-weight:bold;font-size:17px;text-align:center;border:2px solid #505050;border-top-width:1px}
.dbbox::placeholder{color:#55656F;font-size:12px;font-weight:normal}
#tabs{display:flex;gap:4px;padding:0 8px;border-bottom:2px solid var(--title);background:#fff}
#tabs button{border-radius:8px 8px 0 0;border-bottom:none;background:var(--panel);min-height:36px}
#tabs button.on{background:var(--title);color:var(--title-text)}
#tabs .grow{flex:1}
#toolbar{display:flex;gap:6px;padding:6px 8px;overflow-x:auto;background:var(--panel);border-bottom:1px solid var(--line);-webkit-overflow-scrolling:touch;scrollbar-width:thin}
#toolbar .sep{width:1px;background:var(--line);margin:2px 2px}
#toolbar button.fill{min-width:46px;font-size:14px}
#panel{max-height:42vh;overflow:auto;background:#fff;border-bottom:2px solid var(--header-dark);padding:6px 8px 10px}
#panel h4{margin:10px 0 4px;font-size:12px;color:var(--accent-text)}
#panel .grp{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
#panel .grp button{min-width:96px}
#panel .b-CCT{background:var(--btn-cct)} #panel .b-DEV{background:var(--btn-dev)} #panel .b-RCBO{background:var(--btn-rcbo)} #panel .b-CAB{background:var(--btn-cab)}
#panel .pick{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:4px 0}
#panel .pick label{font-weight:bold;min-width:84px}
#panel select,#panel input,.dlg input,.dlg select{font:inherit;font-size:14px;min-height:38px;background:var(--input);border:1px solid var(--line);border-radius:4px;padding:0 6px;max-width:100%}
#panel .hint{color:#404040;font-size:11px;margin:2px 0 6px}
#sheet{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;position:relative;background:#fff;overscroll-behavior:contain}
/* board detail block (stays put while the table scrolls sideways) */
.hdrblk{position:sticky;left:0;width:min(100vw,1100px);padding:8px;display:flex;flex-wrap:wrap;gap:8px}
.box{border:1.5px solid #505050;background:var(--label);flex:1 1 340px;min-width:300px}
.box>h3{margin:0;font-size:13px;text-align:center;padding:5px;background:var(--label);border-bottom:1px solid #505050}
.box.dark>h3{background:var(--header-dark);color:var(--title-text)}
.box.dark{background:var(--panel)}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;padding:8px}
.fld{display:flex;flex-direction:column;gap:2px;font-size:11px}
.fld span{color:#222}
.fld input{font:inherit;font-size:14px;min-height:36px;border:1px solid #505050;background:#fff;padding:0 6px;width:100%}
.fld input.lst{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2355656F'/%3E%3C/svg%3E") no-repeat right 6px center;padding-right:18px}
/* schedule table */
table.sch{border-collapse:separate;border-spacing:0;table-layout:fixed;margin:0 8px 0 8px}
.sch th,.sch td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0;height:var(--row-h)}
.sch thead th{position:sticky;background:var(--header);font-weight:normal;font-size:10px;line-height:1.15;text-align:center;vertical-align:middle;padding:2px;z-index:2;border-top:1px solid var(--line)}
.sch thead tr:nth-child(1) th{top:0}
.sch thead tr:nth-child(2) th{top:var(--h1)}
.sch thead tr:nth-child(3) th{top:var(--h2)}
.sch thead th.vert span{writing-mode:vertical-rl;transform:rotate(180deg);display:inline-block;max-height:150px}
.sch thead th.dark{background:var(--header-dark);color:#fff;font-weight:bold;font-size:13px}
.sch thead th.dark.big{font-size:22px}
.sch th.u-ring{background:var(--ring)} .sch th.u-r1r2{background:var(--r1r2)} .sch th.u-ir{background:var(--ir)} .sch th.u-zs{background:var(--zs)} .sch th.u-rcd{background:var(--rcd)}
.sch .cid{position:sticky;left:0;z-index:1;background:#fff;text-align:center;font-size:13px;border-left:1.5px solid #505050;user-select:none;-webkit-user-select:none}
.sch thead th.cid{z-index:3;background:var(--header)}
.sch td input{width:100%;height:100%;border:0;background:transparent;font:inherit;font-size:13px;text-align:center;padding:0 2px;border-radius:0;-webkit-appearance:none;appearance:none;color:inherit}
.sch td input:focus{outline:2.5px solid var(--title);outline-offset:-2px;background:#fff}
.sch td.wide input{text-align:left;padding:0 6px}
.sch td.f-ring{background:var(--ring)} .sch td.f-r1r2{background:var(--r1r2)} .sch td.f-ir{background:var(--ir)} .sch td.f-zs{background:var(--zs)} .sch td.f-rcd{background:var(--rcd)}
.sch td.f-com{background:var(--comments);font-weight:bold}
/* v17: wrap + grow – no clipped text on Circuit Details or Comments */
.sch td.comwrap{height:auto;min-height:var(--row-h);vertical-align:top;white-space:normal}
.sch td.comwrap textarea{display:block;width:100%;min-height:calc(var(--row-h) - 2px);height:auto;border:0;background:transparent;resize:none;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;text-align:left;padding:4px 6px;font:inherit;font-size:13px;line-height:1.25;font-weight:inherit;color:inherit;border-radius:0;-webkit-appearance:none;appearance:none;box-sizing:border-box}
.sch td.comwrap textarea:focus{outline:2.5px solid var(--title);outline-offset:-2px;background:#fff}
.sch tr.has-com td{height:auto;min-height:var(--row-h);vertical-align:middle}
.sch tr.has-com td.comwrap{vertical-align:top}
.sch td.f-com.comwrap textarea{font-weight:bold;text-align:left}
.sch td.na{background:#fff}
.sch td.calc{background:var(--zscol);color:#9C0006;font-weight:bold;font-size:10.5px;text-align:center;line-height:1.1;padding:0 3px}
.sch td.calc.fail{background:#FCE4E4;color:#9C0006}
.sch td.calc.warn{background:#FFF4D6;color:#7F5F00}
.sch td.calc.okc{background:#fff;color:#1E5631}
.sch td.zsfail{background:#FCE4E4;color:#9C0006}
.sch td.zspass{background:#fff;color:#1E5631;font-weight:bold}
.sch td.r1warn{background:#FFF4D6;color:#7F5F00}
.sch td.bad input{outline:2px dashed #C00000;outline-offset:-3px}
.sch tr.sec td{background:var(--section);color:var(--accent-text);font-weight:bold;text-align:center;height:28px}
.sch tr.sec td.seclab{background:var(--section);white-space:nowrap;text-align:center;border-left:1.5px solid #505050}
.sch tr.sec td.secw{background:#fff}
.sch tr.sec td.seclab span{position:relative;z-index:2}
.sch td{position:relative}
.sch td.sel{background-image:linear-gradient(rgba(203,216,106,.45),rgba(203,216,106,.45))}
.sch tr.rowsel td.cid{background:var(--accent);font-weight:bold}
.selmode .sch td input{pointer-events:none}
.ftblk{position:sticky;left:0;width:min(100vw,1100px);padding:8px}
.tested{background:var(--header-dark);color:#fff;padding:6px 8px;display:grid;grid-template-columns:auto 1fr auto 150px auto;gap:6px;align-items:center;border:1.5px solid #505050}
.tested b{grid-column:1/-1;font-size:11px}
.tested input{font:inherit;font-size:14px;min-height:36px;border:1px solid #505050;padding:0 6px;width:100%}
.notes{font-size:10px;color:#333;margin:6px 0}
.codes{border:1.5px solid #505050;margin-top:6px}
.codes h3{margin:0;background:var(--label);text-align:center;font-size:12px;padding:4px}
.codes .g{display:grid;grid-template-columns:repeat(10,1fr)}
.codes .g div{border-right:1px solid var(--line);padding:3px;font-size:10px;text-align:center}
.codes .g div.k{background:var(--header);font-weight:bold;font-size:12px;border-bottom:1px solid var(--line)}
.brand{text-align:center;font-size:10px;color:#555;padding:8px 0 16px}
#status{min-height:26px;padding:4px 10px calc(4px + env(safe-area-inset-bottom));font-size:12px;background:var(--panel);border-top:1px solid var(--line);color:#23313A}
#picker{position:fixed;inset:0;background:rgba(30,40,47,.45);display:flex;align-items:flex-end;justify-content:center;z-index:50}
#picker[hidden]{display:none}
.pk-card{background:#fff;width:min(560px,100%);max-height:75vh;overflow:auto;border-radius:14px 14px 0 0;padding:10px 12px calc(12px + env(safe-area-inset-bottom))}
.pk-head{display:flex;align-items:center;font-weight:bold;font-size:14px;margin-bottom:8px}.pk-head span{flex:1}
.pk-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.pk-opts button{min-height:46px;background:var(--btn-dev);font-size:14px;white-space:normal}
.pk-opts button.cur{background:var(--accent)}
.pk-other{display:flex;gap:6px;margin-top:10px}.pk-other input{flex:1;font-size:16px;min-height:42px;border:1px solid var(--line);padding:0 8px}
.dlg{display:grid;grid-template-columns:auto 1fr;gap:8px 10px;align-items:center}
@media (max-width:600px){
  .title{font-size:13px;padding:0 8px}
  .dbbox{font-size:14px}
  .logo{width:46px;font-size:10px}
}

/* ---- zoom (A- / A+) : --z is set on <html> by app.js ---- */
:root{--z:1}
.zoombox{display:flex;align-items:center;gap:4px;margin:2px 0}
.zoombox button{min-width:52px;min-height:40px;font-size:20px;padding:0 8px;background:var(--accent);color:var(--accent-text);border-width:2px}
.zoombox span{min-width:48px;text-align:center;font-weight:bold;font-size:14px;color:var(--accent-text)}
.sch th,.sch td{height:calc(var(--row-h)*var(--z))}
.sch tr.has-com td,.sch td.comwrap{height:auto;min-height:calc(var(--row-h)*var(--z))}
.sch thead th{font-size:calc(10px*var(--z))}
.sch thead th.dark{font-size:calc(13px*var(--z))}
.sch thead th.dark.big{font-size:calc(22px*var(--z))}
.sch thead th.vert span{max-height:calc(150px*var(--z))}
.sch .cid,.sch td input{font-size:calc(13px*var(--z))}
.sch td.calc{font-size:calc(10.5px*var(--z))}
.sch tr.sec td{height:calc(28px*var(--z));font-size:calc(13px*var(--z))}
.box>h3{font-size:calc(13px*var(--z))}
.fgrid{grid-template-columns:repeat(auto-fill,minmax(calc(150px*var(--z)),1fr))}
.fld{font-size:calc(11px*var(--z))}
.fld input,.tested input{font-size:calc(14px*var(--z));min-height:calc(36px*var(--z))}
.tested,.tested b{font-size:calc(12px*var(--z))}
.notes,.codes .g div,.brand{font-size:calc(10px*var(--z))}
.codes h3,.codes .g div.k{font-size:calc(12px*var(--z))}
.trbar{font-size:calc(13px*var(--z))}

/* ---- print / PDF ---- */
#print{display:none}
@media print{
  html,body{height:auto !important;overflow:visible !important;max-width:none !important;width:auto !important;display:block !important;padding:0;background:#fff}
  body > *:not(#print){display:none !important}
  #print{display:block}
}
#print *{-webkit-print-color-adjust:exact;print-color-adjust:exact;box-sizing:border-box}
.pg{position:relative;overflow:hidden;font-family:Arial,Helvetica,sans-serif;color:#000;background:#fff;page-break-after:always;break-after:page;display:block}
.pg:last-child{page-break-after:auto;break-after:auto}
.pg .phd,.pg .pft{display:flex;justify-content:space-between;font-size:6.5pt;color:#222;gap:4mm}
.pg .phd{min-height:4mm}
.pg .pft{position:absolute;left:0;right:0;bottom:0;padding:0 8mm 4mm}
.pg .pft span,.pg .phd span{flex:1}.pg .pft span:nth-child(2),.pg .phd span:nth-child(2){text-align:center}.pg .pft span:last-child,.pg .phd span:last-child{text-align:right}
.pg .ttl{display:flex;gap:3%;align-items:stretch;margin:2mm 0 2mm}
.pg .ttl .t{width:50%;background:#3E5462;color:#FFFFFE;font-weight:bold;font-size:12pt;text-align:center;padding:1.8mm;border-right:1mm solid #505050;border-bottom:1mm solid #505050}
.pg .ttl .d{flex:1;background:#CBD86A;color:#2E3D47;font-weight:bold;font-size:11pt;display:flex;align-items:center;justify-content:center;border:.4mm solid #505050}
.pg .blk{display:flex;gap:0;border:.35mm solid #505050;margin-bottom:1.5mm}
.pg .bx{flex:1;background:#D3DADF;padding:1mm 1.5mm}
.pg .bx.dk{background:#EDF0F2;border-left:.35mm solid #505050}
.pg .bx h5{margin:-1mm -1.5mm 1mm;padding:.8mm;font-size:7pt;text-align:center;background:#D3DADF;border-bottom:.3mm solid #505050}
.pg .bx.dk h5{background:#55656F;color:#fff}
.pg .kv{display:grid;gap:.9mm 1.5mm;align-items:center;font-size:5.8pt}
.pg .kv .l{text-align:right;line-height:1.1}
.pg .kv .v{background:#fff;border:.3mm solid #000;min-height:4.2mm;display:flex;align-items:center;justify-content:center;font-size:6.5pt;padding:0 .8mm;text-align:center;overflow:hidden}
.pg .bar{background:#55656F;color:#fff;text-align:center;font-size:7.5pt;padding:.5mm}
.pg table.ps{width:100%;border-collapse:collapse;table-layout:fixed;border:.4mm solid #505050}
.pg table.ps th,.pg table.ps td{border:.2mm solid #6b7780;padding:0 .4mm;text-align:center;vertical-align:middle;overflow:hidden;white-space:nowrap;line-height:1.05}
.pg table.ps th{background:#E3E8EB;font-weight:normal;font-size:5pt;white-space:normal}
.pg table.ps th.v{height:21mm}.pg table.ps th.v div{writing-mode:vertical-rl;transform:rotate(180deg);margin:auto;max-height:20mm}
.pg table.ps th.dkh{background:#55656F;color:#fff;font-weight:bold}
.pg table.ps td.sec{background:#ECF1D0;color:#2E3D47;font-weight:bold}
.pg table.ps td.wl{text-align:left}
.pg table.ps tr.zeb td{box-shadow:inset 0 0 0 999px rgba(30,45,60,.06)}
.pg .u-ring{background:#DDE8F1 !important}.pg .u-r1r2{background:#BDD1E3 !important}.pg .u-ir{background:#F3DBD6 !important}.pg .u-zs{background:#D6E8CF !important}.pg .u-rcd{background:#EAF3E4 !important}
.pg td.na{background:#fff !important}
.pg td.zsfail{background:#FCE4E4 !important;color:#9C0006}.pg td.zspass{background:#fff !important;color:#1E5631;font-weight:bold}.pg td.r1warn{background:#FFF4D6 !important;color:#7F5F00}
.pg .tby{display:grid;grid-template-columns:auto 1fr auto 35%;gap:1mm 2mm;align-items:center;background:#55656F;color:#fff;font-size:6.5pt;padding:1mm 1.5mm;border:.4mm solid #505050;border-top:0}
.pg .tby b{grid-column:1/-1;font-size:6pt}.pg .tby .v{background:#fff;color:#000;min-height:4.5mm;display:flex;align-items:center;padding:0 1mm}
.pg .nts{font-size:4.8pt;margin-top:1mm;color:#222}
.pg .cds{border:.4mm solid #505050;margin-top:1.2mm}
.pg .cds .h{background:#D3DADF;text-align:center;font-weight:bold;font-size:6.5pt;padding:.6mm}
.pg .cds .g{display:grid;grid-template-columns:repeat(10,1fr)}
.pg .cds .g div{border-right:.2mm solid #6b7780;font-size:5pt;text-align:center;padding:.5mm}
.pg .cds .g div.k{background:#E3E8EB;font-weight:bold;font-size:6.5pt;border-bottom:.2mm solid #6b7780}
.pg .cmb{background:#CBD86A;color:#2E3D47;font-weight:bold;font-size:7pt;padding:.8mm 1.5mm;border:.4mm solid #505050;border-top:0}
.pg .cmt{background:#3E5462;color:#fff;font-weight:bold;font-size:11pt;padding:1.5mm 2mm}
html,body{max-width:100vw;overflow:hidden}
#tabs{flex-wrap:nowrap;overflow-x:auto;align-items:flex-end;scrollbar-width:none}
#tabs button[data-tab]{flex:0 0 auto}
@media (max-width:600px){
  #tabs button[data-tab]{padding:0 8px;font-size:11.5px}
  .zoombox button{min-width:46px;font-size:19px}
  .zoombox span{min-width:40px;font-size:12px}
  #btnSettings{padding:0 6px}
}
.pk-head span{min-width:0}
.pk-head button{flex:0 0 auto;font-size:20px;min-width:44px}

/* ---- top-bar Quick fill button (replaces A-/A+) ---- */
#tabs button.qf{min-height:40px;border-radius:8px;border-bottom:2px solid var(--header-dark);font-size:15px;padding:0 14px;background:var(--accent);color:var(--accent-text);border-width:2px;margin:2px 0;flex:0 0 auto}
#tabs button.qf.on{background:var(--title);color:#fff}
#panel .grp button.sq{min-width:52px;font-size:15px}
/* iOS zooms the page when a text box under 16px gets focus; keep typed text cells at 16px there */
@supports (-webkit-touch-callout:none){ .sch td.wide input,.fld input,.tested input,#pkInput,.dbbox{font-size:16px} }
/* ---- in-app number keypad ---- */

.sch td input[data-kp]{caret-color:transparent;cursor:pointer}
#keypad{position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fff;border-top:3px solid var(--title);box-shadow:0 -4px 14px rgba(0,0,0,.18);
  padding:6px 8px calc(6px + env(safe-area-inset-bottom));max-width:460px;margin-left:auto;border-radius:12px 12px 0 0;touch-action:manipulation;user-select:none;-webkit-user-select:none}
#keypad[hidden]{display:none}
.kp-head{display:flex;gap:8px;align-items:baseline;font-size:13px;margin:0 2px 5px;white-space:nowrap;overflow:hidden}
.kp-head span{overflow:hidden;text-overflow:ellipsis;color:#333}
.kp-head .kp-val{margin-left:auto;font-weight:bold;font-size:16px;color:var(--title);min-width:60px;text-align:right}
.kp-chips{display:flex;gap:5px;overflow-x:auto;margin-bottom:5px;scrollbar-width:none}
.kp-chips button{min-height:36px;padding:0 10px;font-size:14px;background:var(--btn-dev);flex:0 0 auto}
.kp-chips button.ir{background:var(--ir)}
.kp-chips button.cur{background:var(--accent)}
.kp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}
.kp-grid button{min-height:46px;font-size:21px;background:var(--panel);padding:0;display:flex;align-items:center;justify-content:center;line-height:1;overflow:hidden;box-sizing:border-box}
.kp-grid button.fn{background:var(--btn-dev);font-size:16px}
.kp-grid button.nav{background:var(--btn-rcbo);font-size:22px}
.kp-grid button.done{background:var(--accent);color:var(--accent-text);font-size:16px}
@media (max-height:520px){ .kp-grid button{min-height:36px;font-size:18px} .kp-chips button{min-height:30px} }
/* v17: tablet/wide = full-width bottom panel (same as phone, scaled up) – no floating corner box */
@media (min-width:900px){ #keypad{left:0;right:0;bottom:0;max-width:none;margin:0;border-radius:12px 12px 0 0} }
/* Circuit Details — white, faint zebra, slate group dividers, colour only on CPC check */
.sch-cd tbody tr.zeb td{background:#F6F7F8}
.sch-cd td[data-c=E],.sch-cd th[data-c=E],
.sch-cd td[data-c=J],.sch-cd th[data-c=J],
.sch-cd td[data-c=R],.sch-cd th[data-c=R],
.sch-cd td[data-c=W],.sch-cd th[data-c=W]{border-left:2px solid #3E4F5B}
.sch-cd td.calc.cpc{background:#fff;color:#556}
.sch-cd td.calc.cpc.okc{background:#C6EFCE;color:#006100}
.sch-cd td.calc.cpc.fail,.sch-cd td.calc.cpc.warn{background:#FFC7CE;color:#9C0006}
/* Test Results zebra — darken every group colour slightly on alternate rows; Zs/CPC result colours keep priority */
.sch-tr tbody tr.zeb td:not(.zsfail):not(.zspass):not(.r1warn):not(.fail):not(.warn):not(.okc){box-shadow:inset 0 0 0 999px rgba(30,45,60,.06)}

/* ---- round 2: selection outline drawn on top of every cell colour (zebra, N/A, Zs pass etc.) ---- */
.sch td.sel::after,.sch td.act::after{content:'';position:absolute;inset:0;pointer-events:none;z-index:0}
.sch td.sel::after{border:3px solid #6E8420;background:rgba(203,216,106,.30)}
.sch td.act::after{border:3px solid #16232C;background:rgba(62,84,98,.10)}
.sch td.sel.act::after{border-color:#16232C}
.sch td input:focus{outline:none}
/* board set-up (top of Circuit Details) */
.bsetup{position:sticky;left:0;width:min(calc(100vw - 16px),1084px);margin:8px 8px 0;border:1.5px solid #505050;background:var(--panel);padding:6px 8px}
.bs-row{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.bs-row + .bs-row{margin-top:6px}
.bs-t{font-size:13px;color:var(--accent-text)}
.bs-row label{font-weight:bold;font-size:12px}
.bs-row select,.bs-row input{font:inherit;font-size:14px;min-height:38px;background:var(--input);border:1px solid var(--line);border-radius:4px;padding:0 6px;max-width:100%}
.bs-row select{min-width:0;flex:1 1 220px;max-width:460px}
.seg{display:inline-flex}
.seg button{border-radius:0;background:#fff}
.seg button:first-child{border-radius:7px 0 0 7px}.seg button:last-child{border-radius:0 7px 7px 0;border-left:0}
.seg button.on{background:var(--title);color:#fff}
.bs-cur{font-size:12px;color:#333;font-weight:bold;flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bs-tog{text-decoration:underline;padding:0 6px}
.bs-go{background:var(--accent);color:var(--accent-text)}
.bs-note{font-size:10.5px;color:#444;margin-top:4px}
#panel .b-MUL{min-width:52px;background:var(--btn-rcbo);font-size:14px}
#panel .grp button.b-MUL{min-width:52px}
#panel .b-MUL.ghostb{background:#fff}
#panel .grp button.ct{min-width:110px;font-size:14px}
.sch thead th.tip{cursor:help}
@media (max-width:600px){ .bs-cur{flex-basis:100%;order:3} }

/* round 2b */
.codes .g div.oth{padding:1px}
.codes .g div.oth input{width:100%;font:inherit;font-size:11px;min-height:26px;border:1px solid var(--line);background:var(--input);padding:0 4px}
#panel .b-DEV.on{background:var(--title);color:#fff}
#panel .warnt{color:#9C0006;font-weight:normal}
#panel .kasel{margin-left:10px;font-weight:bold}
#panel .kasel select{min-height:32px;font-size:13px}
#panel h4 .b-MUL{min-height:32px}

/* round 2c: stepped board picker + warning toast */
.crumbs{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px;flex:1 1 auto;min-width:0}
.crumbs .arr{color:#666;margin:0 2px}
.crumb{min-height:32px;background:#fff;font-size:12px;padding:0 9px}
.bs-step{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.bs-sl{font-weight:bold;font-size:12px;color:var(--accent-text);flex-basis:100%}
.bs-opt{background:var(--btn-dev);font-size:13px;min-height:40px}
.bs-opt.on{background:var(--title);color:#fff}
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(38px + env(safe-area-inset-bottom));z-index:60;max-width:min(520px,calc(100vw - 20px));
  display:flex;gap:8px;align-items:flex-start;background:#FFF4D6;color:#5C4500;border:1.5px solid #C9A227;border-radius:10px;padding:8px 6px 8px 10px;box-shadow:0 4px 14px rgba(0,0,0,.2);font-size:12.5px;line-height:1.35}
#toast[hidden]{display:none}
#toast .ti{font-size:16px;line-height:1}
#toast .tm{flex:1}
#toast .tx{min-height:28px;padding:0 8px;font-size:14px;color:#5C4500}

/* round 2e: distribution-circuit device chooser */
.hdev{display:flex;gap:8px;align-items:center;padding:8px 8px 0;flex-wrap:wrap}
.hdev-b{background:var(--accent);color:var(--accent-text)}
.hdev-n{font-size:12px;font-weight:bold;color:#23313A}
.devsheet{position:fixed;inset:0;background:rgba(30,40,47,.45);display:flex;align-items:flex-end;justify-content:center;z-index:55}
.devsheet[hidden]{display:none}
.devsheet .pk-card{max-height:82vh}
.ds-l{font-weight:bold;font-size:12px;color:var(--accent-text);margin:8px 0 4px}
.ds-row{display:flex;flex-wrap:wrap;gap:6px}
.ds-row button{background:var(--btn-dev);min-height:42px;font-size:13px}
.ds-row button.rt{background:var(--btn-rcbo);min-width:64px}
.ds-row button.cur{background:var(--title);color:#fff}
.ds-row button.ghostb{background:#fff}
.ds-man{margin-top:12px;border-top:1px solid var(--line);padding-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px}
.ds-man button{min-height:32px;font-size:11.5px;background:#fff;font-weight:normal}
#toast{width:min(520px,calc(100vw - 20px))}

/* ---- round 3: certificate pages, boards, signatures ---- */
#tabs{gap:6px}
#pageTabs{display:flex;gap:4px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none;align-items:flex-end}
#pageTabs::-webkit-scrollbar{display:none}
#pageTabs button{border-radius:8px 8px 0 0;border-bottom:none;background:var(--panel);min-height:36px;flex:0 0 auto}
#pageTabs button.on{background:var(--title);color:var(--title-text)}
#pageTabs button.bd:not(.on){background:#F4F6E6}
button.dbbox{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;border-radius:0;padding:0 6px;line-height:1.1;min-height:40px}
.dbbox .dbn{font-size:15px;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.dbbox .dbc{font-size:10px;font-weight:normal}
.logo img{max-width:100%;max-height:40px;object-fit:contain}
#toolbar button.dim{opacity:.55}
#toolbar button.desel.on{background:var(--accent)}
#sheet{touch-action:pan-x pan-y}
.sch td.sm input{font-size:calc(10px*var(--z));line-height:1}
/* header boxes fold to one line */
.box.shut{cursor:pointer;flex-basis:100%}
.box.shut>h3{border-bottom:0;text-align:left;padding:5px 10px}
.box h3[data-box]{cursor:pointer}
.bx-t{float:right;font-size:11px;font-weight:normal;text-decoration:underline}
.box.dark .bx-t{color:#fff}
.bx-sum{background:#fff;border-top:1px solid #505050;padding:6px 10px;font-size:calc(12px*var(--z));color:#23313A;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* description suggestions */
#sugg{position:fixed;z-index:70;background:#fff;border:1.5px solid var(--title);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.2);display:flex;flex-direction:column;min-width:180px;max-width:min(320px,calc(100vw - 8px));overflow:hidden}
#sugg[hidden]{display:none}
#sugg button{border:0;border-bottom:1px solid var(--panel);border-radius:0;background:#fff;text-align:left;min-height:38px;font-weight:normal;font-size:14px}
#sugg button:active{background:var(--accent)}
/* certificate pages (EIC Part 1, Part 2, inspections, comments) */
.cert{max-width:900px;margin:0 auto;padding:8px 10px 20px}
.fsec{background:#CBD86A;color:#2E3D47;font-size:13px;margin:14px 0 6px;padding:6px 8px;border:1px solid #55656F}
.fsub{background:#EDF0F2;color:#23313A;font-size:12px;margin:10px 0 4px;padding:5px 8px;border:1px solid #55656F}
.fdecl{background:#EDF0F2;color:#23313A;font-size:12px;line-height:1.35;padding:6px 8px;border:1px solid #C9D0D5;margin:4px 0}
.fnote{font-size:11px;color:#55656F;font-style:italic;margin:4px 0 6px}
.frow{display:flex;flex-wrap:wrap;gap:6px 8px;margin:4px 0;align-items:flex-end}
.frl{flex-basis:100%;font-weight:bold;font-size:12px;color:#23313A;margin-top:4px}
.cfw{min-width:0}
.cf{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#23313A}
.cf>span{background:#D3DADF;padding:2px 6px;border:1px solid #55656F;border-bottom:0}
.cf input,.cf textarea{font:inherit;font-size:14px;min-height:38px;border:1px solid #55656F;background:#fff;padding:4px 6px;width:100%;border-radius:0}
.cf textarea{resize:vertical;min-height:54px;line-height:1.3}
.cf input.lst{background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2355656F'/%3E%3C/svg%3E") no-repeat right 6px center;padding-right:18px;cursor:pointer}
.fdate{display:flex}.fdate input{flex:1;min-width:0}.fdate button{min-height:38px;border-radius:0;border-left:0;font-size:11px;padding:0 8px}
.ghostb{background:#fff}
.sigbox{width:100%;min-height:52px;background:#fff;border:1px dashed #55656F;border-radius:0;color:#55656F;font-weight:normal;font-size:13px;display:flex;align-items:center;justify-content:center;padding:2px}
.sigbox.has{border-style:solid}
.sigbox img{max-height:48px;max-width:100%}
.fx{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 6px}
.fx button{min-height:34px;font-size:12px}
.fxn{font-size:11px;color:#55656F}
.soi-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0 8px}
.soi{border:1px solid #55656F}
.soi-it{display:flex;align-items:center;gap:8px;padding:6px 8px;border-bottom:1px solid #C9D0D5;background:#fff}
.soi-it:nth-child(even){background:#F6F7F8}
.soi-it .no{flex:0 0 38px;font-weight:bold;color:#55656F}
.soi-it .d{flex:1;font-size:13px}
.seg3{display:inline-flex;flex:0 0 auto}
.seg3 button{border-radius:0;background:#fff;min-width:48px;min-height:40px;font-size:13px;padding:0 8px}
.seg3 button:first-child{border-radius:7px 0 0 7px}.seg3 button:last-child{border-radius:0 7px 7px 0}.seg3 button+button{border-left:0}
.seg3 button.on{background:var(--title);color:#fff}
.coml{border:1px solid #55656F}
.comh{background:#ECF1D0;color:#2E3D47;font-weight:bold;padding:5px 8px;font-size:12px}
.comr{display:grid;grid-template-columns:56px minmax(90px,30%) 1fr;gap:6px;align-items:start;padding:4px 6px;border-bottom:1px solid #C9D0D5}
.comr .cid2{font-weight:bold;text-align:center}
.comr .cd2{font-size:12px;color:#333;white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.comr textarea{font:inherit;font-size:14px;min-height:36px;border:1px solid var(--line);background:#fff;padding:6px;resize:none;overflow:hidden;width:100%;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;line-height:1.3}
@media (max-width:600px){ .comr{grid-template-columns:44px 1fr} .comr textarea{grid-column:1/-1} .soi-it{flex-wrap:wrap} .soi-it .d{flex-basis:calc(100% - 50px)} .seg3{margin-left:46px} }
@supports (-webkit-touch-callout:none){ .cf input,.cf textarea,.comr textarea{font-size:16px} }
/* MCCB set-to, signature pad, check before issue */
.st-res{margin:10px 0 4px;font-size:14px}.st-res span{font-size:11px;color:#55656F}
.st-warn{margin-top:6px;background:#FFF4D6;color:#5C4500;border:1px solid #C9A227;border-radius:6px;padding:6px 8px;font-size:12px}
#panel .setto{background:var(--accent);color:var(--accent-text)}
#panel .fxn{align-self:center}
.sp-ok{justify-content:flex-end;margin-top:10px}
.sigcard canvas{display:block;margin:8px auto;border:1.5px solid #55656F;border-radius:6px;background:#fff;touch-action:none}
.sp-hint{font-size:12px;color:#55656F}
.sp-mine{display:flex;gap:6px;align-items:center;font-size:12px;margin-top:8px}
.sp-mine input{width:20px;height:20px}
.ck-t{font-weight:bold;margin:4px 0}.ck-l{margin:4px 0 0 0;padding-left:20px;font-size:13px;line-height:1.5;max-height:50vh;overflow:auto}.ck-ok{font-size:15px;color:#1E5631;font-weight:bold;padding:10px 0}
/* PDF: certificate pages on the Excel grid */
.pg.fpg .phd{position:absolute;left:10.2mm;right:10.2mm;top:4.5mm}
.pg .phd{align-items:center}.pg .phd img.plogo{display:block;width:48mm;height:auto;max-height:16mm}
.pg.fpg .pft{padding:0 10.2mm 5mm}
.pg .fg{display:grid;margin:0 auto}
.pg .fc{display:flex;align-items:center;overflow:hidden;padding:0 1.2pt;line-height:1.15;color:#23313A}
.pg .fc.bd{border:.5pt solid #55656F;margin:0 -.25pt -.25pt 0}
.pg .fc span{white-space:pre-wrap;overflow:hidden}
.pg .fc.in{color:#23313A}
.pg .fc img{max-height:100%;max-width:100%;object-fit:contain}
.pg table.ps td.wr{white-space:normal;font-size:.82em;line-height:1;overflow:visible}
/* v17: comments + long CD cells wrap on PDF; rows grow – nothing truncated */
.pg table.ps td.wcom,.pg table.ps td.wdes{white-space:normal;overflow:visible;overflow-wrap:anywhere;word-break:break-word;text-align:left;line-height:1.2;padding:.5mm .6mm;vertical-align:top}
.pg table.ps tr.cwrap{height:auto !important}
.pg table.ps tr.cwrap td{height:auto;min-height:3.2mm;overflow:visible;white-space:normal}
.pg table.ps.cmtbl td{white-space:normal;overflow:visible;overflow-wrap:anywhere;word-break:break-word;vertical-align:top;text-align:left;line-height:1.2;padding:.5mm .7mm}
.pg table.ps.cmtbl td:first-child{text-align:center;vertical-align:middle;white-space:nowrap}
.pg table.ps.cmtbl tr{height:auto !important}
@media (max-width:600px){ #tabs button.qf{font-size:13px;padding:0 9px;min-height:34px;margin:0 0 2px} #pageTabs button{padding:0 9px;font-size:11.5px} }
.pk-opts.list{grid-template-columns:1fr}.pk-opts.list button{text-align:left;padding:10px 14px;min-height:44px}

/* ---- v12 ---- */
.logo{cursor:pointer;border-style:solid;border-color:#d6dde2;background:#fff;padding:2px}
.logo img{max-width:100%;max-height:40px;object-fit:contain}
.sch td.cid{-webkit-touch-callout:none;touch-action:manipulation}
#toolbar button.desel{font-size:13px;min-width:104px;border-width:2px}
#toolbar button.ic{min-width:40px;padding:0 8px;font-size:20px;line-height:1}
#toolbar button.ic.dim{opacity:.55}
#toolbar .sh{display:none}
#tbmenu{position:fixed;z-index:45;background:#fff;border:1.5px solid var(--header-dark);border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.2);padding:8px;display:flex;flex-direction:column;gap:6px;min-width:190px;max-width:calc(100vw - 12px)}
#tbmenu[hidden]{display:none}
#tbmenu button{text-align:left;min-height:40px}
#tbmenu .tbm-fills{display:flex;gap:6px}
#tbmenu .tbm-fills button{flex:1;text-align:center;font-size:15px;min-width:44px;padding:0 6px}
#tbmenu .tbm-n{font-size:11px;color:#55656F;max-width:220px;white-space:normal}
#tbmenu button.dim{opacity:.55}
.box>h3{position:relative}
.box>h3 .bx-c{position:absolute;right:6px;top:50%;transform:translateY(-50%);float:none;text-decoration:none;font-size:18px;line-height:1;padding:2px 8px;border-radius:6px;cursor:pointer}
.box>h3 .bx-c:hover{background:rgba(0,0,0,.08)}
.bx-inc{color:#8a5a00;font-style:italic}
.pk-opts.waym{grid-template-columns:1fr 1fr}
.pk-opts button.danger{background:#F4D6D2}
.ins-g{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.ins-f{display:flex;flex-direction:column;font-size:12px;font-weight:bold;gap:3px}
.ins-f input{font-size:16px;min-height:40px;border:1px solid var(--line);padding:0 8px}
.pg .both-gap{height:3mm}
#keypad button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
@media (max-width:600px){
  #toolbar{gap:5px;padding:5px 6px}
  #toolbar button{padding:0 8px}
  #toolbar button.desel{min-width:0;padding:0 9px}
  #toolbar button.ic{min-width:36px;padding:0 6px}
  #toolbar .lg{display:none} #toolbar .sh{display:inline}
  .ins-g{grid-template-columns:1fr}
}
#toolbar>*{flex-shrink:0}
@media (max-width:600px){ .tested{grid-template-columns:auto 1fr auto} .tested input[data-h="testedBy"]{grid-column:span 2} }
@media (max-width:600px){ #toolbar{gap:4px;padding:5px 5px} #toolbar button{padding:0 7px} #toolbar button.desel{padding:0 8px} #toolbar button.ic{min-width:34px;padding:0 5px} }
@media (max-width:400px){ #toolbar button{font-size:11.5px;padding:0 6px} #toolbar button.desel{font-size:12.5px;padding:0 7px} #toolbar button.ic{font-size:19px} }

/* ---- v13: start page, jobs, new job + board set-up ---- */
:root{--granite:#2E3D47;--lemon:#F6C21B;--lemon-d:#E0AC00;--leaf:#5E8C31;--leaf-l:#E6EFD8}
#top button.home{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-width:40px;width:40px;padding:0;border-radius:6px;background:var(--granite);color:#fff;border:none;line-height:1}
#top button.home .hc{font-size:22px;line-height:18px;font-weight:bold}
#top button.home .ht{font-size:9.5px;font-weight:bold;letter-spacing:.2px}
.title{flex-direction:column;align-items:flex-start;justify-content:center;min-width:0;overflow:hidden}
.title #sheetTitle{max-width:100%;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.12}
#jobSub{font-size:10.5px;font-weight:normal;opacity:.82;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px}
#jobSub:empty{display:none}
@media (max-width:600px){ #top{gap:6px;padding:6px 6px} .logo{width:42px} }
#hub{position:fixed;inset:0;z-index:30;background:#F3F5F6;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}
#hub[hidden]{display:none}
body.on-hub #status{position:fixed;left:0;right:0;bottom:0;z-index:31}
body.on-hub #hint{display:none}
.hub-in{max-width:560px;margin:0 auto;padding:12px 14px 48px;color:var(--granite);font-size:14px}
.hub-brand{background:#fff;border-radius:16px;padding:14px 16px 10px;text-align:center;box-shadow:0 1px 3px rgba(46,61,71,.12);margin-bottom:14px}
.hub-brand img{width:min(300px,82%);height:auto;display:block;margin:0 auto}
.hub-tag{font-size:12px;letter-spacing:.6px;text-transform:uppercase;color:#6A7880;margin-top:4px;font-weight:bold}
#hub button{white-space:normal}
.hub-new{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:62px;border-radius:14px;background:var(--lemon);color:var(--granite);
  border:2px solid var(--lemon-d);font-size:20px;font-weight:bold;box-shadow:0 2px 0 var(--lemon-d)}
.hub-new .pl{font-size:26px;line-height:1}
.hub-h{font-size:12px;font-weight:bold;text-transform:uppercase;letter-spacing:.5px;color:#55656F;margin:18px 2px 7px;display:flex;align-items:baseline;gap:6px}
.hub-h .cnt{background:#D3DADF;color:var(--granite);border-radius:9px;padding:0 7px;font-size:11px}
.hub-h .sub{text-transform:none;letter-spacing:0;font-weight:normal;color:#7B8890}
.jc{display:flex;align-items:stretch;background:#fff;border-radius:12px;margin-bottom:8px;box-shadow:0 1px 3px rgba(46,61,71,.12);overflow:hidden;border:1px solid #DDE3E7}
.jc .jc-main{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:transparent;border:none;border-radius:0;padding:10px 12px;min-height:64px;color:var(--granite);font-weight:normal;min-width:0}
.jc .jc-n{font-size:16px;font-weight:bold;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.jc .jc-a{font-size:13px;color:#4B5A63;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jc .jc-m{font-size:12.5px;color:var(--leaf);font-weight:bold}
.jc .jc-d{font-size:11.5px;color:#7B8890}
.jc .jc-bar{display:block;width:100%;height:5px;background:#E3E8EB;border-radius:3px;overflow:hidden;margin:3px 0 2px}
.jc .jc-bar i{display:block;height:100%;background:var(--leaf);border-radius:3px}
.jc .jc-more{width:46px;min-width:46px;background:#F3F5F6;border:none;border-left:1px solid #E3E8EB;border-radius:0;font-size:22px;color:#55656F;padding:0}
.jc.big{background:var(--granite);border-color:var(--granite)}
.jc.big .jc-main{padding:14px 14px 12px;color:#fff}
.jc.big .jc-n{font-size:19px}
.jc.big .jc-a{color:#D5DEE3}
.jc.big .jc-m{color:var(--lemon)}
.jc.big .jc-d{color:#AEBBC3}
.jc.big .jc-bar{background:rgba(255,255,255,.18)} .jc.big .jc-bar i{background:var(--lemon)}
.jc.big .jc-more{background:#26333C;border-left-color:#3E5462;color:#fff}
.hub-q{width:100%;min-height:42px;font-size:16px;border:1px solid #C9D0D5;border-radius:10px;padding:0 12px;margin-bottom:8px;background:#fff}
.hub-empty{background:#fff;border-radius:12px;padding:14px;margin-top:12px;line-height:1.45;border:1px dashed #C9D0D5;color:#4B5A63}
.hub-note{display:flex;align-items:flex-start;gap:8px;background:var(--leaf-l);border:1px solid #B9CF9A;border-radius:10px;padding:8px 6px 8px 12px;margin-bottom:12px;font-size:13px;line-height:1.35}
.hub-note span{flex:1} .hub-note button{min-height:28px;padding:0 6px;font-size:14px}
.hub-set{background:#fff;border-radius:12px;overflow:hidden;border:1px solid #DDE3E7}
.hub-set > button,.hub-set > .hs-i{display:grid;grid-template-columns:1fr auto;grid-template-areas:'k ch' 'v ch';align-items:center;width:100%;text-align:left;background:#fff;border:none;border-bottom:1px solid #E8ECEF;border-radius:0;padding:10px 12px;min-height:54px;color:var(--granite);font-weight:normal}
.hub-set > :last-child{border-bottom:none}
.hub-set .k{grid-area:k;font-weight:bold;font-size:14px}
.hub-set .v{grid-area:v;font-size:12.5px;color:#5F6D75;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:8px;min-width:0}
.hub-set .hs-i .v{white-space:normal}
.hub-set .v.lg img{height:22px;max-width:90px;object-fit:contain;background:#fff;border:1px solid #E3E8EB;border-radius:3px}
.hub-set .ch{grid-area:ch;font-size:22px;color:#9AA5AD;padding-left:8px}
.hub-foot{font-size:11.5px;color:#7B8890;text-align:center;margin-top:16px;line-height:1.45}
/* forms */
.hub-in.form{padding-top:6px}
.hub-bar{display:grid;grid-template-columns:90px 1fr 90px;align-items:center;margin:0 -6px 6px;position:sticky;top:0;background:#F3F5F6;z-index:2;padding:4px 0}
.hub-bar b{text-align:center;font-size:17px}
.hub-bar .back{justify-self:start;font-size:15px;color:var(--title);min-height:42px;padding:0 8px}
.hf-job{font-size:12.5px;color:#5F6D75;margin:0 2px 10px;font-weight:bold}
.hf{display:block;margin-bottom:12px}
.hf > span{display:block;font-size:12.5px;font-weight:bold;color:#4B5A63;margin:0 2px 4px}
.hf input{width:100%;min-height:48px;font-size:17px;border:1.5px solid #C2CBD1;border-radius:10px;padding:0 12px;background:#fff;color:#000}
.hf input:focus{outline:none;border-color:var(--title);box-shadow:0 0 0 3px rgba(62,84,98,.15)}
.hf-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:-4px 0 12px;font-size:12px;color:#5F6D75}
#hub .chip{min-height:38px;min-width:46px;border-radius:19px;background:#fff;border:1.5px solid #C2CBD1;font-size:14px;padding:0 12px;color:var(--granite)}
#hub .chip.on{background:var(--granite);border-color:var(--granite);color:#fff}
.hf-l{font-size:12.5px;font-weight:bold;color:#4B5A63;margin:4px 2px 6px}
.hf-l .opt-s{font-weight:normal;color:#8A979E}
.hf-opts{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
#hub .opt{text-align:left;min-height:46px;border-radius:10px;background:#fff;border:1.5px solid #C2CBD1;font-size:14.5px;padding:8px 12px;color:var(--granite);font-weight:bold}
#hub .opt.on{background:var(--leaf-l);border-color:var(--leaf);box-shadow:inset 4px 0 0 var(--leaf)}
#hub .opt.sm{min-height:40px;font-weight:normal;font-size:13.5px}
#hub .opt.add{color:var(--title);border-style:dashed}
.hf-ways{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;align-items:center}
.hf-ways .hf-wn{width:84px;min-height:38px;font-size:16px;border:1.5px solid #C2CBD1;border-radius:19px;padding:0 12px;background:#fff}
.hf-note{font-size:12.5px;color:#5F6D75;line-height:1.4;margin:2px 2px 12px}
.hf-err{background:#FDECEA;border:1px solid #E7A39B;color:#8A1C12;border-radius:10px;padding:9px 12px;margin:4px 0 10px;font-size:13.5px}
.hub-go{width:100%;min-height:56px;border-radius:14px;background:var(--granite);color:#fff;border:none;font-size:18px;font-weight:bold;margin-top:6px}
.hub-skip{display:block;width:100%;margin-top:8px;color:var(--title);font-weight:normal;text-decoration:underline;font-size:14px}
/* one-off tip after the first board */
#hint{position:fixed;left:8px;right:8px;bottom:calc(40px + env(safe-area-inset-bottom));z-index:35;background:var(--granite);color:#fff;border-radius:12px;padding:10px 10px 10px 14px;display:flex;gap:10px;align-items:center;box-shadow:0 6px 18px rgba(0,0,0,.25);max-width:560px;margin:0 auto;font-size:13px;line-height:1.4}
#hint[hidden]{display:none}
#hint .ht{flex:1} #hint .ht b:first-child{color:var(--lemon);margin-right:4px}
#hint button{background:var(--lemon);color:var(--granite);border:none;border-radius:8px;min-height:38px}
body.on-hub #status:empty{display:none}
.hub-act{position:sticky;bottom:0;z-index:2;background:linear-gradient(rgba(243,245,246,0),#F3F5F6 14px);padding:14px 0 calc(10px + env(safe-area-inset-bottom));margin-top:-8px}
.hub-act .hub-go{margin-top:0;box-shadow:0 3px 10px rgba(46,61,71,.25)}
@media (max-width:600px){ .title{font-size:12.5px;padding:3px 8px} }
.hub-in.form{padding-bottom:20px}

/* ===== v14 (round 7): one fixed input dock, text editor at the top, calculated Zs, select cells ===== */
:root{--dock-h:min(318px,46vh)}
@supports (height:1dvh){ :root{--dock-h:min(318px,46dvh)} }
#keypad.dock{height:var(--dock-h);box-sizing:border-box;display:grid;grid-template-rows:22px 40px minmax(0,1fr) 46px;gap:5px;overflow:hidden;
  padding:6px 8px calc(6px + env(safe-area-inset-bottom));height:calc(var(--dock-h) + env(safe-area-inset-bottom))}
#keypad.dock[hidden]{display:none}
#keypad .kp-head{margin:0 2px;align-items:center;line-height:22px}
#keypad .kp-head b{flex:0 0 auto}
/* calculated Zs: value stays black / normal like every test value; a small grey superscript 'c' marks it (screen only, never on the PDF) */
#keypad .kp-val.zcalc::after{content:'c';font-size:10px;font-weight:normal;color:#8A8A8A;vertical-align:super;margin-left:1px;line-height:0}
#keypad .kp-chips{margin:0;align-items:stretch;flex-wrap:nowrap}
#keypad .kp-chips button{min-height:0;height:40px;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;line-height:1;overflow:hidden;box-sizing:border-box}
#keypad .kp-chips button.zc{background:var(--btn-dev)}
#keypad .kp-chips button.zc.cur{background:var(--title);color:#fff}
#keypad .kp-chips button.x2.cur{background:var(--title);color:#fff}
#keypad .kp-body{min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
#keypad .kp-grid{height:100%;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr)}
#keypad .kp-grid button{min-height:0;height:auto;display:flex;align-items:center;justify-content:center;
  line-height:1;padding:0;overflow:hidden;font-size:clamp(16px, 4.2vh, 28px);box-sizing:border-box}
#keypad .kp-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(66px,1fr));gap:5px;align-content:start}
#keypad .kp-opts.long{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
#keypad .kp-opts button{min-height:42px;font-size:15px;background:var(--btn-dev);white-space:normal;padding:2px 4px;touch-action:pan-y}
#keypad .kp-opts button.cur{background:var(--accent);font-weight:bold;outline:2px solid var(--title)}
#keypad .kp-text{height:100%;box-sizing:border-box;border:1.5px dashed var(--line);border-radius:8px;padding:8px 10px;font-size:15px;overflow:auto;cursor:text;background:#FAFBF5;white-space:pre-wrap}
#keypad .kp-nav{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1.5fr;gap:5px}
#keypad .kp-nav button{min-height:0;height:46px;font-size:21px;padding:0;display:flex;align-items:center;justify-content:center;line-height:1;overflow:hidden}
#keypad .kp-nav button.nav{background:var(--btn-rcbo)}
#keypad .kp-nav button.done{background:var(--accent);color:var(--accent-text);font-size:16px;font-weight:bold}
#keypad button:disabled{opacity:.35}
@media (max-height:560px){ :root{--dock-h:min(250px,52vh)} #keypad.dock{grid-template-rows:18px 34px minmax(0,1fr) 38px;gap:4px} #keypad .kp-chips button{height:34px} #keypad .kp-nav button{height:38px} }
@media (min-width:900px){ #keypad.dock{left:0;right:0;bottom:0;max-width:none;margin:0;border-radius:12px 12px 0 0; height:calc(var(--dock-h) + env(safe-area-inset-bottom))} }
.sch td.zcalc::before{content:'c';position:absolute;top:4px;right:5px;font-size:9px;line-height:1;color:#8A8A8A;pointer-events:none;z-index:1}
@media print{ .sch td.zcalc::before{content:none} }
.sch td input[readonly]{caret-color:transparent;cursor:pointer}
.fld input[data-hkp]{caret-color:transparent;cursor:pointer}
.fld input.hact{outline:3px solid var(--accent);outline-offset:-1px;background:#FBFDE9}
/* text editor fixed at the top of the screen; the phone keyboard opens under it */
#teditor{position:fixed;left:0;right:0;top:0;z-index:80;background:#fff;border-bottom:3px solid var(--title);box-shadow:0 4px 16px rgba(0,0,0,.25);
  padding:calc(6px + env(safe-area-inset-top)) 8px 8px;display:flex;flex-direction:column;gap:6px;max-width:760px;margin:0 auto}
#teditor[hidden]{display:none}
#teditor .te-head{display:flex;gap:8px;align-items:baseline;font-size:13px;white-space:nowrap;overflow:hidden}
#teditor .te-head b{font-size:15px;color:var(--title)}
#teditor #teTitle{flex:1;overflow:hidden;text-overflow:ellipsis;color:#333}
#teditor #teCount{color:#666;font-size:12px}
#teditor textarea{font:inherit;font-size:16px;width:100%;box-sizing:border-box;border:2px solid var(--title);border-radius:6px;padding:8px;resize:none;height:76px}
#teditor.te-desig textarea{height:48px}
#teditor .te-sugg{display:flex;gap:6px;overflow-x:auto;height:36px;align-items:center;scrollbar-width:none}
#teditor.te-com .te-sugg,#teditor.te-hdr .te-sugg{display:none}
#teditor.te-cell:not(.te-desig) .te-sugg{display:none}
#teditor .te-sugg button{flex:0 0 auto;min-height:34px;font-size:14px;background:var(--btn-dev);white-space:nowrap}
#teditor .te-hint{color:#888;font-size:12px}
#teditor .te-nav{display:grid;grid-template-columns:1fr 1fr .8fr 1fr;gap:6px}
#teditor .te-nav button{min-height:42px;font-size:15px}
#teditor .te-nav button.done{background:var(--accent);color:var(--accent-text);font-weight:bold}
#teditor .te-nav button:disabled{opacity:.35}
.sch td.teact{outline:3px solid var(--accent);outline-offset:-2px}
.comr.teact{background:#FBFDE9;outline:2px solid var(--accent)}
.comr textarea[readonly]{cursor:pointer;caret-color:transparent}
/* select cells */
#toolbar button.selb{border-width:2px}
#toolbar button.seldone{background:var(--title);color:#fff;font-weight:bold}
#toolbar button.on{background:var(--accent)}
#toolbar .selinfo{align-self:center;font-size:12px;color:#333;white-space:nowrap;padding:0 4px}
.selmode .sch td:not(.cid):not(.calc){cursor:cell}
@media print{ #teditor,#keypad{display:none !important} }
@media (max-width:380px){ #toolbar{gap:3px;padding:5px 4px} #toolbar button{padding:0 6px} #toolbar button.desel{padding:0 7px} }

/* ===== v15 (round 8): action bar fixed at the bottom, slim page tabs, folded board set-up ===== */
:root{--bb-h:52px}
/* slim page tabs strip at the top; PDF / Export and settings on the right */
#tabs{padding:3px 6px 0;gap:4px;align-items:flex-end;border-bottom:2px solid var(--title)}
#tabs #pageTabs{gap:3px}
#tabs #pageTabs button{min-height:0;height:30px;padding:0 9px;font-size:11.5px}
#tabs .sh{display:none}
#tabs #btnPdf{flex:0 0 auto;min-height:0;height:28px;margin:0 0 3px;padding:0 10px;border-radius:7px;background:var(--title);color:#fff;border:1px solid var(--title);font-size:12px}
#tabs #btnSettings{flex:0 0 auto;min-height:0;height:30px;padding:0 6px;font-size:16px}
@media (max-width:600px){ #tabs .lg{display:none} #tabs .sh{display:inline} }
/* the action buttons: one fixed bar at the very bottom; it never moves (the input dock opens directly above it) */
#bbar{flex:0 0 auto;display:none;align-items:center;gap:4px;box-sizing:border-box;height:calc(var(--bb-h) + env(safe-area-inset-bottom));
  padding:0 5px env(safe-area-inset-bottom);background:var(--panel);border-top:2px solid var(--title);box-shadow:0 -2px 8px rgba(0,0,0,.12);position:relative;z-index:50}
body.sched #bbar{display:flex}
body.on-hub #bbar{display:none}
#bbar #toolbar{flex:1 1 auto;min-width:0;background:transparent;border:none;padding:0;align-items:center;overflow-x:auto}
#bbar #btnQF{flex:0 0 auto;min-height:40px;height:40px;margin:0;padding:0 8px;border-radius:8px;font-size:12.5px;background:var(--accent);color:var(--accent-text);border:2px solid var(--header-dark)}
#bbar #btnQF.on{background:var(--title);color:#fff}
#bbar.selon #btnQF{display:none}
#bbar #toolbar button{min-height:40px;height:40px}
body.sched #keypad.dock{bottom:calc(var(--bb-h) + env(safe-area-inset-bottom));padding-bottom:6px;height:var(--dock-h)}
#panel{border-bottom:none;border-top:2px solid var(--header-dark);box-shadow:0 -3px 8px rgba(0,0,0,.1)}
@media (max-width:400px){ #bbar{gap:3px;padding-left:4px;padding-right:4px} #bbar #btnQF{padding:0 6px;font-size:12px} #bbar #toolbar{gap:3px} #bbar #toolbar button{padding:0 6px} #bbar #toolbar button.desel{min-width:0;padding:0 7px} #bbar #toolbar button.ic{min-width:32px;padding:0 4px} }
@media (max-width:380px){ #bbar{gap:2px;padding-left:3px;padding-right:3px} #bbar #btnQF{padding:0 5px;font-size:11.5px} #bbar #toolbar{gap:2px} #bbar #toolbar button{padding:0 5px;font-size:11px} #bbar #toolbar button.desel{padding:0 6px;font-size:12px} #bbar #toolbar button.ic{min-width:30px;padding:0 3px;font-size:18px} }
@media (min-width:900px){ body.sched #keypad.dock{bottom:calc(var(--bb-h) + env(safe-area-inset-bottom)); left:0; right:0; max-width:none; margin:0} }
/* board set-up folded to one line */
.bsum{position:sticky;left:0;display:flex;align-items:center;gap:10px;width:100vw;max-width:100vw;box-sizing:border-box;min-height:40px;margin:0;border:none;border-radius:0;
  border-bottom:1px solid var(--line);background:var(--header);padding:0 10px;text-align:left;font-size:14px;color:var(--btn-text)}
.bsum .bsn{font-weight:bold;color:var(--title);flex:0 1 auto;overflow:hidden;text-overflow:ellipsis}
.bsum .bsz{font-weight:normal;flex:0 0 auto}
.bsum .bsw{font-weight:normal;color:#55656F;font-size:12px;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}
.bsum .bst{flex:0 0 auto;font-size:12px;color:var(--accent-text);background:var(--accent);border-radius:6px;padding:4px 8px}
.bsum.open .bst{background:#fff;border:1px solid var(--line)}
@media print{ #bbar,.bsum{display:none !important} }

/* v16: backups, restore, date warnings, next inspection presets */
.hub-note.bk-note{background:#FFF6DC;border-color:#E9CF7E}
.hub-note.warn{background:#FDECEA;border-color:#E6A8A0}
.bk-note .bk-go{margin-top:8px;min-height:38px;border-radius:19px;padding:0 16px;font-weight:bold;background:var(--granite);color:#fff;border:none}
.fwarn{font-size:12px;line-height:1.3;color:#7A4B00;background:#FFF6DC;border:1px solid #E9CF7E;border-top:0;padding:3px 6px}
.fwarn[hidden]{display:none}
.ni-x button{min-height:34px;font-size:12.5px;border-radius:17px;padding:0 12px}
.ni-x button.on{background:var(--granite);color:#fff;border:1px solid var(--granite)}
.rs-card{max-width:520px;width:100%}
.rs-b{padding:8px 14px;font-size:13.5px;line-height:1.4}
.rs-f{font-weight:bold;word-break:break-all}
.rs-l{margin:6px 0 6px 18px;padding:0;max-height:30vh;overflow:auto}
.rs-l i{color:#7B8890;font-style:normal;font-size:12px}
.rs-w{color:#9A3412;font-size:12.5px;margin:4px 0}
.rs-n{color:#5F6D75;font-size:12.5px}
.rs-acts{display:flex;flex-direction:column;gap:6px;padding:6px 14px 14px}
.rs-acts button{min-height:44px;font-size:14px}
.rs-acts .fxn{margin:-2px 0 6px}
.rs-rep{color:#9A3412}

/* ===== v17 (round 10): Excel selection, text size, keypad size, All saved, tablet panel, ÷0.87 ===== */
:root{--fs:15px}
body{font-size:var(--fs)}
.sch td input{font-size:calc(var(--fs) * 0.92)}
.sch thead th{font-size:calc(var(--fs) * 0.72)}
.sch .cid{font-size:var(--fs)}
#saveInd{margin-left:10px;font-size:11px;font-weight:normal;opacity:.9;white-space:nowrap}
#saveInd.save-ok::before{content:"● ";color:#9fd36b}
#saveInd.save-busy::before{content:"● ";color:#F6C21B}
#saveInd.save-err{color:#ffe0e0;font-weight:bold}
#saveInd.save-err::before{content:"● ";color:#ff6b6b}
.tsbtn{flex:0 0 auto;align-self:center;min-height:34px;padding:0 8px;background:var(--accent);color:var(--accent-text);border:1px solid var(--header-dark);border-radius:8px;font-weight:bold;font-size:12px}
#keypad .kp-size{flex:0 0 auto;min-height:22px;height:22px;padding:0 8px;margin-left:6px;font-size:11px;background:var(--btn-util);border-radius:11px}
#keypad .kp-size.cur,#keypad .kp-chips button.cur{outline:2px solid var(--title)}
#keypad .kp-multi{font-style:normal;font-size:11px;color:#55656F;margin:0 6px;background:var(--accent);color:var(--accent-text);border-radius:8px;padding:1px 6px}
#keypad .kp-head{display:flex;gap:6px;align-items:center;flex-wrap:nowrap}
#keypad .kp-head .kp-val{margin-left:auto}
/* tablet / wide: full-width split panel – Layout A (default) or B via eic_kp_layout.
   Fat-finger targets ~56px. Must clear the schedule bottom action bar; Done always visible. */
@media (min-width:900px){
  body.sched #keypad.dock.kp-split{
    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:auto minmax(0,1fr) !important;
    gap:6px !important;
    padding:8px 12px 8px !important;
    height:var(--dock-h) !important;
    max-height:var(--dock-h) !important;
    bottom:calc(var(--bb-h) + env(safe-area-inset-bottom)) !important;
    left:0; right:0; max-width:none; margin:0;
    border-radius:12px 12px 0 0;
    overflow:hidden;
    box-sizing:border-box;
  }
  #keypad.kp-split .kp-head{
    line-height:1.2; font-size:14px; min-height:22px; max-height:28px;
    margin:0; padding:0 2px; overflow:hidden;
  }
  #keypad.kp-split .kp-split-body{
    display:grid;
    grid-template-columns:minmax(0,1.55fr) minmax(220px,0.7fr);
    gap:10px; min-height:0; height:100%; max-height:100%;
    overflow:hidden;
  }
  #keypad.kp-split .kp-body{min-height:0; height:100%; overflow:hidden; display:flex}
  #keypad.kp-split .kp-grid.kp-calc{
    flex:1; width:100%; height:100%;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    grid-template-rows:repeat(4,1fr);
    gap:6px;
  }
  #keypad.kp-split .kp-grid.kp-calc button{
    min-height:0 !important; height:auto !important; width:100%;
    display:flex !important; align-items:center; justify-content:center;
    line-height:1 !important; padding:0 !important; margin:0;
    font-size:clamp(20px, 3.6vh, 40px) !important;
    font-weight:bold; border-radius:10px;
    overflow:hidden; box-sizing:border-box;
  }
  #keypad.kp-split .kp-grid.kp-calc button.dig{background:var(--btn-dev)}
  #keypad.kp-split .kp-grid.kp-calc button.fn{
    background:var(--btn-rcbo);
    font-size:clamp(15px, 2.6vh, 24px) !important; font-weight:bold;
  }
  #keypad.kp-split .kp-grid.kp-calc button.na{background:var(--btn-util)}
  #keypad.kp-split .kp-opts{
    flex:1; width:100%; height:100%; overflow:auto; align-content:start;
  }
  #keypad.kp-split .kp-opts button{min-height:48px; font-size:15px}
  #keypad.kp-split .kp-text{flex:1; width:100%}
  #keypad.kp-split .kp-arrows{
    display:grid; grid-template-columns:repeat(4,1fr); gap:5px; min-height:0;
  }
  #keypad.kp-split .kp-arrows button{
    min-height:0 !important; height:100% !important;
    font-size:clamp(20px, 3vh, 28px) !important;
    background:var(--btn-rcbo); border-radius:8px;
    display:flex !important; align-items:center; justify-content:center;
    line-height:1; padding:0; overflow:hidden;
  }
  /* shared action / Done / Size look (Layout A puts them as direct .kp-right children) */
  #keypad.kp-split .kp-right > button.act,
  #keypad.kp-split .kp-acts > button.act{
    min-height:0 !important; height:100% !important;
    font-size:clamp(14px, 1.9vh, 17px) !important; font-weight:bold;
    background:var(--btn-util); border-radius:8px;
    display:flex !important; align-items:center; justify-content:center;
    line-height:1; padding:0 8px; overflow:hidden;
  }
  #keypad.kp-split .kp-right > .kp-size,
  #keypad.kp-split .kp-acts > .kp-size{
    min-height:0 !important; height:100% !important; width:100%; margin:0;
    font-size:clamp(12px, 1.7vh, 15px) !important; border-radius:8px;
    display:flex !important; align-items:center; justify-content:center;
    line-height:1; padding:0; background:var(--btn-util);
  }
  #keypad.kp-split .kp-right > button.done,
  #keypad.kp-split .kp-acts > button.done{
    min-height:0 !important; height:100% !important;
    font-size:clamp(17px, 2.6vh, 24px) !important; font-weight:bold;
    background:var(--accent); color:var(--accent-text); border-radius:10px;
    display:flex !important; align-items:center; justify-content:center;
    line-height:1; padding:0; overflow:hidden;
  }
  #keypad{max-width:none}

  /* ===== Layout A (default): chips above numbers (evenly spread, fat); actions then arrows bottom-right ===== */
  #keypad.kp-split.kp-lay-A .kp-left{
    display:grid;
    grid-template-rows:minmax(56px,auto) minmax(0,1fr);
    gap:6px; min-height:0; min-width:0; overflow:hidden;
  }
  #keypad.kp-split.kp-lay-A .kp-chips{
    display:flex; flex-wrap:nowrap; gap:6px; align-items:stretch;
    height:auto; min-height:56px; max-height:none;
    margin:0; overflow:hidden;
  }
  #keypad.kp-split.kp-lay-A .kp-chips button{
    flex:1 1 0; min-width:0;
    height:auto !important; min-height:56px !important; max-height:none !important;
    font-size:clamp(13px, 1.8vh, 18px) !important; line-height:1.1 !important;
    padding:0 6px !important; white-space:nowrap; overflow:hidden;
    display:inline-flex; align-items:center; justify-content:center;
    border-radius:10px;
  }
  #keypad.kp-split.kp-lay-A .kp-right{
    display:grid;
    /* Clear, Next, Size, Done (large), arrows at bottom */
    grid-template-rows:minmax(44px,0.75fr) minmax(44px,0.75fr) minmax(40px,0.6fr) minmax(56px,1.25fr) minmax(56px,0.95fr);
    gap:6px; min-height:0; height:100%; max-height:100%;
    overflow:hidden; align-content:stretch;
  }
  #keypad.kp-split.kp-lay-A .kp-arrows{ min-height:56px; }

  /* ===== Layout B: arrows (+ utils) above numbers on left; right = 2 cols (acts | big chips) ===== */
  #keypad.kp-split.kp-lay-B .kp-split-body{
    grid-template-columns:minmax(0,1.35fr) minmax(260px,0.9fr);
  }
  #keypad.kp-split.kp-lay-B .kp-left{
    display:grid;
    grid-template-rows:minmax(56px,auto) minmax(0,1fr);
    gap:6px; min-height:0; min-width:0; overflow:hidden;
  }
  #keypad.kp-split.kp-lay-B .kp-left.has-utils{
    grid-template-rows:minmax(56px,auto) minmax(48px,auto) minmax(0,1fr);
  }
  #keypad.kp-split.kp-lay-B .kp-utils{
    display:grid; grid-template-columns:repeat(4,1fr); gap:5px; min-height:48px;
  }
  #keypad.kp-split.kp-lay-B .kp-utils button{
    min-height:48px !important; height:100% !important;
    font-size:clamp(16px, 2.4vh, 22px) !important;
    display:flex !important; align-items:center; justify-content:center;
    border-radius:8px; padding:0; line-height:1;
  }
  #keypad.kp-split.kp-lay-B .kp-arrows{ min-height:56px; }
  #keypad.kp-split.kp-lay-B .kp-right{
    display:grid;
    grid-template-columns:minmax(110px,0.85fr) minmax(0,1.15fr);
    gap:8px; min-height:0; height:100%; max-height:100%;
    overflow:hidden;
  }
  #keypad.kp-split.kp-lay-B .kp-acts{
    display:grid;
    grid-template-rows:minmax(44px,0.8fr) minmax(44px,0.8fr) minmax(40px,0.65fr) minmax(64px,1.4fr);
    gap:6px; min-height:0; height:100%;
  }
  #keypad.kp-split.kp-lay-B .kp-chips{
    display:flex; flex-direction:column; flex-wrap:nowrap; gap:6px;
    height:100%; min-height:0; max-height:100%; margin:0;
    overflow-x:hidden; overflow-y:auto;
    scrollbar-width:thin; -webkit-overflow-scrolling:touch;
  }
  #keypad.kp-split.kp-lay-B .kp-chips button{
    flex:1 1 0; min-height:56px !important; height:auto !important; max-height:none !important;
    width:100%; font-size:clamp(15px, 2.2vh, 22px) !important; font-weight:bold;
    line-height:1.1 !important; padding:0 8px !important;
    white-space:nowrap; overflow:hidden;
    display:flex; align-items:center; justify-content:center;
    border-radius:10px;
  }
  #keypad.kp-split.dk-list.kp-lay-A .kp-left,
  #keypad.kp-split.dk-text.kp-lay-A .kp-left{grid-template-rows:minmax(56px,auto) minmax(0,1fr)}
  #keypad.kp-split.dk-list.kp-lay-B .kp-left,
  #keypad.kp-split.dk-text.kp-lay-B .kp-left{grid-template-rows:minmax(56px,auto) minmax(0,1fr)}
  #keypad.kp-split.dk-list.kp-lay-B .kp-left.has-utils,
  #keypad.kp-split.dk-text.kp-lay-B .kp-left.has-utils{grid-template-rows:minmax(56px,auto) minmax(0,1fr)}
}
/* S/M/L tweaks: keep fat-finger chips; slightly smaller only on S */
html[data-kps="S"] #keypad.kp-split.kp-lay-A .kp-chips{min-height:48px}
html[data-kps="S"] #keypad.kp-split.kp-lay-A .kp-chips button{min-height:48px !important;font-size:13px !important}
html[data-kps="S"] #keypad.kp-split.kp-lay-B .kp-chips{gap:4px}
html[data-kps="S"] #keypad.kp-split.kp-lay-B .kp-chips button{min-height:44px !important; font-size:14px !important}
html[data-kps="S"] #keypad.kp-split.kp-lay-B .kp-utils{min-height:44px}
html[data-kps="S"] #keypad.kp-split.kp-lay-B .kp-utils button{min-height:44px !important}
html[data-kps="S"] #keypad.kp-split.kp-lay-B .kp-arrows{min-height:48px}
html[data-kps="S"] #keypad.kp-split.kp-lay-B .kp-left.has-utils{grid-template-rows:minmax(48px,auto) minmax(44px,auto) minmax(0,1fr)}
html[data-kps="S"] #keypad.kp-split.kp-lay-A .kp-right{grid-template-rows:minmax(36px,0.7fr) minmax(36px,0.7fr) minmax(32px,0.55fr) minmax(48px,1.15fr) minmax(48px,0.9fr)}
html[data-kps="L"] #keypad.kp-split .kp-grid.kp-calc button{font-size:clamp(24px, 4.2vh, 44px) !important}
html[data-kps="L"] #keypad.kp-split.kp-lay-A .kp-chips{min-height:64px}
html[data-kps="L"] #keypad.kp-split.kp-lay-A .kp-chips button{min-height:64px !important;font-size:clamp(15px,2vh,20px) !important}
html[data-kps="L"] #keypad.kp-split.kp-lay-B .kp-chips button{min-height:64px !important}
#cellmenu{position:fixed;z-index:90;background:var(--title);border-radius:10px;padding:4px;display:flex;gap:4px;box-shadow:0 6px 18px rgba(0,0,0,.3)}
#cellmenu[hidden]{display:none}
#cellmenu button{background:transparent;color:#fff;border:0;padding:10px 14px;font-weight:bold;min-height:40px}
.sch td.sel::after{border:3px solid #2a6fd6;background:rgba(80,140,220,.22)}
.sch td.act::after{border:3px solid #0b4fb5}
input.pfc-calc{font-weight:bold}
input.pfc-calc::after{content:'c'}
.fld input.pfc-calc{background:#FBFDE9}
.fld input.pfc-calc{ /* grey c via sibling mark */ }
label.fld:has(input.pfc-calc)::after{content:'c';position:absolute; /* fallback: mark on the value via keypad */ }
#teditor .te-nav{grid-template-columns:1fr 1fr .7fr .8fr 1fr}
#bbar.selon #btnQF{display:none}
