html,body{background:#f4f6fa;transition:background-color .2s, color .2s}
/* 觸控後不留焦點樣式（避免按鈕看起來像 toggle 卡住） */
button:focus,.btn:focus{outline:none !important;box-shadow:none !important}
button:focus-visible,.btn:focus-visible{outline:2px solid #1F4E79 !important;outline-offset:1px}
/* outline 風格按鈕點擊後背景不要保留藍底 */
.btn-outline-info:focus,.btn-outline-info:active:focus,
.btn-outline-secondary:focus,.btn-outline-secondary:active:focus,
.btn-outline-warning:focus,.btn-outline-warning:active:focus,
.btn-outline-primary:focus,.btn-outline-primary:active:focus,
.btn-outline-success:focus,.btn-outline-success:active:focus,
.btn-outline-danger:focus,.btn-outline-danger:active:focus{
  background-color:transparent !important;color:inherit !important;
}
/* 點擊瞬間視覺反饋 */
.btn:active{transform:scale(.96)}
body.dark{background:#1a1d24;color:#e8eef7}
body.dark .card{background:#252a33;border-color:#3a3f48;color:#e8eef7}
body.dark .card-header{background:#2d333d;color:#e8eef7;border-color:#3a3f48}
body.dark .form-control,body.dark .form-select{background:#2a2f38;border-color:#3a3f48;color:#e8eef7}
body.dark .form-control:focus,body.dark .form-select:focus{background:#2a2f38;color:#e8eef7;border-color:#1F4E79}
body.dark .nav-tabs .nav-link{color:#9ec5e8}
body.dark .nav-tabs .nav-link.active{background:#1F4E79;color:#fff}
body.dark .btn-outline-secondary{color:#9ec5e8;border-color:#3a3f48}
body.dark .table{color:#e8eef7}
body.dark .help-content code{background:#2a2f38;color:#FFB300}
body.dark .help-content table th{background:#2d333d}
body.dark .help-content blockquote{background:#252a33}
body.dark .alert-info{background:#1a3a5c;color:#bfe1ff;border-color:#1F4E79}
body.dark pre{background:#0e1218 !important}
body.dark .symbol-bar{background:#252a33;border-top-color:#1F4E79}
body.dark .sb-tabs button{background:#2a2f38;border-color:#3a3f48;color:#e8eef7}
body.dark .sb-keys button{background:#2a2f38;border-color:#3a3f48;color:#e8eef7}
body.dark #geoproBoard{background:#252a33}

body{font-family:-apple-system,"Segoe UI","PingFang TC","Microsoft JhengHei",sans-serif}
.nav-tabs .nav-link{white-space:nowrap;font-size:.9rem;color:#1F4E79}
.nav-tabs .nav-link.active{background:#1F4E79;color:#fff;border-color:#1F4E79}
.card{box-shadow:0 1px 3px rgba(0,0,0,.06);border-color:#e3e7ee}
.card-header{background:#eef2f7;font-weight:600}

.display-area{background:#0e2238;color:#e8eef7;border-radius:8px;padding:12px;min-height:90px}
.expr-render{color:#9ec5e8;font-size:1rem;min-height:1.4em}
.result-render{color:#fff;font-size:1.4rem;font-weight:600;text-align:right}

.keypad{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}
.keypad button{padding:.55rem .25rem;font-weight:600;border-radius:6px;border:1px solid #d0d7e2;background:#fff;font-size:.9rem}
.keypad .key-num{background:#fff}
.keypad .key-op{background:#dde9f6;color:#1F4E79}
.keypad .key-fn{background:#1F4E79;color:#fff;border-color:#1F4E79;font-size:.8rem}
.keypad .key-ctrl{background:#0e2238;color:#fff;border-color:#0e2238}
.keypad button:active{transform:scale(.97)}

.history-item{cursor:pointer;border-bottom:1px dashed #d8dee8;padding:6px 4px;font-family:ui-monospace,Menlo,Monaco,monospace;font-size:.85rem}
.history-item:hover{background:#f0f5fb}

.mat-grid{display:inline-grid;gap:3px;margin-top:4px}
.mat-grid input{width:62px;text-align:center;padding:2px 4px;border:1px solid #d0d7e2;border-radius:4px;font-family:ui-monospace,Menlo,monospace;font-size:.85rem}

.sheet-table{border-collapse:collapse}
.sheet-table th,.sheet-table td{border:1px solid #d0d7e2;padding:0;min-width:70px;height:28px;text-align:center;background:#fff}
.sheet-table th{background:#eef2f7;font-weight:600}
.sheet-table input{width:100%;height:100%;border:none;padding:2px 4px;font-family:ui-monospace,Menlo,monospace;font-size:.85rem;background:transparent}
.sheet-table input:focus{outline:2px solid #1F4E79}
.sheet-table .row-head{background:#eef2f7;font-weight:600;cursor:default}

.func-row{display:flex;gap:4px;margin-top:4px}
.func-row input{flex:1}
.const-item{padding:6px 8px;border-bottom:1px dashed #e3e7ee;cursor:pointer;font-size:.85rem}
.const-item:hover{background:#f0f5fb}
.const-name{font-weight:600;color:#1F4E79}

@media (max-width:600px){
  .keypad{grid-template-columns:repeat(5,1fr)}
  .keypad button{font-size:.8rem;padding:.45rem .1rem}
}

/* 週期表 */

/* eActivity */
.ea-preview{max-height:600px;overflow:auto;padding:8px;background:#fff;border:1px solid #d0d7e2;border-radius:4px}
.ea-preview .calc-block{background:#0e2238;color:#9ec5e8;padding:8px;border-radius:6px;margin:8px 0;font-family:ui-monospace,Menlo,monospace;font-size:.85rem}
.ea-preview .calc-block .res{color:#fff;font-weight:600}

#qrBox img, #qrBox canvas{margin-top:6px}

/* 計算頁主操作列：兩排佈局 */
.calc-actions{
  display:flex; flex-direction:column; gap:6px; width:100%;
}
.calc-actions .calc-eval-btn{
  width:100%; font-weight:700; font-size:1rem;
  padding:.55rem;
  box-shadow:0 2px 6px rgba(31,78,121,.25);
}
.calc-tools-row{
  display:flex; flex-wrap:wrap; gap:6px; align-items:stretch;
}
.calc-tools-row .btn-group{ flex:1 1 auto; min-width:0; }
.calc-tools-row .btn-group .btn{
  font-size:.85rem; padding:.5rem .5rem; font-weight:600;
  flex:1 1 0; min-width:0;
}
.calc-actions .btn-light{ background:#eef2f7; border-color:#d0d7e2; color:#1F4E79; }
.calc-actions .btn-light:hover{ background:#dde9f6; color:#1F4E79; }
.calc-actions .btn-outline-secondary{ border-color:#d0d7e2; color:#555; }
.calc-actions .btn-outline-secondary:hover:not(:disabled){ background:#f4f6fa; color:#1F4E79; border-color:#1F4E79; }
.calc-actions .btn-outline-secondary:disabled{ opacity:.45 }
.calc-actions .calc-qr-btn{
  flex:0 0 auto; width:44px; padding:.5rem; font-size:1rem;
}

/* Plotly 全域縮放工具列（每個圖右上角） */
.plotly-zoom-bar{
  position:absolute; top:6px; right:6px; z-index:5;
  display:flex; gap:4px;
}
.plotly-reset-btn{
  background:rgba(31,78,121,0.92); color:#fff; border:none;
  width:36px; height:36px; border-radius:50%; font-size:18px; font-weight:700; line-height:1;
  cursor:pointer; box-shadow:0 2px 6px rgba(0,0,0,.25);
  user-select:none; -webkit-tap-highlight-color:transparent;
  display:flex; align-items:center; justify-content:center;
  touch-action:manipulation;
}
.plotly-reset-btn:hover{ background:#1F4E79 }
.plotly-reset-btn:active{ transform:scale(.92); background:#0e2238 }
/* 觸控裝置上 modebar 永遠顯示，不需 hover */
.js-plotly-plot .modebar{ opacity:0.85 !important; }
.js-plotly-plot .modebar:hover{ opacity:1 !important; }

/* === 新分頁系統：主分類 + 子分頁 === */
#mainGroupTab{
  background:#fff;
  border-bottom:none;
  padding-top:6px;
  position:sticky; top:50px; z-index:30;
  box-shadow:0 1px 0 rgba(0,0,0,.04);
}
#mainGroupTab .nav-link{
  border:none;
  border-bottom:3px solid transparent;
  border-radius:0;
  font-weight:700;
  font-size:.95rem;
  color:#666;
  padding:10px 14px;
  background:transparent;
  white-space:nowrap;
}
#mainGroupTab .nav-link:hover{
  background:#f4f6fa;
  color:#1F4E79;
}
#mainGroupTab .nav-link.active{
  color:#1F4E79;
  background:transparent;
  border-bottom-color:#1F4E79;
}
.sub-tab-strip{
  display:flex;
  gap:6px;
  padding:8px 12px;
  background:#eef2f7;
  border-bottom:1px solid #d0d7e2;
  overflow-x:auto;
  scrollbar-width:thin;
  position:sticky;
  top:104px;
  z-index:25;
}
.sub-tab-strip::-webkit-scrollbar{height:4px}
.sub-tab-strip::-webkit-scrollbar-thumb{background:#1F4E79;border-radius:2px}
.sub-tab-btn{
  flex:0 0 auto;
  padding:6px 14px;
  background:#fff;
  border:1px solid #d0d7e2;
  border-radius:18px;
  cursor:pointer;
  white-space:nowrap;
  font-size:.85rem;
  font-weight:600;
  color:#1F4E79;
  transition:all .15s;
}
.sub-tab-btn:hover{ background:#dde9f6 }
.sub-tab-btn.active{
  background:#1F4E79;
  color:#fff;
  border-color:#1F4E79;
  box-shadow:0 2px 6px rgba(31,78,121,.25);
}
@media (max-width:600px){
  #mainGroupTab .nav-link{ font-size:.85rem; padding:8px 10px }
  .sub-tab-strip{ top:90px }
}
body.dark #mainGroupTab{ background:#252a33; box-shadow:0 1px 0 rgba(255,255,255,.05) }
body.dark #mainGroupTab .nav-link{ color:#9ec5e8 }
body.dark #mainGroupTab .nav-link:hover{ background:#2d333d }
body.dark #mainGroupTab .nav-link.active{ color:#fff; border-bottom-color:#9ec5e8 }
body.dark .sub-tab-strip{ background:#1a1d24; border-color:#3a3f48 }
body.dark .sub-tab-btn{ background:#2a2f38; border-color:#3a3f48; color:#9ec5e8 }
body.dark .sub-tab-btn:hover{ background:#3a3f48 }

/* 全域歷史檢視 */
.history-record{background:#fff;border:1px solid #e3e7ee;border-radius:8px;padding:12px;margin-bottom:10px;transition:box-shadow .15s}
.history-record:hover{box-shadow:0 2px 8px rgba(0,0,0,.08)}
.history-record-header{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.history-record-pin{cursor:pointer;font-size:1.2rem;color:#FFB300;user-select:none}
.history-record-title{flex:1;font-weight:600;color:#0e2238;font-size:1rem}
.history-record-module{background:#dde9f6;color:#1F4E79;padding:2px 10px;border-radius:12px;font-size:.78rem;font-weight:600}
.history-record-body{display:flex;gap:12px;align-items:flex-start}
.history-record-preview{width:120px;height:80px;object-fit:contain;background:#f4f6fa;border-radius:4px;flex:0 0 auto}
.history-record-info{flex:1;min-width:0}
.history-record-actions{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
body.dark .history-record{background:#252a33;border-color:#3a3f48}
body.dark .history-record-title{color:#fff}
body.dark .history-record-module{background:#2a3a55;color:#9ec5e8}
body.dark .history-record-preview{background:#1a1d24}

/* 通用記錄/分享/匯出按鈕列 */
.record-actions-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0;padding:8px;background:#f4f6fa;border-radius:6px;border:1px solid #e3e7ee;position:relative}
.ra-btn{padding:5px 10px;background:#fff;border:1px solid #d0d7e2;border-radius:6px;font-size:.85rem;cursor:pointer;font-weight:600;color:#1F4E79;display:inline-flex;align-items:center;gap:4px}
.ra-btn .i{font-size:1rem}
.ra-btn:hover{background:#dde9f6;border-color:#1F4E79}
.ra-btn.ra-saved{background:#2CA02C;color:#fff;border-color:#2CA02C}
.ra-btn.ra-saved::after{content:' ✓'}
.ra-count{font-size:.7rem;margin-left:2px}
body.dark .record-actions-bar{background:#252a33;border-color:#3a3f48}
body.dark .ra-btn{background:#2a2f38;border-color:#3a3f48;color:#9ec5e8}
body.dark .ra-btn:hover{background:#3a3f48;color:#fff}

/* 自訂公式編輯器 */

.cf-sym-btn:hover{background:#1F4E79;color:#fff}

.cf-preview .katex{color:#fff;font-size:1.2em}

/* 公式庫 */
.formula-list{max-height:70vh;overflow-y:auto}
.formula-cat-header{font-weight:700;color:#1F4E79;padding:6px 4px;border-bottom:1px solid #d0d7e2;margin-top:8px;font-size:.85rem}
.formula-item{position:relative;padding:8px 30px 8px 10px;border-bottom:1px dashed #e3e7ee;cursor:pointer;border-radius:4px;transition:background .15s}
.formula-item:hover{background:#f0f5fb}
.formula-item-name{font-weight:600;font-size:.92rem;color:#0e2238}
.formula-item-meta{font-family:ui-monospace,Menlo,monospace;font-size:.78rem;color:#666;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.formula-fav-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1.1rem;cursor:pointer;color:#ccc;padding:4px}
.formula-fav-btn:hover,.formula-fav-btn.active{color:#FFB300}
.formula-header h5{color:#1F4E79;margin-bottom:4px}
.formula-display{background:#f4f6fa;border-radius:8px;padding:18px;text-align:center;margin:12px 0}
.formula-solve-tabs{display:flex;flex-wrap:wrap;gap:6px}
.formula-solve-btn{padding:6px 14px;background:#fff;border:1px solid #d0d7e2;border-radius:18px;cursor:pointer;font-size:.88rem}
.formula-solve-btn.active{background:#1F4E79;color:#fff;border-color:#1F4E79}
.formula-input-row{margin-bottom:10px}
.formula-input-row label{font-size:.85rem;font-weight:600;margin-bottom:3px}
.formula-result-card{background:linear-gradient(135deg,#1F4E79,#0e2238);color:#fff;border-radius:10px;padding:18px;text-align:center;box-shadow:0 4px 12px rgba(31,78,121,.25)}
.formula-result-label{font-size:.95rem;color:#9ec5e8;margin-bottom:4px}
.formula-result-value{font-size:1.6rem;font-weight:700;font-family:ui-monospace,Menlo,monospace}
.formula-result-value small{color:#9ec5e8;font-weight:500;font-size:.65em}

.rpn-stack{background:#0e2238;color:#e8eef7;border-radius:8px;padding:10px;min-height:160px;font-family:ui-monospace,Menlo,monospace}
.rpn-row{display:flex;gap:10px;padding:3px 0;border-bottom:1px dashed #2a3a55}
.rpn-row:last-child{border-bottom:none;color:#fff;font-weight:700;font-size:1.1em}
.rpn-lvl{color:#7da9d6;width:30px}
.rpn-val{flex:1;text-align:right}

.step-output{font-family:ui-monospace,Menlo,monospace;font-size:.92rem}
.step-output .step{padding:8px 10px;margin:6px 0;border-left:4px solid #1F4E79;background:#f4f7fb;border-radius:0 6px 6px 0}
.step-output .step .num{display:inline-block;background:#1F4E79;color:#fff;border-radius:50%;width:22px;height:22px;text-align:center;line-height:22px;font-size:.78rem;margin-right:8px;font-weight:700}
.step-output .step .why{color:#666;font-size:.82rem;margin-top:3px}
.step-output .step .math{padding-left:30px}
.step-output .ans{padding:10px;background:#e6f3ee;border:2px solid #2CA02C;border-radius:6px;margin-top:8px;font-weight:700}
.step-output .err{padding:8px;background:#fde2e2;border-left:4px solid #d62728;color:#a01;border-radius:0 6px 6px 0}

.geopro-tool.active{background:#1F4E79;color:#fff;border-color:#1F4E79}
#geoproBoard{background:#fff;border:1px solid #d0d7e2;border-radius:6px}

#validOut .test{padding:6px 10px;margin:3px 0;border-left:3px solid;border-radius:0 4px 4px 0}
#validOut .test.pass{border-color:#2CA02C;background:#e6f3ee}
#validOut .test.fail{border-color:#D62728;background:#fde2e2}
#validOut .test .name{font-weight:700}
#validOut .test .detail{color:#555;font-size:.85rem}

/* 說明書 */
.help-toc{max-height:75vh;overflow:auto;font-size:.85rem}
.help-toc a{display:block;padding:3px 6px;border-radius:3px;color:#1F4E79;text-decoration:none;cursor:pointer;line-height:1.4}
.help-toc a:hover,.help-toc a.active{background:#eef2f7;text-decoration:none}
.help-toc .lvl2{padding-left:18px;font-size:.78rem;color:#555}
.help-content{font-size:.95rem;line-height:1.7}
.help-content h2{color:#1F4E79;border-bottom:2px solid #1F4E79;padding-bottom:4px;margin-top:24px;font-size:1.4rem}
.help-content h3{color:#0e2238;margin-top:18px;font-size:1.1rem}
.help-content h4{color:#444;font-size:1rem;margin-top:12px}
.help-content code{background:#f4f6fa;padding:1px 5px;border-radius:3px;color:#D32F2F;font-family:ui-monospace,Menlo,monospace;font-size:.88em}
.help-content pre{background:#0e2238;color:#e8eef7;padding:10px;border-radius:6px;overflow:auto;font-size:.85rem}
.help-content table{border-collapse:collapse;width:100%;margin:8px 0;font-size:.9em}
.help-content th,.help-content td{border:1px solid #d0d7e2;padding:5px 8px}
.help-content th{background:#eef2f7}
.help-content blockquote{border-left:4px solid #1F4E79;padding:6px 12px;background:#f4f7fb;margin:8px 0;border-radius:0 6px 6px 0}
.help-content .tag{display:inline-block;background:#1F4E79;color:#fff;padding:2px 8px;border-radius:10px;font-size:.75rem;margin-right:4px}
.help-content .tag.adv{background:#D32F2F}
.help-content .tag.std{background:#2CA02C}
.help-content .tip{background:#fff8e1;border-left:4px solid #FFB300;padding:8px 12px;border-radius:0 6px 6px 0;margin:8px 0}

/* 全域符號工具列 */
.symbol-bar{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:2px solid #1F4E79;box-shadow:0 -4px 12px rgba(0,0,0,.15);z-index:1050;max-height:38vh;overflow:auto}
.sb-tabs{display:flex;gap:4px;padding:6px 8px;border-bottom:1px solid #e3e7ee;flex-wrap:wrap}
.sb-tabs button{padding:4px 10px;border:1px solid #d0d7e2;background:#f4f6fa;border-radius:14px;font-size:.8rem;cursor:pointer}
.sb-tabs button.active{background:#1F4E79;color:#fff;border-color:#1F4E79}
.sb-tabs button#sbClose{margin-left:auto;background:#fff;border-color:#d0d7e2;color:#666;font-weight:700;font-size:1rem;padding:0 10px}
.sb-keys{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:4px;padding:8px}
.sb-keys button{padding:8px 4px;border:1px solid #d0d7e2;background:#fff;border-radius:6px;font-size:.95rem;cursor:pointer;font-family:ui-monospace,Menlo,monospace}
.sb-keys button:hover{background:#eef2f7;border-color:#1F4E79}
.sb-keys button:active{transform:scale(.95)}

/* 通用：math-input 旁的小符號按鈕 */
.math-input-wrap{position:relative}
.math-input-wrap .sym-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:#1F4E79;color:#fff;border:none;border-radius:4px;padding:2px 8px;font-size:.75rem;cursor:pointer;z-index:1}

/* 鍵盤新樣式 */
.keypad{grid-template-columns:repeat(6,1fr)}
.keypad .key-shift{background:#FFB300;color:#000;border-color:#FFB300}
.keypad .key-alpha{background:#D32F2F;color:#fff;border-color:#D32F2F}
.keypad .key-alpha-var{background:#fff;color:#D32F2F;border:1px dashed #D32F2F}
.keypad.shift-on .key-fn{outline:2px solid #FFB300}
.keypad.alpha-on .key-alpha-var{background:#FFEBEE}
@media (max-width:600px){
  .keypad{grid-template-columns:repeat(6,1fr)}
  .keypad button{font-size:.7rem;padding:.4rem .05rem}
}

/* Notebook (Soulver-style) */
.nb-container{display:grid;grid-template-columns:1fr 200px;gap:0;border:1px solid #ced4da;border-radius:.375rem;overflow:hidden}
.nb-editor{border:none!important;border-radius:0!important;resize:vertical;min-height:380px;line-height:1.6;padding:.5rem .75rem;font-size:.9rem}
.nb-editor:focus{box-shadow:none;outline:none}
.nb-results{background:#f8f9fa;border-left:1px solid #dee2e6;padding:.5rem .75rem;font-family:ui-monospace,monospace;font-size:.85rem;line-height:1.6;overflow:auto;min-height:380px}
.nb-line{min-height:1.6em;text-align:right;color:#212529}
.nb-line.nb-text,.nb-line.nb-comment,.nb-line.nb-empty{color:transparent}
.nb-result{color:#0d6efd;font-weight:600}
.nb-var{color:#6c757d;font-size:.8em}
[data-theme="dark"] .nb-container{border-color:#495057}
[data-theme="dark"] .nb-editor{background:#1e1e1e;color:#e9ecef}
[data-theme="dark"] .nb-results{background:#2a2a2a;border-left-color:#495057;color:#e9ecef}
[data-theme="dark"] .nb-result{color:#5bc0eb}
@media (max-width:768px){
  .nb-container{grid-template-columns:1fr;grid-template-rows:auto auto}
  .nb-results{border-left:none;border-top:1px solid #dee2e6;min-height:120px}
}

/* Symbol palette */

.sp-btn:hover{background:#e7f1ff;border-color:#0d6efd}
[data-theme="dark"] 
[data-theme="dark"] 
[data-theme="dark"] 
[data-theme="dark"] .sp-btn:hover{background:#0d6efd33}

/* Tour */

/* Sliders */
.g2d-sliders > div{margin-bottom:.3rem}

/* Practice */
.white-space-pre-line{white-space:pre-line}

/* Quick share FAB */
.quick-share-fab{position:fixed;bottom:124px;right:14px;width:44px;height:44px;border-radius:50%;border:none;background:#198754;color:#fff;font-size:1.1rem;box-shadow:0 4px 12px rgba(0,0,0,.18);z-index:1040;cursor:pointer}
.quick-share-fab:hover{background:#157347}
@media (max-width:600px){
  .quick-share-fab{bottom:114px;right:14px;width:40px;height:40px}
  
}

/* Drag-drop visual */
.drag-over{outline:2px dashed #0d6efd;outline-offset:-2px;background:#e7f1ff !important}
.dragging{opacity:.5}
.history-item[draggable="true"]{cursor:grab}
.history-item[draggable="true"]:active{cursor:grabbing}

/* Function help tooltip */
.fn-help-tip{position:absolute;background:#212529;color:#fff;padding:.3rem .6rem;border-radius:.25rem;font-family:ui-monospace,monospace;font-size:.8rem;box-shadow:0 4px 12px rgba(0,0,0,.2);pointer-events:none;opacity:0;transition:opacity .15s;z-index:1050;max-width:380px}
.fn-help-tip.show{opacity:1}

/* Lesson cards */
.les-out{font-family:ui-monospace,monospace}

/* LaTeX live preview */
.latex-preview{min-height:1.5em;padding:.3rem .5rem;background:rgba(13,110,253,.04);border-left:3px solid #0d6efd;border-radius:.25rem;overflow-x:auto}
.latex-preview .katex{font-size:1em}
[data-theme="dark"] .latex-preview{background:rgba(13,110,253,.12)}

/* Annotate dialog */
#annotateDialog .tool-btn.active{background:#0d6efd;color:#fff}

/* History bulk select */
.history-record-sel{flex-shrink:0}

/* Pro lock visual badge */
.ra-pro-locked{position:relative;opacity:.85}
.ra-pro-locked::after{content:'🔒';position:absolute;top:-6px;right:-6px;font-size:.75em;background:#ffc107;color:#000;border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center;line-height:1}
.ra-pro-locked:hover{background:rgba(255,193,7,.15)}

/* PWA banner */
.pwa-banner{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#0d6efd;color:#fff;padding:.6rem 1.2rem;border-radius:.5rem;display:flex;align-items:center;gap:.75rem;box-shadow:0 4px 14px rgba(0,0,0,.25);z-index:1060;max-width:calc(100% - 40px)}
.pwa-update{background:#198754}
@media (max-width:600px){
  .pwa-banner{font-size:.85rem;padding:.5rem .8rem}
}

/* Calc animate steps */
.ca-step{padding:.3rem 0;border-bottom:1px dashed rgba(0,0,0,.1);animation:caFade .3s ease}
@keyframes caFade{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
[data-theme="dark"] .ca-step{border-bottom-color:rgba(255,255,255,.1)}

/* Formula market cards */

/* Geometry / Algo sub-pills */
.geom-pill, .algo-pill, .learn-pill{padding:.3rem .8rem;border:1px solid #ced4da;background:#fff;border-radius:.4rem;cursor:pointer;font-size:.9rem;margin-right:.3rem;margin-bottom:.3rem}
.geom-pill.active, .algo-pill.active, .learn-pill.active{background:#0d6efd;color:#fff;border-color:#0d6efd}
.geom-pill:hover:not(.active), .algo-pill:hover:not(.active), .learn-pill:hover:not(.active){background:#e7f1ff}
[data-theme="dark"] .geom-pill, [data-theme="dark"] .algo-pill, [data-theme="dark"] .learn-pill{background:#2a2a2a;border-color:#444;color:#e9ecef}
[data-theme="dark"] .geom-pill.active, [data-theme="dark"] .algo-pill.active, [data-theme="dark"] .learn-pill.active{background:#0d6efd}

/* Feedback FAB */
.fb-fab{position:fixed;bottom:68px;right:14px;width:44px;height:44px;border-radius:50%;border:none;background:#fd7e14;color:#fff;font-size:1.2rem;box-shadow:0 4px 12px rgba(0,0,0,.18);z-index:1040;cursor:pointer}
.fb-fab:hover{background:#e8590c}
@media (max-width:600px){
  .fb-fab{bottom:62px;right:14px;width:40px;height:40px;font-size:1rem}
}
