/* ============================================================
   GP Team Hub - 1on1.css
   The log of time a manager and a rep spent together: the figures over
   it, the row that adds one, and the entries themselves.

   COLOR RULE: no literal color values. Tokens only.
   ============================================================ */

.o1{display:block;margin-top:14px;}

/* ---- The figures ----
   Three readings a manager acts on: when they last sat down with this
   rep, how many of those there have been, and how many days the two of
   them have worked side by side. */
.o1-facts{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
  margin-bottom:14px;
}
.o1-fact{
  display:flex;flex-direction:column;gap:3px;
  padding:12px 14px;
  background:var(--surface-raised);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  min-width:0;
}
/* A weekly meeting that has not happened for a week is the one thing on
   here that needs doing, so the tile carries it through its whole ground
   rather than through an edge. */
.o1-fact[data-due="true"]{
  background:var(--accent-wash);
  border-color:var(--accent);
}
.o1-fact-k{
  font-size:.7rem;font-weight:700;letter-spacing:.4px;
  text-transform:uppercase;color:var(--ink-faint);
}
.o1-fact[data-due="true"] .o1-fact-k{color:var(--ink-soft);}
.o1-fact-v{font-size:1.25rem;font-weight:700;line-height:1.2;color:var(--ink);}
.o1-fact-n{font-size:.76rem;color:var(--ink-faint);line-height:1.35;}
.o1-fact[data-due="true"] .o1-fact-n{color:var(--ink-soft);}

/* ---- Logging one ----
   One line: what it was, when, how long, and a first note. The rest of
   what can be written about it is on the row it becomes. */
.o1-add{
  display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  padding:12px 14px;
  background:var(--surface-sunken);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  margin-bottom:12px;
}
.o1-in{
  background:var(--surface-page);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  color:var(--ink);
  padding:8px 11px;
  font:inherit;font-size:.87rem;line-height:1.4;
  outline:none;
  min-width:0;
}
.o1-in:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring-soft);}
.o1-in::placeholder{color:var(--ink-faint);}
.o1-in-date{width:150px;}
.o1-in-days{width:74px;}
.o1-in-days[hidden]{display:none;}
.o1-in-note{flex:1;min-width:180px;}
.o1-add-kind{min-width:180px;}

/* ---- The entries ---- */
.o1-rows{display:grid;gap:7px;}
.o1-row{
  display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap;
  padding:11px 14px;
  background:var(--surface-raised);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
}
.o1-row-ic{font-size:1rem;color:var(--accent);flex-shrink:0;line-height:1.5;}
.o1-row[data-locked="true"] .o1-row-ic{color:var(--ink-faint);}
.o1-row-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.o1-row-name{font-size:.92rem;font-weight:600;line-height:1.35;}
.o1-row-when{font-weight:400;color:var(--ink-soft);}
.o1-row-note{color:var(--ink-faint);font-size:.79rem;line-height:1.35;}
.o1-row-peek{
  margin-top:5px;
  padding:8px 11px;
  background:var(--surface-sunken);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  color:var(--ink);
  font-size:.85rem;line-height:1.5;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

/* The buttons are one flex item, so the panel below them lands on its
   own line and no button moves when it opens. */
.o1-row-acts{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  flex-shrink:0;
}

/* ---- The notes on one entry ----
   flex outranks the hidden attribute, so a closed panel would still
   take its line on the row. */
.o1-notes[hidden]{display:none;}
.o1-notes{
  flex-basis:100%;
  display:grid;gap:10px;
  margin-top:4px;
  padding-top:11px;
  border-top:1px solid var(--line);
}
.o1-f{display:flex;flex-direction:column;gap:5px;}
.o1-f-k{
  font-size:.7rem;font-weight:700;letter-spacing:.4px;
  text-transform:uppercase;color:var(--ink-faint);
}
.o1-f-in{
  width:100%;
  background:var(--surface-page);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  color:var(--ink);
  padding:9px 11px;
  font:inherit;font-size:.87rem;line-height:1.45;
  resize:vertical;
  outline:none;
}
.o1-f-in:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring-soft);}
.o1-f-in::placeholder{color:var(--ink-faint);}
/* What the manager wrote for the rep to read, on the rep's own copy. */
.o1-f-read{
  padding:9px 12px;
  background:var(--surface-sunken);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
}
.o1-f-v{
  display:block;
  font-size:.87rem;line-height:1.5;color:var(--ink);
  white-space:pre-wrap;overflow-wrap:anywhere;
}
.o1-notes-foot{display:flex;align-items:center;gap:11px;flex-wrap:wrap;}
.o1-said{font-size:.78rem;color:var(--ink-faint);}

