/* ═══════════════════════════════════════════════════════════════════════════
   meeting-calendar.css — presentation for meeting-calendar.js.

   Loaded by every page that mounts #lbcal-root, so the calendar looks and
   behaves identically wherever it is embedded: the Management portal
   (academics.html) and the LinguaBridge Mail workspace. Keep it here rather
   than inline in a page — two copies drift.
   ═══════════════════════════════════════════════════════════════════════════ */
/* ── Meeting calendar (meeting-calendar.js) ───────────────────────────────
   --lbcal-hour must stay in step with HOUR_PX in meeting-calendar.js: the
   hour rows are laid out here, the event blocks are positioned there. */
:root{--lbcal-hour:48px;--lbcal-line:#edf2f9;}
.lbcal-state{padding:56px 20px;text-align:center;color:#99abb4;font-size:.85rem;display:flex;flex-direction:column;align-items:center;gap:14px}
.lbcal-state-err{color:#b91c1c}
.lbcal-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between;margin-bottom:16px}
.lbcal-nav{display:flex;align-items:center;gap:6px}
.lbcal-navbtn,.lbcal-refresh{height:32px;width:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #edf2f9;border-radius:9px;background:#fff;color:#67757c;transition:all .15s}
.lbcal-navbtn:hover,.lbcal-refresh:hover{border-color:rgba(169,52,68,.4);color:#a93444}
.lbcal-todaybtn{height:32px;padding:0 14px;border:1px solid #edf2f9;border-radius:9px;background:#fff;color:#67757c;font-size:.75rem;font-weight:800;transition:all .15s}
.lbcal-todaybtn:hover{border-color:rgba(169,52,68,.4);color:#a93444}
.lbcal-range{font-size:1.15rem;font-weight:700;color:#2a3547;margin-left:10px;white-space:nowrap}
.lbcal-toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.lbcal-total{font-size:.7rem;font-weight:700;color:#99abb4;white-space:nowrap}
.lbcal-views{display:inline-flex;border:1px solid #edf2f9;border-radius:9px;overflow:hidden;background:#fff}
.lbcal-viewbtn{padding:0 14px;height:32px;font-size:.75rem;font-weight:800;color:#67757c;background:#fff;transition:all .15s}
.lbcal-viewbtn+.lbcal-viewbtn{border-left:1px solid #edf2f9}
.lbcal-viewbtn:hover{background:#f9fbfd;color:#a93444}
.lbcal-viewbtn.active{background:#a93444;color:#fff}

.lbcal-layout{display:flex;align-items:flex-start;gap:16px}
.lbcal-main{flex:1;min-width:0}

/* Host rail — the Outlook-style calendar checklist */
.lbcal-rail{width:212px;flex-shrink:0;background:#fff;border:1px solid #edf2f9;border-radius:10px;padding:12px;box-shadow:0 3px 9px 0 rgba(169,184,200,.15);position:sticky;top:96px;max-height:calc(100vh - 120px);display:flex;flex-direction:column}
.lbcal-rail-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:8px}
.lbcal-rail-title{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#b0bec5}
.lbcal-rail-count{font-size:.65rem;font-weight:800;color:#99abb4}
.lbcal-host-search{width:100%;border:1px solid #edf2f9;border-radius:7px;padding:6px 9px;font-size:.75rem;color:#2a3547;outline:none}
.lbcal-host-search:focus{border-color:rgba(169,52,68,.4)}
.lbcal-rail-actions{display:flex;align-items:center;gap:6px;margin:8px 0 4px;font-size:.68rem;color:#b0bec5}
.lbcal-rail-actions button{font-weight:800;color:#a93444}
.lbcal-rail-actions button:hover{text-decoration:underline}
.lbcal-host-list{overflow-y:auto;flex:1;margin:0 -4px;padding:0 4px}
.lbcal-host{display:flex;align-items:center;gap:4px;border-radius:7px;padding:1px 2px}
.lbcal-host:hover{background:#f9fbfd}
.lbcal-host-main{display:flex;align-items:center;gap:7px;flex:1;min-width:0;padding:5px 3px;cursor:pointer}
.lbcal-host-main input{cursor:pointer;flex-shrink:0}
.lbcal-host.off .lbcal-host-name{color:#b0bec5}
.lbcal-host.off .lbcal-dot{opacity:.35}
.lbcal-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}
.lbcal-host-name{font-size:.76rem;font-weight:700;color:#2a3547;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.lbcal-host-count{font-size:.65rem;font-weight:800;color:#b0bec5;flex-shrink:0}
.lbcal-only{opacity:0;font-size:.6rem;font-weight:800;color:#a93444;text-transform:uppercase;letter-spacing:.05em;padding:2px 4px;flex-shrink:0;transition:opacity .12s}
.lbcal-host:hover .lbcal-only{opacity:1}
.lbcal-legend{border-top:1px solid #edf2f9;margin-top:10px;padding-top:9px;display:flex;flex-direction:column;gap:4px}
.lbcal-legend-title{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#b0bec5;margin-bottom:2px}
.lbcal-legend span{display:flex;align-items:center;gap:6px;font-size:.68rem;font-weight:600;color:#8898aa}
.lbcal-src{width:12px;height:3px;border-radius:2px;background:#99abb4;flex-shrink:0}
.lbcal-legend .lbcal-src-lesson{background:#5f76e8}
.lbcal-legend .lbcal-src-meeting{background:#0d9488}
.lbcal-legend .lbcal-src-conference{background:#7e22ce}
.lbcal-empty-note{font-size:.73rem;color:#b0bec5;padding:10px 2px;text-align:center}

/* Month */
.lbcal-month{background:#fff;border:1px solid #edf2f9;border-radius:10px;overflow:hidden;box-shadow:0 3px 9px 0 rgba(169,184,200,.15)}
.lbcal-dow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:#f9fbfd;border-bottom:1px solid var(--lbcal-line)}
.lbcal-dow span{padding:8px 6px;text-align:center;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#99abb4}
.lbcal-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(104px,auto)}
.lbcal-cell{border-right:1px solid var(--lbcal-line);border-bottom:1px solid var(--lbcal-line);padding:4px;min-width:0;display:flex;flex-direction:column;gap:2px}
.lbcal-cell:nth-child(7n){border-right:none}
.lbcal-out{background:#fcfdfe}
.lbcal-out .lbcal-daynum{color:#c9d3da}
.lbcal-daynum{align-self:flex-start;font-size:.72rem;font-weight:800;color:#67757c;height:22px;min-width:22px;padding:0 5px;border-radius:50px;transition:all .12s}
.lbcal-daynum:hover{background:#f4f6f9;color:#a93444}
.lbcal-cell.lbcal-today>.lbcal-daynum{background:#a93444;color:#fff}
.lbcal-cell-events{display:flex;flex-direction:column;gap:2px;min-width:0}
.lbcal-more{font-size:.63rem;font-weight:800;color:#8898aa;text-align:left;padding:1px 5px}
.lbcal-more:hover{color:#a93444}

/* Event chips (month + all-day strip) */
.lbcal-chip{display:flex;align-items:baseline;gap:5px;width:100%;min-width:0;text-align:left;border-left:3px solid;border-radius:4px;padding:2px 5px;font-size:.68rem;line-height:1.35;transition:filter .12s}
.lbcal-chip:hover{filter:brightness(.95)}
.lbcal-chip-time{font-weight:800;flex-shrink:0;font-variant-numeric:tabular-nums}
.lbcal-chip-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.lbcal-chip-host{margin-left:auto;font-weight:700;opacity:.7;white-space:nowrap;flex-shrink:0}
.lbcal-cancelled .lbcal-chip-title,.lbcal-cancelled .lbcal-block-title{text-decoration:line-through}
.lbcal-cancelled{opacity:.6}

/* Time grid (week + day) */
.lbcal-tg{background:#fff;border:1px solid #edf2f9;border-radius:10px;overflow:hidden;box-shadow:0 3px 9px 0 rgba(169,184,200,.15)}
.lbcal-tg-head{display:grid;background:#f9fbfd;border-bottom:1px solid var(--lbcal-line)}
.lbcal-tg-corner{border-right:1px solid var(--lbcal-line)}
.lbcal-colhead{padding:7px 4px;text-align:center;display:flex;flex-direction:column;gap:1px;border-right:1px solid var(--lbcal-line);transition:background .12s}
.lbcal-colhead:last-child{border-right:none}
.lbcal-colhead:hover{background:#f2f5f9}
.lbcal-colhead-dow{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#99abb4}
.lbcal-colhead-num{font-size:.95rem;font-weight:800;color:#2a3547}
.lbcal-colhead.lbcal-today .lbcal-colhead-num{background:#a93444;color:#fff;border-radius:50px;align-self:center;min-width:26px;padding:0 6px}
.lbcal-colhead.lbcal-today .lbcal-colhead-dow{color:#a93444}
.lbcal-allday{display:grid;border-bottom:1px solid var(--lbcal-line);background:#fcfdfe}
.lbcal-allday-label{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#b0bec5;padding:6px 6px;text-align:right;border-right:1px solid var(--lbcal-line)}
.lbcal-allday-cell{padding:4px;display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--lbcal-line);min-width:0}
.lbcal-allday-cell:last-child{border-right:none}
.lbcal-tg-scroll{max-height:min(66vh,720px);overflow-y:auto;position:relative}
.lbcal-tg-body{display:grid;position:relative}
.lbcal-hours{border-right:1px solid var(--lbcal-line)}
.lbcal-hour{position:relative}
.lbcal-hour span{position:absolute;top:-7px;right:7px;font-size:.62rem;font-weight:700;color:#b0bec5;background:#fff;padding:0 2px}
.lbcal-hour:first-child span{display:none}
.lbcal-col{position:relative;border-right:1px solid var(--lbcal-line);min-width:0}
.lbcal-col:last-child{border-right:none}
.lbcal-lines{position:absolute;inset:0}
.lbcal-line{border-bottom:1px solid var(--lbcal-line)}
.lbcal-daycol{position:absolute;inset:0}
.lbcal-block{position:absolute;overflow:hidden;text-align:left;border-left:3px solid;border-radius:4px;padding:2px 5px;display:flex;flex-direction:column;line-height:1.3;transition:filter .12s}
.lbcal-block:hover{filter:brightness(.95);z-index:5}
.lbcal-block-time{font-size:.6rem;font-weight:800;font-variant-numeric:tabular-nums;opacity:.85}
.lbcal-block-title{font-size:.7rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbcal-block-host{font-size:.62rem;font-weight:600;opacity:.75;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbcal-now{position:absolute;left:0;right:0;height:2px;background:#a93444;z-index:6;pointer-events:none}
.lbcal-now::before{content:'';position:absolute;left:-4px;top:-3px;width:8px;height:8px;border-radius:50%;background:#a93444}

/* Day view agenda */
.lbcal-daywrap{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:16px;align-items:start}
.lbcal-agenda{background:#fff;border:1px solid #edf2f9;border-radius:10px;padding:12px;box-shadow:0 3px 9px 0 rgba(169,184,200,.15)}
.lbcal-agenda-head{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:#b0bec5;padding:2px 4px 8px}
.lbcal-agenda-row{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:8px 6px;border-radius:8px;border-top:1px solid #f4f6f9;transition:background .12s}
.lbcal-agenda-row:hover{background:#f9fbfd}
.lbcal-agenda-time{font-size:.65rem;font-weight:800;color:#8898aa;width:88px;flex-shrink:0;font-variant-numeric:tabular-nums}
.lbcal-agenda-main{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}
.lbcal-agenda-title{font-size:.78rem;font-weight:700;color:#2a3547;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbcal-agenda-sub{font-size:.67rem;color:#99abb4;display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbcal-agenda-chev{font-size:16px;color:#c9d3da;flex-shrink:0}

/* Detail modal */
.lbcal-modal-backdrop{position:fixed;inset:0;z-index:60;background:rgba(15,23,42,.45);display:flex;align-items:center;justify-content:center;padding:20px}
.lbcal-modal{background:#fff;border-radius:12px;width:100%;max-width:452px;overflow:hidden;box-shadow:0 20px 50px rgba(15,23,42,.28);max-height:88vh;display:flex;flex-direction:column}
.lbcal-modal-head{display:flex;align-items:center;gap:11px;padding:15px 17px}
.lbcal-modal-head>.material-symbols-outlined{font-size:24px;flex-shrink:0}
.lbcal-modal-head>div{min-width:0;flex:1}
.lbcal-modal-title{font-size:.98rem;font-weight:800;line-height:1.3}
.lbcal-modal-sub{font-size:.68rem;font-weight:700;opacity:.75;text-transform:capitalize;margin-top:1px}
.lbcal-modal-x{flex-shrink:0;opacity:.6;display:inline-flex}
.lbcal-modal-x:hover{opacity:1}
.lbcal-modal-body{padding:15px 17px 17px;overflow-y:auto;display:flex;flex-direction:column;gap:11px}
.lbcal-mrow span:first-child{font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:#b0bec5;display:block;margin-bottom:2px}
.lbcal-mrow p{font-size:.8rem;color:#2a3547;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap;white-space:pre-wrap}
.lbcal-join,.lbcal-copy{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:38px;border-radius:9px;font-size:.78rem;font-weight:800;text-decoration:none;transition:all .15s}
.lbcal-join{background:#a93444;color:#fff}
.lbcal-join:hover{background:#7e2334}
.lbcal-copy{border:1px solid #edf2f9;color:#67757c}
.lbcal-copy:hover{border-color:rgba(169,52,68,.4);color:#a93444}
.lbcal-join .material-symbols-outlined,.lbcal-copy .material-symbols-outlined{font-size:17px}

@media (max-width:1100px){
  .lbcal-daywrap{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:820px){
  .lbcal-layout{flex-direction:column}
  .lbcal-rail{width:100%;position:static;max-height:none}
  .lbcal-host-list{max-height:196px}
  .lbcal-month-grid{grid-auto-rows:minmax(78px,auto)}
  .lbcal-chip-host{display:none}
  .lbcal-range{margin-left:4px;font-size:1rem}
}
