/* ============================================================
   Calendar (#view-calendar / #tab-calendar, cal-*) — the portal calendar.
   Google Calendar's anatomy on the Time Tracking kit (static/tt_calendar_kit.js):
   a left rail (Create · mini month · My calendars · Company calendars) and the
   kit's toolbar + FullCalendar grid. Chrome follows the Recruitment tokens
   (--rfg1/--rstroke/--rbrand); the accent is the RA red on the Create button
   and the today marker only ("red is glyph, not fill").
   ============================================================ */
.cal-root,.cal-modal,.cal-ovl,.cal-pop,.cal-menu,.cal-toast{--rstroke:#E4E6E7;--rfg1:#070916;--rfg2:#4F5158;--rfg3:#94969E;--rbrand:#FD0024;--rbrand-acc:#EB1414;
  --rlight-red:#FFF0F0;--rsh-sm:0 1px 3px rgba(7,9,22,.06);--rsh-lg:0 24px 48px -12px rgba(15,23,42,.28),0 0 0 1px rgba(15,23,42,.06);
  --ttk-accent:#FD0024;--ttk-bg:#fff;--ttk-text:#1f2937;--ttk-muted:#6b7280;--ttk-border:#e5e7eb;--ttk-hover:#f3f4f6;
  font-family:'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif}
.cal-modal *,.cal-pop *,.cal-menu *{box-sizing:border-box}
.cal-modal svg,.cal-pop svg,.cal-menu svg{display:inline-block;vertical-align:middle}
.cal-modal button,.cal-pop button,.cal-menu button{font-family:inherit}
.cal-root{--rstroke:#E4E6E7;--rfg1:#070916;--rfg2:#4F5158;--rfg3:#94969E;--rbrand:#FD0024;--rbrand-acc:#EB1414;
  --rlight-red:#FFF0F0;--rsh-sm:0 1px 3px rgba(7,9,22,.06);--rsh-lg:0 24px 48px -12px rgba(15,23,42,.28),0 0 0 1px rgba(15,23,42,.06);
  --ttk-accent:#FD0024;--ttk-bg:#fff;--ttk-text:#1f2937;--ttk-muted:#6b7280;--ttk-border:#e5e7eb;--ttk-hover:#f3f4f6;
  font-family:'Lato',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;font-size:14px;color:var(--rfg2);
  display:flex;gap:0;padding:14px 24px 30px;box-sizing:border-box}   /* no min-height: the grid is sized to end with the viewport (fitGrid), a min-height only made the page scroll under it */
.cal-root *,.cal-root *::before,.cal-root *::after{box-sizing:border-box}
.cal-root svg{display:inline-block;vertical-align:middle}
.cal-root button{font-family:inherit}

/* ---- rail ---- */
.cal-rail{width:248px;flex:none;padding-right:18px;display:flex;flex-direction:column;gap:14px;transition:width .2s,padding .2s;position:sticky;top:12px;max-height:calc(100vh - 110px);align-self:flex-start;overflow:hidden}
.cal-root.rail-closed .cal-rail{width:0;padding:0;overflow:hidden}
/* fold the rail away: a small ‹ in the gutter at the rail's top-right (quiet until the rail is hovered), › left of the toolbar to bring it back (2026-09-28) */
.cal-rail-min{position:absolute;right:0;top:9px;width:22px;height:22px;border-radius:50%;border:1px solid var(--rstroke);background:#fff;color:var(--rfg3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;z-index:2;box-shadow:0 1px 2px rgba(7,9,22,.08);opacity:.55;transition:opacity .15s,color .15s,transform .15s}
.cal-rail:hover .cal-rail-min,.cal-rail-min:focus-visible{opacity:1}
.cal-rail-min:hover{color:var(--rfg1);transform:scale(1.08)}
.cal-rail-min svg{width:12px;height:12px}
.cal-root.rail-closed .cal-rail-min{display:none}
/* A short screen in Team view (2026-09-28): rather than squeezing the people list into a few rows with its own
   scrollbar, the rail flows down the page (fitGrid() sets .rail-flow when fewer than ~5 rows would fit) and the
   grid side sticks at the top, so the hours stay in view while the page scrolls through the team. */
.cal-root.rail-flow .cal-rail{position:relative;top:auto;max-height:none!important;overflow:visible;align-self:stretch}   /* relative, not static: the ‹ button still anchors to the rail */
.cal-root.rail-flow .cal-people{flex:none;overflow:visible}
.cal-root.rail-flow .cal-people-l{flex:none;overflow:visible;max-height:none}
.cal-root.rail-flow .cal-main{position:sticky;top:110px;align-self:flex-start}   /* fitGrid() sets the exact top inline */
/* folded: nothing of the rail shows, whatever mode it was in */
.cal-root.rail-closed .cal-rail{overflow:hidden;position:sticky}
.cal-root.rail-closed .cal-rail>*{visibility:hidden}
.cal-railbtn .cal-railbtn-c{display:none;width:14px;height:14px}
@media (min-width:1024px){.cal-railbtn .cal-railbtn-m{display:none}.cal-railbtn .cal-railbtn-c{display:block}}   /* desktop: a › chevron; small screens keep the list glyph for the overlay rail */
.cal-create{display:inline-flex;align-items:center;gap:9px;padding:10px 16px 10px 12px;border-radius:12px;border:1px solid var(--rstroke);background:#fff;
  color:var(--rfg1);font-weight:800;font-size:14px;cursor:pointer;box-shadow:var(--rsh-sm);transition:box-shadow .15s,transform .15s;align-self:flex-start}
.cal-create:hover{box-shadow:0 6px 16px -6px rgba(7,9,22,.25);transform:translateY(-1px)}
.cal-create .cal-plus{width:22px;height:22px;border-radius:7px;background:var(--rbrand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:16px;font-weight:900;line-height:1}
.cal-mini{border-radius:12px;padding:6px 2px 2px}
.cal-mini-h{display:flex;align-items:center;justify-content:space-between;padding:0 6px 6px}
.cal-mini-h b{font-size:13px;color:var(--rfg1);font-weight:800}
.cal-mini-h button{border:0;background:none;color:var(--rfg3);cursor:pointer;width:24px;height:24px;border-radius:6px;font-size:14px}
.cal-mini-h button:hover{background:var(--ttk-hover);color:var(--rfg1)}
.cal-mini table{width:100%;border-collapse:collapse;table-layout:fixed}
.cal-mini th{font-size:10px;font-weight:700;color:var(--rfg3);padding:2px 0 4px;text-transform:uppercase;letter-spacing:.04em}
.cal-mini td{text-align:center;padding:1px 0}
.cal-mini td button{width:26px;height:26px;border-radius:50%;border:0;background:none;font-size:11.5px;color:var(--rfg2);cursor:pointer;font-weight:600}
.cal-mini td button:hover{background:var(--ttk-hover)}
.cal-mini td.out button{color:#c3c5cc;font-weight:400}
/* today in the mini month: a filled brand-red disc, white number (2026-09-25: the tinted digit alone was too easy to miss) */
.cal-mini td.today button,.cal-mini td.today.in button{background:var(--rbrand);color:#fff;font-weight:900;box-shadow:0 2px 6px -2px rgba(253,0,36,.55)}
.cal-mini td.today button:hover{background:var(--rbrand-acc)}
.cal-mini td.in button{background:#ECEEF1}
.cal-mini td.sel button{background:var(--rfg1);color:#fff}
.cal-mini td.today.sel button{background:var(--rbrand);box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--rbrand)}
.cal-search{position:relative}
.cal-search input{width:100%;padding:8px 10px 8px 32px;border:1px solid var(--rstroke);border-radius:10px;font:inherit;font-size:13px;color:var(--rfg1);background:#fff}
.cal-search input:focus{outline:none;border-color:var(--rfg3)}
.cal-search .cal-sico{position:absolute;left:10px;top:9px;color:var(--rfg3)}
.cal-lists{display:flex;flex-direction:column;gap:10px;overflow:auto;flex:1;min-height:0}
.cal-group h4{font-size:11px;font-weight:800;color:var(--rfg3);text-transform:uppercase;letter-spacing:.06em;margin:0 0 4px;padding:0 6px;display:flex;align-items:center;justify-content:space-between}
.cal-group h4 button{border:0;background:none;color:var(--rfg3);cursor:pointer;font-size:14px;border-radius:6px;width:22px;height:22px}
.cal-group h4 button:hover{background:var(--ttk-hover);color:var(--rfg1)}
.cal-acc{font-size:11px;color:var(--rfg3);padding:6px 6px 2px;display:flex;align-items:center;gap:6px}
.cal-acc .cal-dotst{width:7px;height:7px;border-radius:50%;background:#10A37F}
.cal-acc .cal-dotst.bad{background:#D97706}
.cal-row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:8px;cursor:pointer;color:var(--rfg1);font-size:13px;min-height:30px}
.cal-row:hover{background:var(--ttk-hover)}
.cal-row .cal-chk{width:16px;height:16px;border-radius:5px;border:2px solid var(--c,#999);flex:none;display:inline-flex;align-items:center;justify-content:center;background:#fff;transition:background .12s}
.cal-row.on .cal-chk{background:var(--c,#999)}
.cal-row .cal-chk svg{width:11px;height:11px;stroke:#fff;stroke-width:3.2;fill:none;opacity:0}
.cal-row.on .cal-chk svg{opacity:1}
.cal-row .cal-nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-row .cal-dflt{font-size:10px;color:var(--rfg3);font-weight:700;letter-spacing:.03em}
.cal-row .cal-more{border:0;background:none;color:var(--rfg3);width:22px;height:22px;border-radius:6px;cursor:pointer;opacity:0;flex:none}
.cal-row:hover .cal-more,.cal-row .cal-more:focus{opacity:1}
.cal-row .cal-more:hover{background:#e5e7eb;color:var(--rfg1)}
.cal-rail-foot{border-top:1px solid var(--rstroke);padding-top:10px;display:flex;flex-direction:column;gap:6px}
.cal-connect-hint{font-size:12px;color:var(--rfg3);line-height:1.4}
.cal-link{border:0;background:none;color:var(--rfg1);font-weight:700;font-size:13px;cursor:pointer;padding:6px 8px;border-radius:8px;display:inline-flex;align-items:center;gap:8px;text-align:left}
.cal-link:hover{background:var(--ttk-hover)}
.cal-link svg{width:15px;height:15px;color:var(--rfg3)}

/* ---- Mine | Team switch + team panel (admins, HR; same anatomy as HR › Time Tracking) ---- */
/* same tray as the Recruitment topbar tabs (.rec-tabs / .rec-tab) */
/* My calendar / Team: a segmented control. The track is a quiet frosted well; one white thumb (the ::before)
   slides under the active tab (--tx / --tw, measured when the tabs render); the tab's icon turns brand red when it is on. */
.cal-mode{position:relative;display:grid;grid-template-columns:auto auto;isolation:isolate;background:rgba(7,9,22,.05);border:1px solid rgba(7,9,22,.06);padding:4px;border-radius:14px}
.cal-mode::before{content:"";position:absolute;z-index:0;top:4px;bottom:4px;left:var(--tx,4px);width:var(--tw,calc(50% - 4px));border-radius:10px;background:#fff;
  box-shadow:0 1px 1px rgba(7,9,22,.05),0 3px 10px -2px rgba(7,9,22,.14),inset 0 0 0 1px rgba(7,9,22,.04);transition:left .22s cubic-bezier(.2,.8,.2,1),width .22s cubic-bezier(.2,.8,.2,1)}
.cal-mode button{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;height:36px;padding:0 12px;white-space:nowrap;font:inherit;font-weight:700;font-size:13.5px;
  color:var(--rfg3);background:none;border:none;border-radius:10px;cursor:pointer;transition:color .18s,transform .12s;-webkit-tap-highlight-color:transparent}
.cal-mode button svg{width:15px;height:15px;flex:none;opacity:.75;transition:color .18s,opacity .18s}
.cal-mode button:hover{color:var(--rfg1)}
.cal-mode button:active{transform:scale(.97)}
.cal-mode button.on{color:var(--rfg1)}
.cal-mode button.on svg{color:var(--rbrand);opacity:1}
.cal-mode button:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(253,0,36,.18)}
/* frosted like the top bar (#appHeader): mostly white, a little see-through, blurred behind */
.cal-people{display:flex;flex-direction:column;flex:1;min-height:0;border:1px solid var(--rstroke);border-radius:16px;background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 1px 2px rgba(7,9,22,.04);overflow:hidden}
.cal-people-h{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 8px}
.cal-people-h h4{margin:0;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--rfg2)}
.cal-people-n{font-size:11px;font-weight:700;color:var(--rfg3);background:rgba(0,0,0,.05);border-radius:999px;padding:2px 8px}
.cal-people-s{position:relative;padding:0 10px 8px}
.cal-people-s .cal-sico{position:absolute;left:20px;top:8px;color:var(--rfg3)}
.cal-people-s input{width:100%;border:1px solid var(--rstroke);border-radius:10px;background:rgba(255,255,255,.55);padding:7px 10px 7px 30px;font:inherit;font-size:13px;color:var(--rfg1);outline:none}
.cal-people-s input:focus{border-color:var(--rbrand);background:#fff;box-shadow:0 0 0 3px rgba(253,0,36,.12)}
.cal-people-g{padding:0 10px 8px;display:flex;align-items:center;gap:6px}
.cal-gbtn.cal-gsel{flex:none}
.cal-gbtn.cal-gsel svg{width:12px;height:12px}
.cal-gbtn{display:inline-flex;align-items:center;gap:6px;max-width:100%;border:1px solid var(--rstroke);border-radius:999px;background:#fff;padding:4px 9px 4px 8px;font:inherit;font-size:12px;font-weight:700;color:var(--rfg2);cursor:pointer;transition:border-color .15s,color .15s}
.cal-gbtn svg{width:14px;height:14px;flex:none}
.cal-gbtn span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-gbtn .cal-gcar{font-size:10px;opacity:.7}
.cal-gbtn:hover{border-color:var(--rfg3);color:var(--rfg1)}
.cal-gbtn.on{background:#FFF1F3;border-color:#F7C6CF;color:var(--rbrand)}
.cal-menu button.cal-mi.on{background:var(--ttk-hover);font-weight:700}
.cal-menu button.cal-mi .cal-mi-t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-menu button.cal-mi small{color:var(--rfg3);font-weight:700;background:#F3F4F6;border-radius:999px;padding:0 7px;font-size:11px}
.cal-people-l{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:4px 6px 8px;border-top:1px solid #F0F1F2;scrollbar-width:thin}
.cal-person{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:none;cursor:pointer;padding:7px 8px;border-radius:12px;position:relative;font:inherit}
.cal-person:hover{background:#F5F5F5}
.cal-person.is-active{background:var(--pcbg,var(--rlight-red))}
.cal-person.is-active::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:999px;background:var(--pc,var(--rbrand))}
.cal-person.is-multi{background:var(--pcbg)}
.cal-person.is-multi::before{background:var(--pc)}
.cal-person.is-multi .cal-person-n{color:var(--rfg1)}
/* Select mode: a tick box per row; ⌘ / Ctrl-click does the same without the mode */
.cal-person-ck{width:16px;height:16px;border-radius:5px;border:1.5px solid #CBD5E1;background:#fff;color:#fff;display:inline-flex;align-items:center;justify-content:center;flex:none}
.cal-person-ck svg{width:10px;height:10px}
.cal-person.is-active .cal-person-ck{background:var(--pc,var(--rbrand));border-color:var(--pc,var(--rbrand))}
.cal-pav{border-radius:50%;background:#5C6676;color:#fff;font-size:12px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex:none;overflow:hidden;box-shadow:0 0 0 2px #fff}
.cal-pav img{width:100%;height:100%;object-fit:cover}
.cal-person-b{min-width:0;flex:1}
.cal-person-n{display:block;font-size:13.5px;font-weight:700;color:var(--rfg1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.cal-person.is-active .cal-person-n{color:var(--rfg1)}   /* only the row and its bar carry the colour; the name stays black (2026-09-25) */
.cal-person-m{display:flex;align-items:center;gap:6px;margin-top:2px;min-width:0}
.cal-person-r{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--rfg2);background:#F0F1F2;border-radius:999px;padding:1px 6px;flex:none}
.cal-person-r.you{background:var(--rlight-red);color:var(--rbrand)}
.cal-person-c{width:7px;height:7px;border-radius:50%;background:#D1D5DB;flex:none;margin-left:auto}
.cal-person-c.ok{background:#10A37F}
/* The "viewing" band: plain and transparent, no box around it (2026-09-25) */
.cal-viewing{display:flex;align-items:center;gap:10px;padding:6px 4px;margin:2px 0 6px;font-size:13px;color:var(--rfg2);background:transparent;border:0;opacity:.85;transition:opacity .15s}   /* quiet but readable; full on hover (the half-fade was too dim, 2026-09-25) */
.cal-viewing:hover{opacity:1}
.cal-viewing b{color:var(--rfg1);font-size:14px}
.cal-viewing .sp{flex:1}
.cal-viewing-st{font-size:12px;color:#B45309}
.cal-viewing-st.ok{color:#047857}
/* several people on one grid: a chip per person in their colour, × takes them off */
.cal-viewing{flex-wrap:wrap}
.cal-vchip{display:inline-flex;align-items:center;gap:6px;border:1px solid color-mix(in srgb,var(--pc) 35%,#fff);background:var(--pcbg);border-radius:999px;padding:2px 6px 2px 3px;font-size:12px;font-weight:700;color:var(--rfg1)}
.cal-vchip button{border:0;background:none;color:var(--rfg3);cursor:pointer;font:inherit;font-size:14px;line-height:1;padding:0 2px}
.cal-vchip button:hover{color:var(--rbrand)}
/* whose block this is: their face at the right end of the title line (2026-09-25) */
.cal-ev-of{float:right;display:inline-flex;vertical-align:-4px;margin:0 1px 0 6px}
.cal-ev-of .cal-pav{font-size:7.5px;box-shadow:0 0 0 1px rgba(255,255,255,.9)}   /* no coloured ring: the block already wears the person's colour (2026-09-25) */
.cal-grid .fc-timegrid-event-short .cal-ev-of{display:none}

/* ---- main ---- */
.cal-main{flex:1;min-width:0;display:flex;flex-direction:column}
.cal-topline{display:flex;align-items:center;gap:8px}
/* The legend row: the kit's chips and total, then Create, then Days / Hours, one flex row. The two
   wrappers are display:contents so the kit can rewrite the legend freely and the order still holds. */
.cal-legend-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 6px;min-height:28px}
.cal-legend,.cal-legend .ttk-legend{display:contents}
.cal-legend-row .ttk-legend .ttk-unit{order:2;margin-left:auto}
.cal-legend-row .cal-create{order:3;margin-left:10px;height:36px;padding:0 16px 0 10px;gap:8px;border-radius:10px;font-size:14px}   /* at the far right of the legend row, rail-sized (2026-09-25) */
.cal-legend-row .cal-create[hidden]{display:none}
.cal-legend-row .cal-create .cal-plus{width:22px;height:22px;border-radius:7px;font-size:16px}
.cal-topline .ttk-bar{flex:1}
/* the colour switch, left of the snap: a quiet pill, the palette icon tinted when project colours are on */
.cal-colors{gap:6px}
.cal-colors svg{flex:none}
.cal-colors.is-on svg{color:var(--rbrand)}
.cal-railbtn{border:1px solid var(--rstroke);background:#fff;width:34px;height:34px;border-radius:9px;color:var(--rfg2);cursor:pointer;flex:none;display:inline-flex;align-items:center;justify-content:center}
.cal-railbtn:hover{background:var(--ttk-hover)}
@media (min-width:1024px){.cal-railbtn{display:none}.cal-root.rail-closed .cal-railbtn{display:inline-flex;width:26px;height:26px;border-radius:50%;color:var(--rfg3);box-shadow:0 1px 2px rgba(7,9,22,.08)}.cal-root.rail-closed .cal-railbtn svg{width:14px;height:14px}}   /* on a desktop the toggle only shows once the rail is folded away (2026-09-28); on small screens it opens the overlay rail */
.cal-grid .fc-highlight{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--cal-hl-ink,#475569) 25%,transparent);border-radius:8px}
.cal-grid .ttk-selm-t{color:var(--cal-hl-ink,#6b7280)}
.cal-grid{--fc-today-bg-color:transparent;--fc-now-indicator-color:#ef4444;--fc-border-color:#eceef0;--fc-page-bg-color:#fff;font-size:13px;flex:none;min-height:0}   /* fitGrid() gives FullCalendar the height left under the chrome, so the grid ends with the viewport */
.cal-grid .fc-timegrid-now-indicator-arrow{display:none}
.cal-grid .fc-timegrid-now-indicator-line{border-color:#ef4444;border-width:1.5px 0 0}
.cal-grid .fc-timegrid-now-indicator-line::before{content:"";position:absolute;left:0;top:-5px;width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:0 0 0 2px #fff}
.cal-grid .fc-timegrid-slot-label-cushion,.cal-grid .fc-timegrid-axis-cushion{color:#6b7280;font-size:11px}
.cal-grid .fc-timegrid-slot{height:2.6em}
/* Events: a soft tint of the calendar's colour, deep-ink text of the same hue, a hairline
   ring in that hue and no left bar (dropped 2026-09-25) — a quiet card, not a stripe. */
.cal-grid .fc-timegrid-event,.cal-grid .fc-daygrid-event{border:none;border-radius:8px;overflow:hidden;cursor:pointer;transition:box-shadow .12s,filter .12s,transform .12s;
    box-shadow:0 0 0 1px #fff,inset 0 0 0 1px color-mix(in srgb,currentColor 18%,transparent)}
.cal-grid .fc-timegrid-event{margin-right:2px}
.cal-grid .fc-timegrid-event:hover,.cal-grid .fc-daygrid-block-event:hover{box-shadow:0 0 0 1px #fff,inset 0 0 0 1px color-mix(in srgb,currentColor 30%,transparent),0 4px 12px -3px rgba(15,23,42,.22);filter:saturate(1.1)}
/* the doubled class outranks the kit's injected `.ttk-cal .fc-timegrid-event .fc-event-main{padding:4px 8px!important}`;
   the card's height drives what it shows (see .cal-ev) */
.cal-grid .fc-timegrid-event .fc-event-main.fc-event-main{padding:3px 7px!important;overflow:hidden;container-type:size}
.cal-grid .fc-timegrid-event-short .fc-event-main.fc-event-main{padding:0 7px!important}
.cal-grid .fc-event-title{font-weight:600}
.cal-grid .fc-daygrid-event{padding:1px 8px;font-size:12px;position:relative}
.cal-grid .fc-daygrid-block-event .fc-event-main{font-weight:600}
.cal-grid .fc-timegrid-event .fc-event-resizer{opacity:.25}   /* the drag grips stay quiet on the lighter cards */
.cal-grid .fc-timegrid-col.fc-day-today{background:transparent}   /* today's column is plain; the header circle marks the day (2026-09-25) */
.cal-grid .fc-timegrid-slot-minor{border-top-style:dotted}
.cal-grid .fc-daygrid-dot-event .fc-event-title{color:var(--rfg1)}
.cal-grid .fc-daygrid-day-number{font-size:12px;color:var(--rfg2);padding:6px 8px}
.cal-grid .fc-day-today .fc-daygrid-day-number{color:var(--cal-accent,var(--rbrand));font-weight:900}
.cal-grid .fc-timegrid-axis{font-size:10px}
/* ---- the glass band (2026-09-25) ----
   The day headers and the all-day row sit on one translucent, frosted sheet the time grid slides
   under: calendar.js measures the band (--cal-band-h), sizes the sheet (.cal-glass, a sibling layer
   under the header text; a backdrop-filter on the cells themselves reads only the cell's own paint
   in Chromium) and pulls the body scroller up under it by that much, padded by the same, so 08:00
   still lands on the band's bottom edge while whatever scrolls past shows through the blur. */
.cal-grid{--cal-band-h:0px;--cal-band-top:0px;--cal-glass:rgba(246,247,248,.3);position:relative}
.cal-grid .cal-glass{position:absolute;left:0;right:0;top:var(--cal-band-top);height:var(--cal-band-h);z-index:2;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.38),rgba(255,255,255,0) 55%),var(--cal-glass);
  -webkit-backdrop-filter:blur(26px) saturate(1.7);backdrop-filter:blur(26px) saturate(1.7);
  border-radius:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 -1px 0 rgba(255,255,255,.5),0 0 0 1px rgba(7,9,22,.06),0 1px 0 rgba(7,9,22,.06),0 12px 28px -14px rgba(7,9,22,.28)}
.cal-grid .cal-glass:empty{display:block}
.cal-root .cal-grid .fc-scrollgrid{border:0}   /* the sheet draws its own rounded edge; the body keeps a left rule */
.cal-root .cal-grid .fc-scrollgrid-section-liquid>td{border-left:1px solid var(--fc-border-color)}
.cal-root .cal-grid .fc-col-header-cell:last-child,.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) .fc-daygrid-day:last-child{border-right:0}
.cal-root .cal-grid .fc-scrollgrid-section-header>th,
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid)>td{position:relative;z-index:3;border:0;background:transparent}
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid)>td>.fc-scroller-harness{overflow:visible}
.cal-root .cal-grid .fc-timegrid-divider{display:none}
.cal-root .cal-grid .fc-scroller-harness-liquid{overflow:visible}
.cal-root .cal-grid .fc-scroller-liquid-absolute{top:calc(-1 * var(--cal-band-h));padding-top:var(--cal-band-h);overscroll-behavior-y:contain;scrollbar-width:thin}   /* the wheel stays in the hours; a slim bar */
/* cells inside the band carry no paint of their own; the separators are faint */
.cal-root .cal-grid .fc-col-header-cell,.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) td,
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) .fc-daygrid-day{background:transparent}
.cal-root .cal-grid .fc-col-header-cell,.cal-root .cal-grid .fc-col-header .fc-timegrid-axis,
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) td{border-color:rgba(7,9,22,.055)}
.cal-root .cal-grid .fc-col-header th{border-bottom:0}
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) .fc-bg-event{display:none}
/* week number, top-left: a small glass pill */
.cal-root .cal-grid .fc-col-header .fc-timegrid-axis-frame{justify-content:center;align-items:center}
.cal-root .cal-grid .fc-col-header .fc-timegrid-axis-cushion{display:inline-flex;align-items:center;gap:1px;height:20px;padding:0 7px;border-radius:999px;font-size:10.5px;font-weight:800;color:var(--rfg2);letter-spacing:.02em;
  background:rgba(255,255,255,.55);box-shadow:inset 0 0 0 1px rgba(255,255,255,.8),0 1px 2px rgba(7,9,22,.08);font-variant-numeric:tabular-nums}
.cal-root .cal-grid .fc-col-header .fc-timegrid-axis-cushion::before{content:"W";font-weight:600;color:var(--rfg3);margin-right:2px}
/* the all-day row: a quieter label, a shallower row when it is empty */
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) .fc-timegrid-axis-cushion{font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--rfg3)}
.cal-root .cal-grid .fc-scrollgrid-section-body:not(.fc-scrollgrid-section-liquid) .fc-daygrid-body-natural .fc-daygrid-day-events{margin-bottom:.4em;min-height:22px}
/* day headers: label, number in a disc, the day's hours in a pill; today's disc is a glossy brand-red bead (red, not the person colour: 2026-09-25) */
.cal-root .cal-grid .ttk-dh{gap:3px;padding:3px 0 4px}
.cal-root .cal-grid .ttk-dh-wd{font-size:10.5px;font-weight:700;letter-spacing:.09em;color:var(--rfg3)}
.cal-root .cal-grid .ttk-dh-num{width:34px;height:34px;font-size:19px;font-weight:600;color:var(--rfg1);letter-spacing:-.02em;transition:background .12s,box-shadow .12s}
.cal-root .cal-grid a.fc-col-header-cell-cushion:hover .ttk-dh-num{background:rgba(255,255,255,.7);box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 1px 3px rgba(7,9,22,.1)}
.cal-root .cal-grid .fc-day-today .ttk-dh-num,.cal-root .cal-grid a.fc-col-header-cell-cushion:hover .fc-day-today .ttk-dh-num,
.cal-root .cal-grid .fc-day-today a.fc-col-header-cell-cushion:hover .ttk-dh-num{
  color:#fff;font-weight:800;
  background:linear-gradient(180deg,color-mix(in srgb,var(--rbrand) 72%,#fff),var(--rbrand) 62%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -1px 0 rgba(0,0,0,.1),0 6px 14px -6px color-mix(in srgb,var(--rbrand) 75%,transparent)}
.cal-root .cal-grid .fc-day-today .ttk-dh-wd{color:var(--rbrand)}
.cal-root .cal-grid .ttk-dh-tot{font-size:10.5px;font-weight:700;color:var(--rfg2);min-height:16px;line-height:16px;padding:0 7px;border-radius:999px;
  background:rgba(255,255,255,.55);box-shadow:inset 0 0 0 1px rgba(255,255,255,.8),0 1px 2px rgba(7,9,22,.07)}
.cal-root .cal-grid .ttk-dh-tot:empty{background:none;box-shadow:none}
.cal-root .cal-grid .fc-day-today .ttk-dh-tot{color:var(--rbrand)}
.cal-root .cal-grid .fc-day-sat .ttk-dh,.cal-root .cal-grid .fc-day-sun .ttk-dh{opacity:.7}
.cal-grid .fc-day-sat,.cal-grid .fc-day-sun{background:#fafafa}
.cal-grid .fc-event.cal-declined{opacity:.45;text-decoration:line-through}
.cal-grid .fc-event.cal-tentative .fc-event-main{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.5) 0 6px,transparent 6px 12px)}
.cal-grid .fc-event.cal-needs{background-color:#fff!important;box-shadow:0 0 0 1px #fff,inset 0 0 0 1.5px currentColor}
.cal-grid .fc-event.cal-ro .fc-event-main{opacity:.9}
.cal-grid .fc-event.cal-pending::after{content:"";position:absolute;right:5px;top:5px;width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7;animation:cal-blink 1.2s infinite}
@keyframes cal-blink{50%{opacity:.2}}
/* A block shows what fits its height, never a clipped half-line (2026-09-25): a grid of
   title / time / faces whose rows are never allowed to shrink, and container queries on the
   card's content box pick the tier — up to 18px the title alone; up to 36px (a 30-minute
   meeting) one line, title then time, the time dropped on a narrow column; up to 49px (45
   minutes) the title, then the time with the faces on its right; from 50px (an hour) the
   title wraps to two lines (three from 100px) and the faces sit bottom-right. */
.cal-ev{display:grid;grid-template-columns:max-content minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);column-gap:6px;row-gap:1px;align-content:start;min-width:0;height:100%}   /* the time keeps its width, the faces give way */
.cal-ev-t{grid-column:1;grid-row:2;min-width:0;font-size:11px;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:4px;font-weight:500}
.cal-ev-n{grid-column:1/-1;grid-row:1;min-width:0;font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25;letter-spacing:-.005em}
.cal-ev-n .cal-ico{width:11px;height:11px;opacity:.9;margin-left:2px}
/* Guests on a block: overlapping faces, small and quiet. The white ring is what
   separates them from each other and from the block's own colour, so they stay
   legible on every ground in the palette. */
.cal-ev-who{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:flex-end;min-width:0;max-width:100%;overflow:hidden;padding-left:1px;align-self:end;justify-self:end}   /* beside the time, or bottom-right on a tall block */
.cal-ev-who .cal-av{width:17px;height:17px;border-radius:50%;background:#e5e7eb;color:var(--rfg2);font-size:8px;font-weight:800;
  display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:none;margin-left:-5px;
  box-shadow:0 0 0 1.5px rgba(255,255,255,.92)}
.cal-ev-who .cal-av:first-child{margin-left:0}
.cal-ev-who .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-ev-who .cal-av-more{background:rgba(255,255,255,.88);font-size:8.5px;letter-spacing:-.02em}
.cal-ev-n .cal-ico-logged{color:#15803d;opacity:1}
/* Team view, a colleague who keeps their titles private: plain "Busy" blocks, lightly hatched */
.cal-grid .fc-event.cal-ev-busy .fc-event-main{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 5px,transparent 5px 10px)}
.cal-grid .fc-event.cal-ev-busy .cal-ev-n{font-weight:600;opacity:.8}
/* "My time tracking" overlay: hatched, dashed, read-only blocks beside the calendar events */
.cal-grid .fc-timegrid-event.cal-tt{background:repeating-linear-gradient(135deg,rgba(255,255,255,.96) 0 5px,color-mix(in srgb,currentColor 12%,transparent) 5px 9px)!important;
    border:1.5px dashed color-mix(in srgb,currentColor 55%,transparent);box-shadow:none;border-radius:8px}
.cal-grid .fc-timegrid-event.cal-tt:hover{box-shadow:0 4px 12px -3px rgba(15,23,42,.18)}
.cal-ev-tt .cal-ev-n small{font-size:10px;font-weight:600;opacity:.75;margin-left:4px}
/* the parallel slot of a "Log hours as …" meeting: an ordinary card in the code's colour (the grey hatch was dropped 2026-09-25) */
.cal-grid .fc-timegrid-event.cal-tt-as{border-radius:8px}
.cal-row-tt{margin-bottom:4px;border-bottom:1px dashed var(--rstroke);border-radius:8px 8px 0 0;padding-bottom:8px}
.cal-row-tt .cal-chk{border-style:dashed}
.cal-ev-n .cal-ico-planned{opacity:.38}
.cal-track .cal-pop-body{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cal-track .cal-pop-body>span{flex:1;min-width:160px;font-size:12.5px;color:var(--rfg2)}
.cal-track.logged .cal-pop-body>span{color:#15803d}
.cal-track.logged>svg{color:#15803d}
.cal-track .cal-pop-body>span small{display:block;color:var(--rfg3);font-size:11.5px}
.cal-menu .cal-ms{padding:2px 4px 6px}
.cal-menu .cal-ms input{width:100%;border:1px solid var(--rstroke);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px;outline:none;background:#F8F8F9}
.cal-menu .cal-ms input:focus{border-color:var(--rbrand);background:#fff}
.cal-menu .cal-ml{max-height:min(52vh,420px);overflow:auto;min-width:260px}
.cal-menu .cal-ml.cal-codes{width:min(380px,calc(100vw - 24px))}
.cal-menu .cal-codes button.cal-mi{gap:9px}
.cal-menu .cal-codes button.cal-mi.hl{background:var(--ttk-hover)}
.cal-menu .cal-codes button.cal-mi b{font-weight:800;font-size:13px;flex:none}
.cal-menu .cal-codes .cal-mnone{padding:8px 10px}
.cal-menu .is-hid{display:none!important}
.cal-menu .cal-mi small{color:var(--rfg3);font-weight:500}
.cal-menu .cal-mi .cal-cdot{width:10px;height:10px;border-radius:50%;flex:none}
.cal-menu .cal-mi.is-off .cal-mi-t{color:var(--rfg2)}
.cal-menu .cal-mi .cal-mi-t small{color:var(--rfg3);font-size:11px}
.cal-menu .cal-mi>svg{width:14px;height:14px;color:var(--rbrand);flex:none}
/* the height tiers (the container is .fc-event-main, inner height = card minus its padding) */
@container (min-height:50px){   /* an hour or more: the title may wrap */
  .cal-ev-n{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
  .cal-ev-who{grid-column:1/-1;grid-row:3}
}
@container (min-height:100px){ .cal-ev-n{-webkit-line-clamp:3} }
@container (max-height:36px){
  .cal-ev{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto;align-content:center;height:100%}
  .cal-ev-n{grid-column:1;grid-row:1}
  .cal-ev-t{grid-column:2;grid-row:1;overflow:visible}
  .cal-ev-t2{display:none}   /* the start alone; the card tells the rest */
  .cal-ev-who{display:none}
}
@container (max-height:36px) and (max-width:120px){ .cal-ev-t{display:none} }
@container (max-height:49px) and (max-width:120px){ .cal-ev-who{display:none} }   /* a narrow column: the title and time before faces */
@container (max-height:18px){ .cal-ev-t{display:none} .cal-ev-n{font-size:11px;line-height:1.15} }
/* Leaves & Holidays in the all-day row: a face, the name, the kind of leave in a quieter tone */
.cal-ev-leave{display:flex;align-items:center;gap:7px;height:22px;min-width:0}
.cal-ev-leave .cal-av{width:18px;height:18px;border-radius:50%;flex:none;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;font-size:8px;font-weight:800;background:#e5e7eb;color:var(--rfg2);box-shadow:0 0 0 1.5px rgba(255,255,255,.9)}
.cal-ev-leave .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-ev-leave-n{font-weight:700;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:none;max-width:70%}
.cal-ev-leave-k{font-size:11px;font-weight:500;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cal-ev-leave-k::before{content:"·";margin-right:6px}
.cal-ev-hol-i{width:18px;height:18px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.85)}
.cal-ev-hol-i svg{width:12px;height:12px}
.cal-grid .fc-daygrid-event:has(.cal-ev-leave){padding:2px 10px 2px 4px;background-color:color-mix(in srgb,currentColor 8%,#fff)!important;box-shadow:0 0 0 1px #fff,inset 0 0 0 1px color-mix(in srgb,currentColor 14%,transparent)}   /* leaves sit quietly in the all-day row: a faint wash of the layer colour, not a full tint (2026-09-25) */
.cal-grid .fc-daygrid-event:has(.cal-ev-leave):hover{background-color:color-mix(in srgb,currentColor 14%,#fff)!important}
.cal-grid .fc-daygrid-event:has(.cal-ev-leave) .fc-event-main{container-type:inline-size}
@container (max-width:220px){ .cal-ev-leave-k{display:none} .cal-ev-leave-n{max-width:none;flex:0 1 auto} }   /* a one-day bar: the name alone */
/* your own day off waiting for HR: hatched, dashed ring, a small "requested" tag (2026-09-25) */
.cal-grid .fc-daygrid-event.cal-ev-req{box-shadow:0 0 0 1px #fff,inset 0 0 0 1px color-mix(in srgb,currentColor 45%,transparent);background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.45) 0 5px,transparent 5px 10px)}
.cal-ev-leave-req{font-size:9.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:1px 6px;border-radius:999px;background:rgba(255,255,255,.75);color:inherit;flex:none;margin-left:auto}
@container (max-width:220px){ .cal-ev-leave-req{display:none} }
/* the Day off card, beside the all-day cell */
.cal-off .cal-off-ico{width:22px;height:22px;border-radius:7px;background:var(--rlight-red);color:var(--rbrand);display:inline-flex;align-items:center;justify-content:center;flex:none}
.cal-off .cal-off-ico svg{width:13px;height:13px}
.cal-off-body{margin-top:8px;display:flex;flex-direction:column;gap:7px}
.cal-off-dates{display:flex;align-items:center;gap:6px}
.cal-off-dates .cal-in{flex:1;min-width:0}
.cal-off-dates span{color:var(--rfg3)}
.cal-off-row{display:flex;gap:6px}
.cal-off-row .cal-sel{flex:1;min-width:0}
.cal-off-foot{display:flex;align-items:center;gap:8px;margin-top:2px}
.cal-off-foot .sp{flex:1}
#calOffErr:not(:empty){color:var(--rbrand);font-size:12px}
/* the selection ghost the kit draws beside the editor: one thin line in the calendar's colour, not grey dashes */
.ttk-ghost.cal-ghost{border-width:1px;border-style:solid;border-radius:8px}
.cal-empty{padding:40px;text-align:center;color:var(--rfg3)}

/* ---- popover (event card) ---- */
.cal-pop{position:fixed;z-index:2600;width:min(360px,calc(100vw - 24px));background:#fff;border-radius:14px;box-shadow:var(--rsh-lg);padding:14px 16px 12px;color:var(--rfg2);font-size:13px;animation:cal-in .12s ease-out}
@keyframes cal-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.cal-pop-h{display:flex;align-items:flex-start;gap:10px}
.cal-pop-dot{width:12px;height:12px;border-radius:4px;flex:none;margin-top:5px}
.cal-pop-title{font-size:17px;font-weight:800;color:var(--rfg1);line-height:1.25;flex:1;word-break:break-word}
.cal-pop-acts{display:flex;gap:2px;flex:none;margin:-4px -6px 0 0}
.cal-pop-acts button{border:0;background:none;width:30px;height:30px;border-radius:8px;color:var(--rfg3);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.cal-pop-acts button:hover{background:var(--ttk-hover);color:var(--rfg1)}
.cal-pop-acts button svg{width:15px;height:15px}
.cal-pop-when{margin:4px 0 0 22px;color:var(--rfg2)}
.cal-pop-when small{display:block;color:var(--rfg3);font-size:12px}
.cal-pop-row{display:flex;gap:10px;align-items:flex-start;margin-top:9px}
.cal-pop-row>svg{width:15px;height:15px;color:var(--rfg3);flex:none;margin-top:2px}
.cal-pop-row .cal-pop-body{flex:1;min-width:0;line-height:1.4}
.cal-pop-desc{white-space:pre-wrap;max-height:120px;overflow:auto;color:var(--rfg2)}
.cal-join{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:9px;background:var(--rfg1);color:#fff;font-weight:700;font-size:12.5px;text-decoration:none}
.cal-join:hover{background:#000}
.cal-join svg{width:14px;height:14px}
.cal-att{display:flex;align-items:center;gap:8px;padding:2px 0}
.cal-att .cal-av{width:22px;height:22px;border-radius:50%;background:#e5e7eb;color:var(--rfg2);font-size:10px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:none}
.cal-att .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-att .cal-atn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-att .cal-atn small{color:var(--rfg3);margin-left:4px}
.cal-rs{width:14px;height:14px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:9px;font-weight:900}
.cal-rs.accepted{background:#10A37F}.cal-rs.declined{background:#DC2626}.cal-rs.tentative{background:#D97706}.cal-rs.needsAction{background:#d1d5db}
.cal-rsvp{display:flex;gap:6px;margin-top:10px;align-items:center;flex-wrap:wrap}
.cal-rsvp span{font-size:12px;color:var(--rfg3);margin-right:2px}
.cal-rsvp button{border:1px solid var(--rstroke);background:#fff;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:700;color:var(--rfg1);cursor:pointer}
.cal-rsvp button.on{background:var(--rfg1);color:#fff;border-color:var(--rfg1)}
.cal-pop-foot{margin-top:10px;display:flex;align-items:center;gap:8px;color:var(--rfg3);font-size:12px}
.cal-pop-foot .cal-cdot{width:9px;height:9px;border-radius:50%;display:inline-block}
.cal-pop-foot a{color:var(--rfg2);text-decoration:underline;text-underline-offset:2px}

/* ---- modal (editor / settings / scope) ---- */
.cal-ovl{position:fixed;inset:0;z-index:2500;background:rgba(7,9,22,.28);animation:cal-fade .12s}
.cal-ovl.clear{background:transparent;animation:none}
@keyframes cal-fade{from{opacity:0}}
.cal-modal{position:fixed;z-index:2510;left:var(--stage-cx,50%);top:var(--stage-cy,50%);transform:translate(-50%,-50%);width:min(560px,calc(var(--stage-w,100vw) - 24px));
  max-height:min(92vh,var(--stage-h,100vh));overflow:auto;background:#fff;border-radius:16px;box-shadow:var(--rsh-lg);padding:20px 22px 18px;color:var(--rfg2);font-size:13.5px}
.cal-modal.wide{width:min(840px,calc(var(--stage-w,100vw) - 24px))}
.cal-modal h3{font-size:18px;font-weight:900;color:var(--rfg1);margin:0 0 6px;letter-spacing:-.01em}
.cal-modal h4{font-size:12px;font-weight:800;color:var(--rfg3);text-transform:uppercase;letter-spacing:.06em;margin:18px 0 8px}
.cal-modal .cal-x{position:absolute;z-index:3;right:10px;top:10px;border:0;background:none;width:34px;height:34px;border-radius:8px;color:var(--rfg3);cursor:pointer;font-size:18px;display:inline-flex;align-items:center;justify-content:center}   /* z-index: the title row (.cal-title-wrap, positioned, later in the DOM) painted over it and ate the clicks */
.cal-modal .cal-x:hover{background:var(--ttk-hover);color:var(--rfg1)}
.cal-title-in{width:100%;border:0;border-bottom:2px solid var(--rstroke);font:inherit;font-size:20px;font-weight:800;color:var(--rfg1);padding:6px 2px 8px;background:none;margin-bottom:8px}
.cal-title-in:focus{outline:none;border-color:var(--rfg1)}
.cal-frow{display:flex;gap:12px;align-items:flex-start;padding:7px 0}
.cal-frow>.cal-fi{width:20px;flex:none;color:var(--rfg3);padding-top:8px;display:flex;justify-content:center}
.cal-frow>.cal-fi svg{width:16px;height:16px}
.cal-frow>.cal-fb{flex:1;min-width:0}
.cal-in,.cal-sel,.cal-ta{width:100%;border:1px solid var(--rstroke);border-radius:9px;padding:8px 10px;font:inherit;font-size:13.5px;color:var(--rfg1);background:#fff}
.cal-in:focus,.cal-sel:focus,.cal-ta:focus{outline:none;border-color:var(--rfg3)}
.cal-ta{min-height:64px;resize:vertical}
.cal-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cal-inline label{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--rfg2);cursor:pointer}
.cal-inline input[type=checkbox]{accent-color:var(--rfg1)}
.cal-daterange{display:flex;gap:8px;align-items:center}
.cal-daterange input{border:1px solid var(--rstroke);border-radius:9px;padding:7px 9px;font:inherit;font-size:13px;color:var(--rfg1)}
.cal-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cal-chip{display:inline-flex;align-items:center;gap:6px;background:#F3F4F6;border-radius:999px;padding:3px 8px 3px 4px;font-size:12px;color:var(--rfg1)}
.cal-chip .cal-av{width:20px;height:20px;border-radius:50%;background:#d1d5db;font-size:9px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.cal-chip .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-chip button{border:0;background:none;color:var(--rfg3);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}
.cal-chip button:hover{color:var(--rbrand)}
.cal-chip.opt{opacity:.7}
.cal-sugg{position:absolute;z-index:5;background:#fff;border:1px solid var(--rstroke);border-radius:10px;box-shadow:var(--rsh-lg);max-height:220px;overflow:auto;width:100%;margin-top:4px}
.cal-sugg button{display:flex;width:100%;align-items:center;gap:8px;padding:7px 10px;border:0;background:none;text-align:left;font:inherit;font-size:13px;color:var(--rfg1);cursor:pointer}
.cal-sugg button:hover,.cal-sugg button.hl{background:var(--ttk-hover)}
.cal-sugg button small{color:var(--rfg3);margin-left:auto}
.cal-sugg .cal-av{width:22px;height:22px;border-radius:50%;background:#e5e7eb;font-size:9px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:none}
.cal-sugg .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-video{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cal-video a{color:var(--rfg1);font-weight:700;text-decoration:underline;text-underline-offset:2px;word-break:break-all;font-size:12.5px}
.cal-tog{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--rstroke);border-radius:9px;padding:6px 10px;cursor:pointer;background:#fff;font-size:13px;color:var(--rfg1);font-weight:600}
.cal-tog.on{border-color:var(--rfg1);background:var(--rfg1);color:#fff}
.cal-tog svg{width:14px;height:14px}
.cal-linkbox{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cal-linkchip{display:inline-flex;align-items:center;gap:7px;max-width:100%;border:1px solid var(--rstroke);border-radius:9px;padding:6px 9px;font-size:12.5px;color:var(--rfg1);font-weight:600;white-space:nowrap;overflow:hidden}
.cal-linkchip svg{width:14px;height:14px;flex:none;color:var(--rfg3)}
.cal-linkchip>span,.cal-linkchip .cal-linkchip-t{overflow:hidden;text-overflow:ellipsis}
.cal-linkchip small{color:var(--rfg3);font-weight:400;text-transform:capitalize;flex:none}
.cal-linkchip button{border:0;background:none;color:var(--rfg3);cursor:pointer}
.cal-modal-foot{display:flex;align-items:center;gap:8px;margin-top:16px;padding-top:12px;border-top:1px solid var(--rstroke)}
.cal-modal-foot .sp{flex:1}
.cal-btn{display:inline-flex;align-items:center;gap:7px;font-weight:700;font-size:13px;padding:9px 15px;border-radius:10px;border:1px solid var(--rstroke);cursor:pointer;background:#fff;color:var(--rfg1);transition:all .15s}
.cal-btn svg{width:15px;height:15px;flex:none}
.cal-btn:hover{background:var(--ttk-hover)}
.cal-btn.pri{background:var(--rbrand);border-color:var(--rbrand);color:#fff}
.cal-btn.pri:hover{background:var(--rbrand-acc)}
.cal-btn.dark{background:var(--rfg1);border-color:var(--rfg1);color:#fff}
.cal-btn.dark:hover{background:#000}
.cal-btn.danger{color:#B91C1C}
.cal-btn.danger:hover{background:var(--rlight-red)}
.cal-btn.sm{padding:6px 10px;font-size:12px;border-radius:8px}
.cal-btn:disabled{opacity:.5;cursor:default}
.cal-err{background:var(--rlight-red);color:#B91C1C;border-radius:9px;padding:8px 10px;font-size:12.5px;margin:6px 0}
.cal-note{font-size:12px;color:var(--rfg3);line-height:1.45}
.cal-scope{display:flex;flex-direction:column;gap:6px;margin:10px 0 4px}
.cal-scope label{display:flex;align-items:center;gap:9px;border:1px solid var(--rstroke);border-radius:10px;padding:9px 12px;cursor:pointer;font-weight:600;color:var(--rfg1)}
.cal-scope label:hover{background:var(--ttk-hover)}
.cal-scope input{accent-color:var(--rfg1)}

/* ---- the compact editor card (Google-style: rows stay one line until opened) ---- */
.cal-logo{width:20px;height:20px;flex:none}
.cal-ico-logo{width:12px;height:12px}
.cal-join .cal-logo{width:16px;height:16px;background:#fff;border-radius:4px;padding:1px}
.cal-join-url{font-size:11.5px;color:var(--rfg3);margin-top:5px;word-break:break-all}
.cal-vtile{display:flex;align-items:center;gap:10px;border:1px solid var(--rstroke);border-radius:11px;padding:8px 10px;background:#FAFAFB}
.cal-vtile .cal-logo{width:26px;height:26px}
.cal-vtile-b{flex:1;min-width:0}
.cal-vtile-b b{display:block;color:var(--rfg1);font-size:13.5px}
.cal-vtile-b small{display:block;color:var(--rfg3);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-ph.cal-ph-video{display:flex;align-items:center;gap:10px}
.cal-ph-video .cal-logo{width:18px;height:18px;margin-right:2px}
.cal-modal.cal-editor{width:min(480px,calc(var(--stage-w,100vw) - 24px));padding:16px 20px 14px 16px;border-radius:18px;box-shadow:0 18px 40px -10px rgba(15,23,42,.32),0 0 0 1px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.8);
  background:rgba(255,255,255,.8);-webkit-backdrop-filter:blur(28px) saturate(1.6);backdrop-filter:blur(28px) saturate(1.6)}   /* a glass card: the grid shows through, blurred (2026-09-25) */
.cal-modal.cal-editor h3{display:none}
.cal-modal.cal-editor .cal-x{top:8px;right:8px}
.cal-modal.cal-editor .cal-title-in{margin:8px 0 10px 8px;width:calc(100% - 40px);font-size:22px;padding:4px 2px 8px;border-bottom-width:2px}
.cal-modal.cal-editor .cal-title-in:focus{border-color:var(--rbrand)}
.cal-modal.cal-editor .cal-frow{padding:3px 0;gap:8px;align-items:center}
.cal-modal.cal-editor .cal-fi{padding-top:0;width:34px;justify-content:center;color:var(--rfg3);align-self:flex-start;margin-top:9px}
.cal-modal.cal-editor .cal-fi svg{width:17px;height:17px}
.cal-modal.cal-editor .cal-coll:not(.is-collapsed){align-items:flex-start}
.cal-modal.cal-editor .cal-exp{padding:6px 0}
.cal-modal.cal-editor .cal-in,.cal-modal.cal-editor .cal-ta,.cal-modal.cal-editor .cal-sel{background:rgba(250,250,251,.75)}
.cal-modal.cal-editor .cal-in:focus,.cal-modal.cal-editor .cal-ta:focus{background:#fff}
.cal-ph{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:10px;font:inherit;font-size:13.5px;color:var(--rfg2);cursor:pointer;line-height:1.3;min-height:36px}
.cal-ph:hover{background:var(--ttk-hover);color:var(--rfg1)}
.cal-coll.is-collapsed .cal-exp{display:none}
.cal-coll:not(.is-collapsed) .cal-ph{display:none}
.cal-ph .cal-sum-main{display:block;color:var(--rfg1);font-weight:600}
.cal-ph .cal-sum-sub{display:block;font-size:12px;color:var(--rfg3);margin-top:1px}
.cal-ph .cal-cdot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle;margin-left:4px}
.cal-video .cal-ph{padding-left:8px}
.cal-video-on{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--rfg1);font-weight:600;padding:7px 8px}
.cal-video-on svg{width:15px;height:15px;color:var(--rfg3)}
.cal-more{border:0;background:none;font:inherit;font-size:13px;font-weight:700;color:var(--rfg2);cursor:pointer;padding:8px 10px;border-radius:9px}
.cal-more:hover{background:var(--ttk-hover);color:var(--rfg1)}
.cal-modal.cal-editor .cal-modal-foot{margin-top:10px;padding-top:12px;padding-left:8px}
.cal-modal.cal-editor .cal-btn.pri{padding:9px 18px;border-radius:999px}

/* Find a time: the card grows to two columns, the form left and the free/busy day right */
.cal-fat-link{display:inline-flex;align-items:center;gap:6px;border:0;background:none;font:inherit;font-size:12.5px;font-weight:700;color:var(--rbrand);cursor:pointer;padding:6px 8px;margin:4px 0 0 -8px;border-radius:8px}
.cal-fat-link svg{width:14px;height:14px}
.cal-fat-link:hover,.cal-fat-link.is-on{background:var(--ttk-hover);color:var(--rfg1)}
.cal-modal.cal-editor.is-fat{width:min(960px,calc(var(--stage-w,100vw) - 24px));display:flex;gap:18px;align-items:stretch;padding-right:16px}
.cal-modal.cal-editor.is-fat .cal-editor-form{flex:0 0 400px;min-width:0}
.cal-fat{flex:1 1 440px;min-width:380px;display:flex;flex-direction:column;border-left:1px solid var(--rstroke);padding:2px 0 0 18px;max-height:min(84vh,var(--stage-h,100vh));}
.cal-fat-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0 8px}
.cal-fat-head b{font-size:15px;font-weight:900;color:var(--rfg1)}
.cal-fat-nav{display:inline-flex;align-items:center;gap:2px}
.cal-fat-nav button{border:0;background:none;font:inherit;font-size:13px;font-weight:700;color:var(--rfg1);cursor:pointer;padding:5px 8px;border-radius:8px;min-width:28px;line-height:1}
.cal-fat-nav button:hover{background:var(--ttk-hover)}
.cal-fat-nav .cal-fat-day{font-size:13px;padding:5px 10px}
.cal-fat-sl{display:flex;flex-wrap:wrap;gap:6px;padding-bottom:10px}
.cal-fat-sl button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--rstroke);background:#fff;border-radius:999px;padding:4px 10px 4px 8px;font:inherit;font-size:12px;color:var(--rfg2);cursor:pointer;line-height:1.2}
.cal-fat-sl button b{color:var(--rfg1);font-weight:800}
.cal-fat-sl button:hover{border-color:var(--rfg2);background:var(--ttk-hover)}
.cal-fat-sl button.part{border-style:dashed}
.cal-fat-miss{display:inline-flex;align-items:center;gap:3px;color:var(--rfg3);font-size:11px;margin-left:2px}
.cal-fat-miss .cal-av{width:16px;height:16px;font-size:7px}
.cal-fat-scroll{flex:1;min-height:200px;overflow:auto;border:1px solid var(--rstroke);border-radius:12px;background:#fff}
.cal-fat-cols{display:flex;position:relative;min-width:100%}
.cal-fat-axis{flex:0 0 44px;position:sticky;left:0;background:#fff;z-index:2}
.cal-fat-hr{position:relative;font-size:10.5px;color:var(--rfg3);text-align:right;padding-right:6px}
.cal-fat-hr span{position:relative;top:-7px}
.cal-fat-hd{height:34px;position:sticky;top:0;background:#fff;z-index:3;display:flex;align-items:center;gap:6px;padding:0 6px;border-bottom:1px solid var(--rstroke);font-size:11.5px;font-weight:700;color:var(--rfg1);white-space:nowrap;overflow:hidden}
.cal-fat-hd .cal-av{width:22px;height:22px;border-radius:50%;background:#e5e7eb;font-size:8px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;flex:none}
.cal-fat-hd .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-fat-hd span{overflow:hidden;text-overflow:ellipsis}
.cal-fat-hd i{font-style:normal;flex:none;width:14px;height:14px;border-radius:50%;background:#fef3c7;color:#b45309;font-size:9px;font-weight:900;display:inline-flex;align-items:center;justify-content:center}
.cal-fat-col{flex:1 1 0;min-width:76px;border-left:1px solid var(--rstroke)}
.cal-fat-body{position:relative;background-image:linear-gradient(to bottom,var(--rstroke) 1px,transparent 1px);background-size:100% 44px;cursor:crosshair}
.cal-fat-col.st-no_calendar .cal-fat-body,.cal-fat-col.st-external .cal-fat-body{background-color:#fafafa;background-image:repeating-linear-gradient(135deg,transparent 0 8px,rgba(15,23,42,.045) 8px 9px),linear-gradient(to bottom,var(--rstroke) 1px,transparent 1px)}
.cal-fat-busy{position:absolute;left:3px;right:3px;background:rgba(71,85,105,.22);border-radius:5px;pointer-events:none}
.cal-fat-band{position:absolute;left:44px;right:0;background:rgba(220,38,38,.14);border:1.5px solid var(--rbrand);border-radius:6px;z-index:1;cursor:grab;user-select:none}
.cal-fat-band span{position:absolute;left:6px;top:2px;font-size:10.5px;font-weight:800;color:var(--rbrand);white-space:nowrap}
.cal-fat-foot{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;color:var(--rfg3);padding:8px 2px 0}
.cal-fat-foot i{font-style:normal;display:inline-flex;width:13px;height:13px;border-radius:50%;background:#fef3c7;color:#b45309;font-size:8.5px;font-weight:900;align-items:center;justify-content:center;margin-right:4px;vertical-align:-2px}
.cal-fat-legend{margin-left:auto}
.cal-fat .cal-note,.cal-fat .cal-err{font-size:12px}

.cal-title-wrap{position:relative}
.cal-codes{max-height:260px}
.cal-codes button{gap:9px}
.cal-codes button b{color:var(--rfg1);font-weight:800;font-size:13px}
.cal-codes .cal-code-n{color:var(--rfg2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.cal-codes .cal-cdot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}
.cal-codes .ttk-btile{flex:none}

.cal-ph-hint{color:var(--rfg3);font-size:11.5px;margin-left:8px;font-weight:400}
.cal-gav{width:20px;height:20px;border-radius:50%;background:var(--rfg1);color:#fff;font-size:11px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;flex:none}
.cal-chip-g{background:#EEF0F3;padding-left:4px}
.cal-chip-g b{font-weight:700}
.cal-chip-g small{color:var(--rfg3);font-weight:700;background:#fff;border-radius:999px;padding:0 6px;font-size:11px}
.cal-gsugg button b{color:var(--rfg1);font-weight:800;font-size:13px}
.cal-gsugg button small{background:#F3F4F6;border-radius:999px;padding:1px 7px;color:var(--rfg2);font-weight:700}

/* ---- settings panel ---- */
/* Booking pages (Calendar › Booking pages): the list, the form, a page's bookings */
.cal-bk-top{display:flex;align-items:center;gap:14px;margin-bottom:12px}
.cal-bk-top .cal-note{flex:1}
.cal-bk-faces{display:inline-flex;align-items:center}
.cal-bk-faces .cal-av{width:26px;height:26px;border-radius:50%;background:#e5e7eb;color:var(--rfg2);font-size:10px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;margin-left:-8px;box-shadow:0 0 0 2px #fff}
.cal-bk-faces .cal-av:first-child{margin-left:0}
.cal-bk-faces .cal-av img{width:100%;height:100%;object-fit:cover}
.cal-bk-t{min-width:0}
.cal-bk-t b{color:var(--rfg1);font-size:14px;margin-right:6px}
.cal-bk-t small{display:block;color:var(--rfg3);font-size:12px}
.cal-bk.off{opacity:.6}
.cal-bk-url{margin-top:8px}
.cal-bk-url code{font-size:11.5px;color:var(--rfg2);background:#F5F5F5;border-radius:6px;padding:3px 7px;word-break:break-all}
.cal-bk .cal-acct-h a.cal-btn{padding:6px 8px}
.cal-bk .cal-acct-h a.cal-btn svg{width:13px;height:13px}
.cal-bk-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.cal-bk-l{display:block;font-size:12px;font-weight:800;color:var(--rfg1);margin:12px 0 4px}
.cal-bk-l small{font-weight:400;color:var(--rfg3)}
.cal-bk-l:first-child{margin-top:0}
.cal-bk-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.cal-bk-q{margin-bottom:6px}
.cal-tbl tr.off td{color:var(--rfg3);text-decoration:line-through}
.cal-tbl tr.past td{color:var(--rfg3)}
@media (max-width:820px){.cal-bk-cols,.cal-bk-grid{grid-template-columns:1fr}}
/* the settings panel keeps one height whatever the tab shows, so switching tabs never moves it (2026-09-25); the tab's content scrolls inside */
.cal-modal.cal-set{height:min(640px,calc(var(--stage-h,100vh) - 48px));display:flex;flex-direction:column;overflow:hidden}
.cal-modal.cal-set .cal-set-tabs{flex:none}
.cal-modal.cal-set #calSetBody{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding-right:2px}
.cal-set-tabs{display:flex;gap:4px;border-bottom:1px solid var(--rstroke);margin:4px 0 12px;flex-wrap:wrap}
.cal-set-tabs button{border:0;background:none;padding:8px 10px;font:inherit;font-size:13px;font-weight:700;color:var(--rfg3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.cal-set-tabs button.on{color:var(--rfg1);border-color:var(--rfg1)}
.cal-acct{border:1px solid var(--rstroke);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.cal-acct-h{display:flex;align-items:center;gap:10px}
.cal-acct-h .cal-plogo{width:30px;height:30px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:#F3F4F6;font-weight:900;font-size:12px;color:var(--rfg1)}
.cal-acct-h b{color:var(--rfg1);font-size:14px}
.cal-acct-h small{display:block;color:var(--rfg3);font-size:12px}
.cal-acct-h .sp{flex:1}
.cal-st{font-size:11px;font-weight:800;padding:3px 8px;border-radius:999px;background:#ECFDF5;color:#047857}
.cal-st.bad{background:#FFFBEB;color:#B45309}
.cal-acct-cals{margin-top:10px;display:flex;flex-direction:column;gap:2px}
.cal-acct-cals .cal-row{padding:4px 6px}
.cal-connect{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cal-connect .cal-card{border:1px solid var(--rstroke);border-radius:12px;padding:14px}
.cal-connect .cal-card b{display:block;color:var(--rfg1);font-size:14px;margin-bottom:4px}
.cal-connect .cal-card p{margin:0 0 10px;font-size:12.5px;color:var(--rfg3);line-height:1.45}
.cal-connect ol{margin:0 0 10px 16px;padding:0;font-size:12px;color:var(--rfg2);line-height:1.5}
.cal-feed{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid #f1f2f3}
.cal-feed .cal-nm{flex:1;color:var(--rfg1);font-weight:600}
.cal-feed code{font-size:11px;color:var(--rfg3);max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.cal-tbl th{text-align:left;font-size:11px;color:var(--rfg3);text-transform:uppercase;letter-spacing:.05em;padding:6px 8px;border-bottom:1px solid var(--rstroke)}
.cal-tbl td{padding:7px 8px;border-bottom:1px solid #f1f2f3;color:var(--rfg1);vertical-align:top}
.cal-tbl td .cal-btn{padding:4px 8px}
.cal-hol-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.cal-hol-form .cal-in,.cal-hol-form .cal-sel{width:auto}
.cal-log{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--rfg2);background:#F9FAFB;border-radius:9px;padding:8px 10px;max-height:220px;overflow:auto;white-space:pre-wrap}
.cal-swatches{display:flex;gap:6px;flex-wrap:wrap;padding:6px 8px}
.cal-swatches button{width:20px;height:20px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--rstroke);cursor:pointer}
.cal-swatches button.on{box-shadow:0 0 0 2px var(--rfg1)}
.cal-menu{position:fixed;z-index:2650;background:#fff;border-radius:12px;box-shadow:var(--rsh-lg);padding:6px;min-width:190px;font-size:13px}
.cal-menu button.cal-mi{display:flex;width:100%;align-items:center;gap:8px;padding:7px 10px;border:0;background:none;text-align:left;font:inherit;color:var(--rfg1);cursor:pointer;border-radius:8px}
.cal-menu button.cal-mi:hover{background:var(--ttk-hover)}
.cal-menu .cal-mh{font-size:11px;color:var(--rfg3);padding:4px 10px 2px;font-weight:700}
.cal-menu .cal-mh.cal-mh-note{display:flex;align-items:flex-start;gap:6px;font-weight:500;font-size:12px;line-height:1.35;max-width:220px;padding:6px 10px 8px}
.cal-menu .cal-mh-note .cal-cdot{width:10px;height:10px;border-radius:50%;flex:none;margin-top:3px}
.cal-toast{position:fixed;left:calc(var(--stage-l,0px) + 24px);bottom:22px;z-index:2620;background:var(--rfg1);color:#fff;padding:10px 16px;border-radius:12px;font-size:13px;box-shadow:var(--rsh-lg);display:flex;gap:12px;align-items:center;animation:cal-in .15s}
.cal-toast button{border:0;background:none;color:#fff;font-weight:800;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.cal-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;max-height:260px;overflow:auto;margin-top:6px}
.cal-slot{border:1px solid var(--rstroke);border-radius:9px;padding:7px 9px;font-size:12.5px;color:var(--rfg1);cursor:pointer;background:#fff;text-align:left;font-weight:600}
.cal-slot:hover{background:var(--ttk-hover)}
.cal-slot.on{background:var(--rfg1);color:#fff;border-color:var(--rfg1)}
.cal-slot small{display:block;color:inherit;opacity:.65;font-weight:400}
.cal-warn{background:#FFFBEB;color:#92400E;border:1px solid #FDE68A;border-radius:9px;padding:8px 10px;font-size:12.5px;margin:6px 0}

/* consultant portal host */
#tab-calendar .cal-root{padding:0;min-height:70vh}
@media (max-width:1023px){
  .cal-root{padding:10px 12px 24px}
  .cal-rail{position:absolute;z-index:20;background:#fff;height:calc(100% - 20px);box-shadow:var(--rsh-lg);padding:14px;border-radius:14px;width:264px}
  .cal-root:not(.rail-open) .cal-rail{display:none}
  .cal-connect{grid-template-columns:1fr}
}
