:root{
  --ts-bg:#f5f6f8; --ts-surface:#fff; --ts-border:#e5e7eb;
  --ts-text:#111827; --ts-muted:#6b7280; --ts-primary:#6264a7; --ts-primary-2:#464775;
  --ts-pill:#eef2ff; --ts-ok:#16a34a; --ts-danger:#dc2626;
}
*{box-sizing:border-box} body{margin:0;font:14px/1.4 system-ui,Segoe UI,Arial;color:var(--ts-text);background:var(--ts-bg)}
/* Layout */
.ts-wrap{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.ts-sidebar{background:#fff;border-right:1px solid var(--ts-border);padding:16px;position:sticky;top:0;height:100vh;overflow:auto}
.ts-sidebar h3{margin:0 0 12px 0;font-weight:600}
.ts-nav a{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:8px;color:var(--ts-text);text-decoration:none}
.ts-nav a.active,.ts-nav a:hover{background:#f0f1f7}
.ts-main{display:flex;flex-direction:column}
.ts-topbar{position:sticky;top:0;background:var(--ts-surface);border-bottom:1px solid var(--ts-border);padding:12px 16px;z-index:5}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1}
.btn{border:1px solid var(--ts-border);background:#fff;border-radius:8px;padding:8px 12px;cursor:pointer}
.btn:hover{background:#f8f9fb}
.btn.primary{background:var(--ts-primary);border-color:var(--ts-primary);color:#fff}
.btn.ghost{background:transparent}
.ts-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ts-border);background:#fff;border-radius:8px;padding:8px 12px;cursor:pointer;text-decoration:none;color:var(--ts-text)}
.ts-btn:hover{background:#f8f9fb}
.ts-btn-primary{background:var(--ts-primary);border-color:var(--ts-primary);color:#fff}
.ts-btn-danger{background:var(--ts-danger);border-color:var(--ts-danger);color:#fff}
.segment{display:inline-flex;border:1px solid var(--ts-border);border-radius:10px;overflow:hidden}
.segment .btn{border:0;border-right:1px solid var(--ts-border);border-radius:0}
.segment .btn:last-child{border-right:0}
.kbd{font-family:monospace;background:#eee;border-radius:6px;padding:2px 6px}

/* Calendar grid (week/day) */
.ts-grid{display:grid;border-top:1px solid var(--ts-border);border-left:1px solid var(--ts-border);background:#fff}
.ts-grid.week{grid-template-columns:80px repeat(7,1fr)}
.ts-grid.day{grid-template-columns:80px 1fr}
.ts-colhead{display:grid;grid-template-columns:80px repeat(7,1fr);background:#fff;border-bottom:1px solid var(--ts-border)}
.ts-colhead .hcell{padding:10px 8px;border-right:1px solid var(--ts-border);font-weight:600}
.ts-hours{display:grid;grid-auto-rows:60px} /* 1 ячейка = 1 час */
.ts-cell{border-right:1px solid var(--ts-border);border-bottom:1px solid var(--ts-border);position:relative}
.ts-hourlabel{padding:4px 6px;color:var(--ts-muted);font-size:12px}
.ts-daycol{display:grid;grid-auto-rows:60px;position:relative}
.ts-nowline{position:absolute;left:0;right:0;height:2px;background:#e11d48;z-index:8}
.ts-nowline::before{content:'';position:absolute;left:0;top:-4px;width:8px;height:8px;background:#e11d48;border-radius:50%}

/* Events */
.ev{position:absolute;left:6px;right:6px;border-radius:10px;padding:6px 8px;background:var(--ts-pill);border:1px solid #e0e7ff;overflow:hidden}
.ev .ttl{font-weight:600;font-size:12px;line-height:1.2;max-height:2.4em;overflow:hidden}
.ev .meta{font-size:11px;color:var(--ts-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-compact .meta{display:none}
.ev-compact .ev-teacher{display:none}
.ev-compact .ttl{white-space:nowrap;text-overflow:ellipsis}
.ev.executed{background:#deebff;border-color:#4c9aff}
.ev.cancelled{background:#ffebe6;border-color:#ff5630}
.ev.conflict{box-shadow:0 0 0 2px #f59e0b inset}
.ev.cancelled .ev-strong{color:#475569}
.month .chip.conflict{border-color:#f59e0b;box-shadow:0 0 0 1px #f59e0b inset}
.ev{cursor:pointer}
.ev:hover{z-index:10}
.ev .ev-strong{font-weight:700}
.ev .ev-muted{color:var(--ts-muted)}
.ev .execute-btn{cursor:pointer}
.ev .execute-btn:active{transform:translateY(1px)}

/* Month grid (простая таблица) */
.month{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:8px}
.month .mday{background:#fff;border:1px solid var(--ts-border);border-radius:10px;min-height:100px;padding:8px;position:relative}
.mday .num{position:absolute;top:8px;right:10px;color:var(--ts-muted);font-size:12px}
.mday .chip{display:block;margin-top:18px;font-size:12px;background:#eef2ff;border:1px solid #e0e7ff;padding:2px 6px;border-radius:999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.month-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;padding:8px 8px 0}
.month-weekdays div{padding:6px 8px;color:var(--ts-muted);font-weight:600;font-size:12px;text-transform:uppercase}
.month{grid-auto-rows:140px}
.month .mday{min-height:120px;overflow:hidden}
.mday.dim{opacity:.55}
.mday.today{border-color:#93c5fd;box-shadow:0 0 0 2px rgba(59,130,246,.15) inset}
.js-day{cursor:pointer}
.ts-daycol .js-slot{cursor:pointer}
.ts-daycol .js-slot:hover{background:#f8fafc}

/* Helpers */
.mt8{margin-top:8px} .mr8{margin-right:8px}

/* ===== Parents page layout ===== */
.parent-card{
  border: 2px solid #e5e7eb;           /* светло-серая рамка */
  border-radius: 14px;
  padding: 14px;
  margin: 16px 0;
  background: #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,.04);
}
.parent-card:hover{ box-shadow: 0 4px 12px rgba(0,0,0,.06); }

.parent-card .ts-card-header{
  display:flex; justify-content:space-between; align-items:flex-start;
  border-bottom: 1px dashed #e5e7eb;
  padding-bottom: 8px; margin-bottom: 12px;
}

.parent-card .ts-card-title{ font-size: 18px; font-weight: 700; }
.parent-card .ts-card-subtle{ color:#6b7280; font-size:12px; }
.ts-card-subtle{ color:#6b7280; font-size:12px; }

.ts-subsection{ margin-top:16px; }
.ts-subheader{ display:flex; justify-content:space-between; align-items:center; margin:8px 0; font-weight:600; }

.ts-table{ width:100%; border-collapse: collapse; }
.ts-table th, .ts-table td{ border:1px solid #eee; padding:8px; text-align:left; vertical-align:top; }
.ts-table-sm th, .ts-table-sm td{ padding:6px; font-size:14px; }
.ts-th{position:relative;white-space:nowrap}
.ts-th-btn{border:0;background:transparent;color:var(--ts-muted);cursor:pointer;margin-left:6px}
.ts-th-menu{position:absolute;top:26px;right:0;min-width:220px;background:#fff;border:1px solid var(--ts-border);border-radius:10px;box-shadow:0 10px 24px rgba(0,0,0,.08);padding:8px;display:none;z-index:10}
.ts-th-menu.open{display:block}
.ts-th-actions{display:flex;gap:6px;margin-bottom:8px}
.ts-th-action{border:1px solid var(--ts-border);background:#fff;border-radius:6px;padding:2px 8px;cursor:pointer}
.ts-th-panel label{display:block;font-size:12px;color:var(--ts-muted);margin-bottom:6px}
.ts-th-row{display:grid;grid-template-columns:70px 1fr;gap:6px;margin-bottom:8px}

/* chips (services picker) */
.ts-chiplist{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ts-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid #e5e7eb;background:#f3f4f6;font-size:12px}
.ts-chip-remove{border:0;background:transparent;color:#6b7280;cursor:pointer;font-weight:600;line-height:1}

.ts-dialog::backdrop{ background: rgba(15,23,42,.35); }
.ts-dialog{
  border:0;
  padding:0;
  border-radius:16px;
  max-width:640px;
  min-width:320px;
  width:92vw;
  box-shadow:0 20px 45px rgba(15,23,42,.25);
}
.ts-dialog .ts-panel{
  border:1px solid var(--ts-border);
  border-radius:16px;
  padding:18px;
  background:#fff;
}
.ts-dialog h2{margin:0 0 10px 0;font-size:18px;font-weight:600}
.ts-dialog .ts-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
.ts-dialog .ts-form{display:grid;gap:10px}
.ts-dialog .ts-form .ts-row{margin-bottom:0}
.ts-form .ts-row{margin-bottom:10px}
.ts-form label{display:block;margin-bottom:6px;color:#374151}
.ts-form input,.ts-form select,.ts-form textarea{width:100%;padding:8px;border:1px solid var(--ts-border);border-radius:8px}
.ts-form textarea{min-height:72px}
.ts-chklist{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:6px 12px; }

.ts-btn-small{ padding:4px 8px; font-size:12px; }
.ts-cell-warn{ background:#fff1f2; color:#9f1239; font-weight:600; }
.ts-cell-ok{ background:#dcfce7; color:#166534; font-weight:600; }

.login-page{
  min-height: 70vh;
  display:flex;
  align-items:center;
  justify-content:center;
}
.login-card{
  width: 360px;
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:12px;
  padding:20px;
  box-shadow:0 4px 12px rgba(0,0,0,.06);
}
.login-card h1{ margin:0 0 12px 0; }
.ts-alert{
  padding:8px 10px;
  border-radius:8px;
  border:1px solid #fca5a5;
  background:#fee2e2;
  color:#7f1d1d;
  margin-bottom:10px;
}

.ts-pill{
  display:inline-block;
  padding:2px 8px;
  border-radius:999px;
  font-size:12px;
  margin-left:8px;
}
.ts-pill-muted{
  background:#f3f4f6;
  color:#6b7280;
  border:1px solid #e5e7eb;
}



