/* keengen extras on top of doctor THEME_CSS+STYLE (kb/24). */
.hrow{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.hrow .sub{margin-bottom:22px}
.brand-link{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:12px}
.brand-link:hover{color:inherit}
.chip.on{color:var(--ink);border-color:color-mix(in srgb,var(--accent) 45%,var(--glassb))}
.clockbox{display:flex;align-items:center;gap:12px;background:var(--glass);
border:1px solid var(--glassb);border-radius:18px;padding:8px 16px 8px 8px;
backdrop-filter:blur(24px);box-shadow:var(--shadow)}
.clockbox svg{width:56px;height:56px;flex:none}
.chipbar{background:transparent;border:1px solid var(--glassb);border-radius:20px;
padding:12px 14px;margin:8px 0 20px;overflow:visible;position:relative}
.chipbar .chips{margin:0}
.face{fill:none;stroke:var(--line);stroke-width:2}
.ring{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;
transform:rotate(-90deg);transform-origin:50% 50%}
.tick{stroke:var(--ink3);stroke-width:1.6}
.hand{stroke:var(--ink);stroke-linecap:round}
.hh{stroke-width:4.6}.mm{stroke-width:3.2}
.ss{stroke:var(--accent);stroke-width:1.8}
.pin{fill:var(--accent)}
.digi{line-height:1.25}
.digi .t{font-family:ui-monospace,Consolas,monospace;font-size:21px;
font-weight:700;letter-spacing:.04em;font-variant-numeric:tabular-nums}
.digi .d{color:var(--ink2);font-size:11.5px}
.digi .z{color:var(--ink3);font-size:10px;letter-spacing:.14em;text-transform:uppercase}
.grid2{display:grid;gap:16px;grid-template-columns:1fr}
label{display:block;color:var(--ink2);font-size:12px;margin:0 0 6px}
textarea{width:100%;min-height:140px;resize:vertical;background:var(--glassb);
color:var(--ink);border:1px solid var(--glassb);border-radius:10px;padding:10px;
font-family:ui-monospace,Consolas,monospace;font-size:13px;outline:none}
textarea:focus{border-color:var(--accent);
box-shadow:0 0 0 3.5px rgba(10,132,255,.22);
box-shadow:0 0 0 3.5px color-mix(in srgb,var(--accent) 22%,transparent)}
html[data-theme=dark] textarea{background:#1c202b;color:var(--ink);border-color:#333a49}
.drop{border:1.5px dashed color-mix(in srgb,var(--line) 85%,transparent);border-radius:12px;
padding:16px 14px;text-align:center;color:var(--ink3);cursor:pointer;background:transparent;
margin-top:10px;font-size:13.5px;font-weight:550;line-height:1.4;
transition:border-color .15s,color .15s,background .15s}
.drop:hover,.drop:focus{border-color:var(--accent);color:var(--ink2);
background:color-mix(in srgb,var(--glassb) 55%,transparent);outline:none}
.drop.over{border-color:var(--accent);color:var(--accent);
background:color-mix(in srgb,var(--accent) 8%,transparent)}
.path{font-family:ui-monospace,Consolas,monospace;color:var(--accent)}
.hint{color:var(--ink2);font-size:13px;margin:0 0 10px}
.hint.okish{color:var(--ink);font-weight:650}
.sec-head{display:flex;align-items:center;justify-content:space-between;gap:10px;
margin:0 0 12px;position:relative}
.sec-head > h2,.sec-head > .ipk-title{margin:0;flex:1;min-width:0}
.card .sec-head > h2{margin:0;font-size:16px;font-weight:650}
.ipk-install > .sec-head,.ipk-restore > .sec-head{margin:0 0 8px}
.info-tip{position:relative;flex:none;margin:0}
.info-tip > summary{list-style:none;cursor:pointer;box-sizing:border-box;
width:18px;height:18px;border-radius:50%;border:1px solid var(--line);color:var(--ink3);
display:inline-flex;align-items:center;justify-content:center;
font:700 11px/1 Georgia,"Times New Roman",serif;background:transparent;user-select:none;
padding:0}
.info-tip > summary::-webkit-details-marker{display:none}
.info-tip > summary:hover{border-color:var(--ink2);color:var(--ink2)}
.info-tip[open] > summary{border-color:var(--accent);color:var(--accent)}
.info-tip-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:40;
width:min(340px,calc(100vw - 48px));padding:10px 12px;border-radius:12px;
background:var(--glass);border:1px solid var(--glassb);box-shadow:var(--shadow);
backdrop-filter:blur(24px);font-size:12.5px;line-height:1.45;color:var(--ink2)}
.info-tip-panel p{margin:0 0 8px}
.info-tip-panel p:last-child{margin:0}
.tblwrap table{min-width:0 !important;table-layout:auto}
.tblwrap .col-on,.tblwrap td:first-child{width:36px;max-width:40px;padding-left:6px;padding-right:4px}
.tblwrap td:first-child{text-align:center}
.tblwrap td:nth-child(2){width:34%;min-width:7em}
.tblwrap td:nth-child(3),.tblwrap td:nth-child(4){word-break:break-word}
.tblwrap td input[type=text]{min-width:0;box-sizing:border-box}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media (max-width:640px){
  .tblwrap thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
  .tblwrap table,.tblwrap tbody,.tblwrap tr,.tblwrap td{display:block;width:100%;max-width:none;min-width:0 !important}
  .tblwrap tr{position:relative;border:1px solid var(--glassb);border-radius:12px;
    margin:0 0 8px;padding:10px 10px 10px 44px;background:var(--glass)}
  .tblwrap td{border:0;padding:3px 0}
  .tblwrap td:first-child{position:absolute;left:10px;top:12px;width:auto;max-width:none;padding:0}
  .tblwrap td:nth-child(2){width:auto;min-width:0;font-weight:650}
  .tblwrap td:nth-child(3)::before,.tblwrap td:nth-child(4)::before{
    display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;
    color:var(--ink3);margin-bottom:2px}
  .tblwrap td:nth-child(3)::before{content:"сервер"}
  .tblwrap td:nth-child(4)::before{content:"протокол"}
}
html[lang=en] .tblwrap td:nth-child(3)::before{content:"server"}
html[lang=en] .tblwrap td:nth-child(4)::before{content:"protocol"}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.preview-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px}
.preview-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px}
.tab{border:1px solid var(--glassb);background:var(--glass);color:var(--ink2);
border-radius:980px;padding:7px 17px;font-size:13.5px;font-weight:600;
cursor:pointer;font-family:inherit;backdrop-filter:blur(24px);transition:color .2s,border-color .2s}
.tab.on{background:linear-gradient(180deg,#3aa0ff,#0064e0);color:#fff;border-color:transparent;
box-shadow:0 4px 14px rgba(0,100,224,.35)}
.tab:not(.on):hover{color:var(--ink)}
.ipk-install{margin:0 0 14px;padding:12px;border:1px solid var(--glassb);border-radius:14px;background:var(--glass)}
.ipk-title{margin:0;font-size:15px;font-weight:700;color:var(--ink)}
.ipk-log{margin:10px 0 0;max-height:220px;font-size:11px}
.ipk-log[hidden]{display:none !important}
#ipkErr{margin:8px 0 0}
.tab-menu{position:fixed;z-index:90;min-width:200px;padding:6px;
background:var(--glass);border:1px solid var(--glassb);border-radius:12px;
box-shadow:var(--shadow);backdrop-filter:blur(24px)}
.tab-menu[hidden]{display:none}
.tab-menu button{display:block;width:100%;text-align:left;border:0;background:transparent;
color:var(--ink);padding:8px 12px;border-radius:8px;font:inherit;cursor:pointer}
.tab-menu button.warn{color:var(--warn);font-weight:650}
.modal-apply{max-width:480px}
.apply-list{margin:10px 0;padding-left:18px;color:var(--ink);font-size:13px;line-height:1.45}
.apply-list li{margin:0 0 4px;font-family:ui-monospace,Consolas,monospace;font-size:12.5px}
pre{background:#0b0e13;color:#cfe3ff;border:1px solid var(--line);border-radius:12px;
padding:12px;overflow:auto;max-height:420px;font-size:11px}
.note{background:rgba(10,132,255,.1);border:1px solid rgba(10,132,255,.28);
color:var(--ink2);padding:10px 12px;border-radius:12px;margin:0 0 12px;font-size:13px;line-height:1.45}
.loaded{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 0;align-items:center}
.loaded-note{flex:1 1 100%;margin:0;color:var(--ink2);font-size:12.5px;line-height:1.45}
.loaded-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--glassb);
background:var(--glass);border-radius:980px;padding:5px 10px 5px 12px;font-size:12.5px;cursor:pointer}
.loaded-chip:hover{border-color:var(--accent);color:var(--ink)}
.loaded-chip button{border:0;background:transparent;color:var(--ink3);cursor:pointer;
font-size:16px;line-height:1;padding:0 2px}
.backup-status{font-size:12.5px;color:var(--ink2);flex:1 1 180px}
.copy-why{margin:10px 0 0;font-size:12.5px}
.modal{position:fixed;inset:0;z-index:80;background:rgba(12,16,24,.45);
display:flex;align-items:center;justify-content:center;padding:20px}
.modal[hidden]{display:none}
.modal-card{background:var(--glass);border:1px solid var(--glassb);border-radius:18px;
box-shadow:var(--shadow);backdrop-filter:blur(24px);padding:20px 22px;max-width:420px;width:100%}
.modal-card h2{margin:0 0 8px;font-size:18px}
.modal-card p{margin:0;color:var(--ink2);font-size:14px;line-height:1.45}
.keenetic-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;
padding:12px;border:1px solid var(--glassb);border-radius:14px;background:var(--glass)}
.keenetic-badge{font-size:13px;font-weight:650;color:var(--ink2)}
.keenetic-badge.lan{color:var(--ok)}
.keenetic-badge.need{color:#c22a20}
.keenetic-badge.away{color:var(--warn)}
html[data-theme=dark] .keenetic-badge.need,
html[data-theme=ocean] .keenetic-badge.need,
html[data-theme=forest] .keenetic-badge.need,
html[data-theme=purple] .keenetic-badge.need,
html[data-theme=sunset] .keenetic-badge.need,
html[data-theme=neon] .keenetic-badge.need{color:#ff6961}
#authKeenetic.auth-ok{
border-color:rgba(48,209,88,.75);
box-shadow:0 0 0 1.5px rgba(48,209,88,.35),0 0 10px rgba(48,209,88,.22);
animation:auth-shimmer-green 2.6s ease-in-out infinite}
#authKeenetic.auth-need{
border-color:rgba(255,69,58,.7);
box-shadow:0 0 0 1.5px rgba(255,69,58,.32),0 0 10px rgba(255,69,58,.18);
animation:auth-shimmer-red 2.6s ease-in-out infinite}
#authKeenetic:disabled,#authKeenetic.auth-muted{
animation:none;border-color:var(--glassb);box-shadow:none;opacity:.55}
#installIpk.ipk-update{
border:1px solid rgba(10,200,255,.55);
box-shadow:0 0 0 1.5px rgba(10,180,255,.35),0 0 12px rgba(0,200,255,.28),
 0 4px 14px rgba(0,100,224,.35),inset 0 1px 0 rgba(255,255,255,.3);