@media (max-width:880px){
  .o1-facts{grid-template-columns:1fr;}
}

@media (max-width:640px){
  .o1-add{flex-direction:column;align-items:stretch;}
  .o1-add-kind,
  .o1-in-date,
  .o1-in-days,
  .o1-in-note{width:100%;}
  .o1-row-acts{width:100%;}
  .o1-row-acts > *{flex:1;justify-content:center;}
}

/* ============================================================
   The team roster on the admin's 1 on 1s page: one row per rep, with
   the day and time their 1 on 1 is set for and the log behind a press.
   ============================================================ */
.o1t{display:grid;gap:7px;margin-top:14px;}
.o1t-head,
.o1t-row{
  display:grid;
  grid-template-columns:minmax(160px,1.4fr) minmax(130px,1fr) 118px minmax(130px,1fr) minmax(150px,1.2fr) auto;
  gap:10px;
  align-items:center;
}
.o1t-head{
  padding:0 14px 4px;
  font-size:.7rem;font-weight:700;letter-spacing:.4px;
  text-transform:uppercase;color:var(--ink-faint);
}
.o1t-row{
  padding:11px 14px;
  background:var(--surface-raised);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
}
/* Overdue and due today carry through the whole row, because a roster is
   read by scanning and a mark in one cell is a mark nobody finds. */
.o1t-row[data-state="late"]{background:var(--danger-wash);border-color:var(--danger);}
.o1t-row[data-state="due"]{background:var(--accent-wash);border-color:var(--accent);}
.o1t-who{display:flex;flex-direction:column;gap:2px;min-width:0;}
.o1t-who a{font-size:.92rem;font-weight:600;line-height:1.3;}
.o1t-last{color:var(--ink-faint);font-size:.76rem;line-height:1.35;}
.o1t-row[data-state="late"] .o1t-last,
.o1t-row[data-state="due"] .o1t-last{color:var(--ink-soft);}
.o1t-cell{min-width:0;}
.o1t-in{
  width:100%;
  background:var(--surface-page);
  border:1px solid var(--line);
  border-radius:var(--radius-sm);
  color:var(--ink);
  padding:8px 10px;
  font:inherit;font-size:.85rem;line-height:1.4;
  outline:none;
}
.o1t-in:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring-soft);}
.o1t-state{display:flex;flex-direction:column;gap:2px;min-width:0;}
.o1t-pill{font-size:.85rem;font-weight:600;line-height:1.35;color:var(--ink);}
.o1t-said{font-size:.74rem;color:var(--ink-faint);}
.o1t-acts{display:flex;align-items:center;gap:8px;justify-content:flex-end;}
/* grid outranks the hidden attribute, so a closed log would still take
   its line on the row. */
.o1t-log[hidden]{display:none;}
.o1t-log{
  grid-column:1 / -1;
  margin-top:4px;
  padding-top:11px;
  border-top:1px solid var(--line);
}
.o1t-log .o1{margin-top:0;}

@media (max-width:1100px){
  .o1t-head{display:none;}
  .o1t-row{grid-template-columns:1fr 1fr;}
  .o1t-who{grid-column:1 / -1;}
  .o1t-state{grid-column:1 / -1;}
  .o1t-acts{grid-column:1 / -1;justify-content:stretch;}
  .o1t-acts > *{flex:1;justify-content:center;}
}

/* ---- Today summary card ----
   A glanceable block at the top of the admin 1-on-1 page listing every
   rep who has a 1-on-1 scheduled for today. */
.o1t-today{
  margin-top:14px;
  background:var(--accent-wash);
  border:1px solid var(--accent);
  border-radius:var(--radius);
  padding:14px 16px;
}
.o1t-today-head{
  font-size:.95rem;
  font-weight:700;
  line-height:1.3;
  margin-bottom:10px;
  color:var(--ink);
}
.o1t-today-head i{color:var(--accent);margin-right:6px;}
.o1t-today-list{display:grid;gap:6px;}
.o1t-today-row{
  display:flex;
  align-items:center;
  gap:12px;
  padding:6px 0;
}
.o1t-today-row + .o1t-today-row{border-top:1px solid var(--line);}
.o1t-today-who{font-size:.9rem;font-weight:600;flex:1;min-width:0;}
.o1t-today-time{font-size:.85rem;color:var(--ink-soft);white-space:nowrap;}
.o1t-today-row .o1t-pill{font-size:.8rem;}

/* The standards this page is read against, kept below the day's list
   so what needs doing today is still the first thing on the screen. */
.o1t-std{margin-top:14px;}
