.header-tools{display:flex;gap:14px;align-items:center}
.install-button,#install-dialog button,#cancel-solve{border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:white;color:var(--teal);min-height:44px}
.solve-actions{display:flex;gap:8px;align-items:stretch}.solve-actions .solve-button{flex:1}.solve-actions #cancel-solve{margin-top:14px}
.mobile-nav,.keyboard-tabs{display:none}
.offline-notice{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:12px 16px;border-radius:12px;background:#edf6f2;color:var(--teal);margin-bottom:16px;font-size:13px}
.offline-notice button{border:1px solid #bed8cc;border-radius:8px;background:white;color:inherit;padding:8px 12px;min-height:44px}
#install-dialog{max-width:min(440px,90vw);border:1px solid var(--line);border-radius:20px;padding:26px;color:var(--ink);box-shadow:0 20px 80px #0003}
#install-dialog::backdrop{background:#142d3c80}#install-dialog h2{font-size:20px}#install-dialog p{margin:16px 0;line-height:1.7}#install-dialog form{text-align:right}
@media(max-width:780px){
  :root{--radius:18px}
  body{padding-bottom:calc(76px + env(safe-area-inset-bottom));overscroll-behavior-y:contain}
  .site-header{position:sticky;top:0;z-index:12;height:auto;min-height:64px;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:#f7f8f5f5;backdrop-filter:blur(12px)}
  .brand{font-size:21px;gap:9px}.brand-mark{width:34px;height:38px;font-size:31px}.brand small{display:none}
  .header-tools{gap:8px}.local-badge{max-width:125px;font-size:10px}.install-button{font-size:12px;padding:8px 10px}
  .page{padding:14px 12px 20px}.page-heading,.page-footer{display:none}.workspace{display:block}
  .editor-card{padding:16px;border-radius:20px;box-shadow:none}.editor-card>.section-heading{display:none}
  .mode-switch{margin-bottom:18px}.mode-switch button{min-height:44px;font-size:11px}.mode-switch button>span{display:block;margin:0;font-size:20px}
  #mf{min-height:102px;font-size:29px;padding:22px 10px}.field-label{font-size:13px}.editor-help{font-size:11px}
  .keyboard-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);padding:4px 0 10px;margin-bottom:10px}
  .keyboard-tabs button{flex:1;border:0;border-radius:10px;background:#f0f4f1;min-height:42px;font-weight:600;color:var(--muted)}
  .keyboard-tabs button[aria-pressed=true]{background:var(--teal);color:white}
  .palette-label{display:none}.palette-group{margin:8px 0}.keys{gap:7px!important}.keys button,.template-keys button{min-height:45px;font-size:17px;border-radius:10px}
  .function-keys button{font-size:16px}.template-keys{gap:6px}.template-keys button{font-size:15px}
  .palette[data-keys=basic] [data-group=Функции],.palette[data-keys=basic] [data-group=Структура],
  .palette[data-keys=structure] [data-group=Функции],.palette[data-keys=structure] [data-group=Числа],
  .palette[data-keys=functions] [data-group=Структура],.palette[data-keys=functions] [data-group=Числа]{display:none}
  .number-keys{display:grid;grid-template-columns:repeat(6,1fr)}.number-keys button{background:#f3f5f2;font-size:21px}
  .navigation-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px}.navigation-keys button{min-height:42px;font-size:17px}
  .navigation-keys button[data-cmd=moveAfterParent],.navigation-keys button[data-cmd=moveToNextPlaceholder]{grid-column:span 2;font-size:12px}
  .editor-actions button{min-height:40px}.method-picker{margin-top:15px}.method-picker select,input,textarea{font-size:16px!important}.method-picker select{min-height:46px}
  .submit-hint>span:last-child{display:none}.solve-button{min-height:54px;font-size:16px}.initial-fields{flex-wrap:wrap}
  .mobile-nav{display:grid;grid-template-columns:repeat(3,1fr);position:fixed;z-index:20;bottom:0;left:0;right:0;padding:6px 12px calc(6px + env(safe-area-inset-bottom));background:#fffffff5;border-top:1px solid var(--line);backdrop-filter:blur(14px)}
  .mobile-nav button{min-height:56px;background:none;border:0;border-radius:12px;font-size:11px;font-weight:600;color:var(--muted)}
  .mobile-nav button>span{display:block;font-size:24px;line-height:1.2;margin-bottom:4px}.mobile-nav button[aria-current=page]{background:var(--tint);color:var(--teal)}
  body[data-view=input] .solution-column,body:not([data-view=input]) .input-column{display:none}
  body[data-view=solution] .plot-card{display:none}
  body[data-view=graph] #result>:not(.plot-card){display:none}
  body[data-view=graph] .solution-heading{display:none}
  .plot-card{margin-top:0;padding:14px 10px}.solution-column{outline:none}.solution-heading{margin:6px 2px 15px}
  /* Подпись класса: на узком экране ярлык ТИП/ПРИЁМ обязан начинать строку,
     иначе он уезжает в середину и перестаёт быть заголовком. */
  .classification{gap:5px 6px}
  .classification .tag-label{flex-basis:100%;margin:6px 0 0}
  .classification .tag-label:first-child{margin-top:0}
  .classification .tag-label:not(:first-child){margin-left:0}
  .classification .tag{white-space:normal;font-size:11px;padding:4px 11px}
  .step-card{padding:18px 16px}.step-heading h3{font-size:15px}.step-details>summary{min-height:44px}.detail-hint{font-size:10px}
  .answer-card{padding:20px 17px}.empty-state{min-height:300px}.examples-card{padding:16px}.example-chip{min-height:52px}
  .sm-plot button,.sm-plot input[type=number]{min-height:44px!important}.motion-controls .replay-button{min-height:44px}.sm-plot{border:0!important;padding:2px!important}
}