animation:auth-shimmer-update 2.4s ease-in-out infinite}
@keyframes auth-shimmer-green{
0%,100%{box-shadow:0 0 0 1.5px rgba(48,209,88,.32),0 0 8px rgba(48,209,88,.18);border-color:rgba(48,209,88,.55)}
50%{box-shadow:0 0 0 2px rgba(48,209,88,.7),0 0 14px rgba(48,209,88,.38);border-color:rgba(52,199,89,.95)}
}
@keyframes auth-shimmer-red{
0%,100%{box-shadow:0 0 0 1.5px rgba(255,69,58,.28),0 0 8px rgba(255,69,58,.14);border-color:rgba(255,69,58,.5)}
50%{box-shadow:0 0 0 2px rgba(255,69,58,.65),0 0 14px rgba(255,69,58,.32);border-color:rgba(255,99,90,.9)}
}
@keyframes auth-shimmer-update{
0%,100%{box-shadow:0 0 0 1.5px rgba(10,180,255,.3),0 0 10px rgba(0,200,255,.22),
 0 4px 14px rgba(0,100,224,.35),inset 0 1px 0 rgba(255,255,255,.3);filter:brightness(1)}
50%{box-shadow:0 0 0 2.5px rgba(0,229,255,.55),0 0 16px rgba(0,200,255,.4),
 0 6px 18px rgba(0,100,224,.45),inset 0 1px 0 rgba(255,255,255,.35);filter:brightness(1.06)}
}
@media (prefers-reduced-motion:reduce){
 #authKeenetic.auth-ok,#authKeenetic.auth-need,#installIpk.ipk-update{animation:none}
}
.modal-auth{max-width:440px}
.modal-auth label{margin-top:12px;display:block}
.modal-auth input,.modal-auth select{width:100%;box-sizing:border-box}
.auth-row{display:grid;grid-template-columns:1fr 1.4fr;gap:10px}
.auth-err{margin:10px 0 0;color:var(--warn);font-size:13px;font-weight:650}
.auth-actions{flex-wrap:wrap}
.modal-card .actions{margin-top:16px}
.btn:disabled,.btn[disabled]{opacity:.45;cursor:not-allowed;filter:none;box-shadow:none;pointer-events:auto}
.btn:disabled:hover,.btn[disabled]:hover{filter:none}
.card h2{margin:0 0 12px;font-size:16px;font-weight:650}
.card-preview{margin-top:16px;overflow:visible}
.card-preview > .sec-head{margin:0 0 12px}
ol.howto{margin:0;padding-left:22px;color:var(--ink);line-height:1.55}
ol.howto li{margin:0 0 10px}
ol.howto code,.card code{font-size:12.5px}
@media (max-width:640px){
  .hrow{gap:10px}
  .hrow > div:first-child{min-width:0;flex:1}
  .clockbox{width:auto;max-width:calc(100% - 8px);margin:0;flex:none}
  .clockbox svg{width:48px;height:48px}
  .digi .t{font-size:18px}
  .chipbar{padding:10px 12px;border-radius:16px;margin:12px 0 16px}
}
.more-fold{display:contents}
.more-fold > summary{list-style:none}
.more-fold > summary::-webkit-details-marker{display:none}
.more-fold .more-chips{flex:1 0 100%;width:100%;margin:8px 0 0}
.more-fold:not([open]) .more-chips{display:none}
