/* Базовые стили — перенесены из исходного чек-листа без изменений */
:root{--navy:#17365d;--blue:#2878b8;--green:#16835c;--ink:#172338;--muted:#6b778a;--line:#dce4ec;--soft:#f4f7fa;--white:#fff;--shadow:0 16px 45px rgba(23,54,93,.09);--red:#b43e4b}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--soft);font:15px/1.5 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.shell{width:min(1180px,calc(100% - 28px));margin:auto}.hero{padding:34px 0 22px}.hero small{color:var(--blue);font-weight:850;letter-spacing:.12em;text-transform:uppercase}.hero h1{margin:7px 0 8px;font-size:clamp(30px,4vw,48px);line-height:1.05;letter-spacing:-.035em}.hero p{margin:0;color:var(--muted);font-size:16px}
.layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:18px;align-items:start;padding-bottom:44px}.sidebar,.main{background:var(--white);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.sidebar{position:sticky;top:14px;overflow:hidden}.side-head{padding:18px;border-bottom:1px solid var(--line)}.side-head h2{margin:0;font-size:18px}.side-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.modules{max-height:66vh;overflow:auto;padding:8px}.module{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;margin:3px 0;border-radius:11px}.module.active{background:#eaf4fb}.module.dragover{box-shadow:inset 0 3px #18a3a5;background:#eefafa}.module button{border:0;background:transparent;cursor:pointer}.module-grip{padding:10px 4px 10px 9px;color:#9aa6b5;cursor:grab;user-select:none}.module-grip:active{cursor:grabbing}.module-open{min-width:0;padding:11px 6px;text-align:left}.module-open strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.module-open span{display:block;margin-top:2px;color:var(--muted);font-size:12px}.module.active .module-open strong{color:var(--navy)}.module-delete{padding:8px 11px;color:#9aa6b5;font-size:18px}.module-delete:hover{color:#b43e4b}.add{display:flex;gap:7px;padding:12px;border-top:1px solid var(--line);background:#fbfcfe}.add input{min-width:0;width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 10px;outline:0}.add input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(40,120,184,.1)}.add button{border:0;border-radius:9px;padding:9px 12px;color:white;background:var(--navy);font-weight:800;cursor:pointer}
.main{overflow:hidden}.main-head{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:21px 23px;border-bottom:1px solid var(--line)}.main-head h2{margin:0;font-size:23px}.progress-text{color:var(--muted);font-size:13px;white-space:nowrap}.progress{height:7px;background:#e6edf3}.progress span{display:block;width:0;height:100%;background:linear-gradient(90deg,#18a3a5,var(--blue));transition:width .2s}.checklist{padding:10px}.item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:13px;padding:16px 14px;border-bottom:1px solid var(--line);border-radius:12px}.item:last-child{border-bottom:0}.item:hover{background:#f8fafc}.item.done{background:#eff9f4}.main-check{width:22px;height:22px;margin:2px 0 0;accent-color:var(--green);cursor:pointer}.item h3{margin:0;font-size:16px;line-height:1.35}.item.done h3{color:var(--green)}.edit-btn{align-self:start;border:1px solid var(--line);border-radius:9px;padding:6px 9px;color:var(--blue);background:#fff;font-size:12px;font-weight:800;cursor:pointer}.edit-btn:hover{background:#eef6fb}.subitems{display:grid;gap:6px;margin-top:11px}.subitem{display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:start;color:var(--muted);font-size:13px;cursor:pointer}.subitem input{width:17px;height:17px;margin:1px 0 0;accent-color:var(--green);cursor:pointer}.saved{padding:12px 20px;color:var(--muted);background:#fbfcfe;border-top:1px solid var(--line);font-size:12px;text-align:right}.modal-backdrop{position:fixed;inset:0;z-index:50;display:none;place-items:center;padding:18px;background:rgba(15,31,51,.48);backdrop-filter:blur(3px)}.modal-backdrop.show{display:grid}.modal{width:min(650px,100%);max-height:88vh;overflow:auto;padding:22px;background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.22)}.modal h2{margin:0 0 17px}.field-label{display:block;margin:12px 0 6px;font-size:13px;font-weight:800}.text-field{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px 11px;outline:0}.text-field:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(40,120,184,.1)}.edit-details{display:grid;gap:8px}.edit-detail{display:grid;grid-template-columns:1fr auto;gap:7px}.remove-detail{border:0;border-radius:8px;padding:7px 11px;color:#b43e4b;background:#fff1f2;cursor:pointer}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.modal-btn{border:1px solid var(--line);border-radius:9px;padding:9px 13px;background:#fff;font-weight:800;cursor:pointer}.modal-btn.primary{color:#fff;border-color:var(--navy);background:var(--navy)}
@media(max-width:760px){.layout{grid-template-columns:1fr}.sidebar{position:static}.modules{display:flex;max-height:none;overflow:auto}.module{min-width:220px}.main-head{align-items:flex-start;flex-direction:column}}

/* ---------- Дополнения для общей (серверной) версии ---------- */
button,input,select{font:inherit;color:inherit}
[hidden]{display:none!important}

/* Шапка с пользователем */
.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap}
.userbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding-bottom:3px}
.user-name{margin-right:4px;color:var(--navy);font-size:14px;font-weight:800}
.top-btn{border:1px solid var(--line);border-radius:9px;padding:7px 11px;color:var(--navy);background:#fff;font-size:13px;font-weight:800;cursor:pointer}
.top-btn:hover{background:#eef6fb}
.top-btn.ghost{color:var(--muted);background:transparent}

/* Заголовок модуля с редактированием */
.head-left{min-width:0;flex:1}
.title-wrap{display:flex;align-items:center;gap:6px;min-width:0}
.title-wrap h2{min-width:0;overflow-wrap:anywhere;cursor:text}
.icon-btn{flex:none;border:1px solid transparent;border-radius:8px;padding:3px 8px;color:#9aa6b5;background:transparent;font-size:16px;line-height:1.4;cursor:pointer}
.icon-btn:hover{border-color:var(--line);color:var(--blue);background:#eef6fb}
.title-input{flex:1;min-width:0;border:1px solid var(--blue);border-radius:9px;padding:6px 10px;outline:0;font-size:20px;font-weight:700;box-shadow:0 0 0 3px rgba(40,120,184,.1)}
.modal-btn.small{padding:7px 11px;font-size:13px}
.head-meta{margin-top:4px;color:var(--muted);font-size:12px}
.link-btn{border:0;padding:0;color:var(--blue);background:none;font-size:inherit;font-weight:700;cursor:pointer}
.link-btn:hover{text-decoration:underline}
.progress-text{text-align:right}
.progress-text b{color:var(--ink);font-weight:800}

/* Блоки и пункты */
.block-count{margin-left:6px;color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap}
.item.done .block-count{color:var(--green)}
.sub-text{min-width:0}
.subitem.checked .t{color:var(--green);text-decoration:line-through;text-decoration-thickness:1px}
.subitem .meta{margin-left:7px;color:#9aa6b5;font-size:11px;white-space:nowrap}
.add-block{display:block;width:calc(100% - 8px);margin:8px 4px 4px;border:1px dashed #b9c6d3;border-radius:12px;padding:12px;color:var(--blue);background:#fbfcfe;font-weight:800;cursor:pointer}
.add-block:hover{border-color:var(--blue);background:#eef6fb}
.empty{padding:40px 20px;color:var(--muted);text-align:center}

/* Нижняя строка статуса */
.saved{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left}
.conn{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.conn i{width:8px;height:8px;border-radius:50%;background:#9aa6b5}
.conn.online i{background:#18a36a}
.conn.offline i{background:#d39a2c}
.save-status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.save-status.error{color:var(--red);font-weight:700}

/* Окна */
.modal.wide{width:min(940px,100%)}
.modal-actions .spacer{flex:1}
.modal-btn.danger{color:var(--red);border-color:#f3c9cf;background:#fff5f6}
.modal-btn:disabled{opacity:.55;cursor:default}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.modal-head h2{margin:0}
.edit-detail{grid-template-columns:auto 1fr auto auto auto;align-items:center}
.edit-detail .mark{width:18px;color:var(--green);font-weight:800;text-align:center}
.move-detail{border:1px solid var(--line);border-radius:8px;padding:6px 9px;color:var(--muted);background:#fff;cursor:pointer}
.move-detail:disabled{opacity:.35;cursor:default}
.hint{margin:6px 0 0;color:var(--muted);font-size:12px}
.confirm-text{margin:0;white-space:pre-line}
.form-error{min-height:18px;margin:10px 0 0;color:var(--red);font-size:13px;font-weight:700}

/* История */
.hist-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.hist-filters select{flex:1 1 220px;min-width:0;border:1px solid var(--line);border-radius:9px;padding:9px 10px;background:#fff}
.hist-filters a{display:inline-flex;align-items:center;text-decoration:none;color:var(--navy)}
.hist-list{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.hist-row{display:grid;grid-template-columns:118px 160px minmax(0,1fr);gap:12px;padding:10px 13px;border-bottom:1px solid var(--line);font-size:13px}
.hist-row:last-child{border-bottom:0}
.hist-row:nth-child(even){background:#fbfcfe}
.hist-row time{color:var(--muted);white-space:nowrap}
.hist-row .who{overflow:hidden;font-weight:700;text-overflow:ellipsis}
.hist-row .what{overflow-wrap:anywhere}
.hist-row .mod{display:block;color:var(--muted);font-size:12px}
.hist-more{display:block;margin:12px auto 0}
.trash{margin-bottom:14px;border:1px solid #f0dcc0;border-radius:12px;padding:10px 13px;background:#fffaf2}
.trash h3{margin:0 0 6px;font-size:14px}
.trash-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0;border-top:1px solid #f3e6d3;font-size:13px}
.trash-row:first-of-type{border-top:0}
.trash-row span{color:var(--muted)}

/* Пользователи */
.users-table{width:100%;border-collapse:collapse;font-size:13px}
.users-table th,.users-table td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.users-table th{color:var(--muted);font-size:12px;font-weight:800}
.users-table tr.inactive td{color:#9aa6b5}
.users-table .actions{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end}
.badge{display:inline-block;border-radius:6px;padding:1px 7px;color:var(--navy);background:#eaf4fb;font-size:11px;font-weight:800}
.badge.off{color:#8a5a12;background:#fff2db}
.user-form{display:grid;grid-template-columns:1fr 1.4fr 1fr auto auto;gap:8px;align-items:center;margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.check-inline{display:inline-flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.table-wrap{overflow-x:auto}

/* Всплывающие уведомления */
.toasts{position:fixed;right:18px;bottom:18px;z-index:80;display:grid;gap:8px;max-width:min(420px,calc(100% - 36px))}
.toast{border-radius:12px;padding:11px 14px;color:#fff;background:var(--navy);box-shadow:0 12px 30px rgba(0,0,0,.18);font-size:13px;animation:toast-in .18s ease-out}
.toast.error{background:var(--red)}
@keyframes toast-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Страница входа */
.login-page{display:grid;min-height:100vh;place-items:center;padding:18px}
.login-card{width:min(400px,100%);padding:30px 28px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}
.login-card small{color:var(--blue);font-weight:850;letter-spacing:.12em;text-transform:uppercase}
.login-card h1{margin:6px 0 4px;font-size:28px;line-height:1.1;letter-spacing:-.02em}
.login-card p{margin:0 0 14px;color:var(--muted);font-size:14px}
.login-card .modal-btn{width:100%;margin-top:18px;padding:11px}

@media(max-width:760px){
  .hist-row{grid-template-columns:1fr;gap:2px}
  .user-form{grid-template-columns:1fr}
  .userbar{width:100%}
  .progress-text{text-align:left}
}
@media print{body{background:#fff}.hero{padding:0 0 12px}.sidebar,.saved,.userbar,.edit-btn,.icon-btn,.add-block,.toasts{display:none!important}.layout{display:block}.main{box-shadow:none;border:0}.item{break-inside:avoid}.shell{width:100%}}
