/* =========================================================
   SHARED MONTH / WEEK CALENDAR WORKSPACE
   A-018

   Month and Week use the complete public workspace width.
   Their view header remains fixed inside publicView.
   Only genuinely scrollable calendar content may scroll.
   ========================================================= */

.publicView.calendarWorkspace {
  display:flex;
  flex-direction:column;
  min-height:0;
  overflow:hidden;
}

.calendarWorkspace.publicViewScroll {
  overflow:hidden;
}


/* ---------------------------------------------------------
   Fixed inner view header
   --------------------------------------------------------- */

.calendarWorkspace > .monthTop,
.calendarWorkspace > .week2Top {
  flex:0 0 auto;
}


/* ---------------------------------------------------------
   Calendar working area
   --------------------------------------------------------- */

.calendarWorkspace > .mLayout,
.calendarWorkspace > .w2Layout {
  flex:1 1 auto;
  min-height:0;

  grid-template-columns:minmax(0,1fr);

  align-items:stretch;
  overflow:hidden;
}


/* =========================================================
   MONTH
   ========================================================= */

.calendarWorkspace .mLayout {
  padding-bottom:18px;

  /*
   * The complete month participates in normal document flow.
   * Scrolling belongs to the Month work area, not to the
   * calendar grid itself.
   */
  overflow-y:auto;
  overflow-x:hidden;

  overscroll-behavior:contain;

  scrollbar-width:none;
  -ms-overflow-style:none;
}

.calendarWorkspace .mLayout::-webkit-scrollbar {
  display:none;
  width:0;
  height:0;
}

.calendarWorkspace .mCalendar {
  display:flex;
  flex-direction:column;

  width:100%;

  /*
   * Sparse months still fill the workspace.
   * Busy months may grow beyond it naturally.
   */
  height:auto;
  min-height:100%;

  overflow:visible;
}

.calendarWorkspace .mWeekdays {
  flex:0 0 32px;

  position:sticky;
  top:0;
  z-index:5;

  background:var(--surface);
}

.calendarWorkspace .mGrid {
  flex:0 0 auto;
  min-height:0;

  display:flex;
  flex-direction:column;

  /*
   * No independent calendar scroller:
   * all week rows remain fully present.
   */
  overflow:visible;

  align-content:initial;
}

.calendarWorkspace .mWeekRow {
  flex:0 0 auto;

  display:grid;
  grid-template-columns:
    repeat(7, minmax(0,1fr));

  min-height:
    var(--month-week-min, 110px);

  align-items:stretch;
}

.calendarWorkspace .mDayCell {
  min-width:0;
  min-height:
    var(--month-week-min, 110px);

  overflow:hidden;

  padding:7px 8px;
}

.calendarWorkspace .mWeekdays {
  font-size:10px;
}

.calendarWorkspace .mDayNumber {
  width:28px;
  height:25px;

  font-size:11px;
}

.calendarWorkspace .mEntries {
  gap:4px;
}

.calendarWorkspace .mContest {
  padding:5px 7px;
}

.calendarWorkspace .mContestTitle {
  gap:5px;

  font-size:11px;
  line-height:1.25;
}

.calendarWorkspace .mContestTime {
  margin-top:2px;
  padding-left:15px;

  font-size:9px;
}

.calendarWorkspace .mMore {
  font-size:9px;
}


/* =========================================================
   WEEK
   ========================================================= */

.calendarWorkspace .w2Layout {
  padding-bottom:18px;

  /*
   * The complete week scrolls as one workspace.
   * The individual day list has no independent scrollbar.
   */
  overflow-y:auto;
  overflow-x:hidden;

  overscroll-behavior:contain;

  scrollbar-width:none;
  -ms-overflow-style:none;
}

.calendarWorkspace .w2Layout::-webkit-scrollbar {
  display:none;
  width:0;
  height:0;
}

.calendarWorkspace .w2Calendar {
  display:flex;
  flex-direction:column;

  width:100%;

  /*
   * Normal weeks fill the workspace.
   * Busy days may make the complete week taller.
   */
  height:auto;
  min-height:100%;

  overflow:visible;
}

.calendarWorkspace .w2AxisRow {
  flex:0 0 auto;

  position:sticky;
  top:0;
  z-index:5;

  background:var(--surface);
}

.calendarWorkspace #weekDays {
  flex:0 0 auto;
  min-height:0;

  /*
   * All seven day rows remain fully present.
   * Scrolling belongs to w2Layout.
   */
  overflow:visible;
}

.calendarWorkspace .w2AxisRow,
.calendarWorkspace .w2DayRow {
  grid-template-columns:
    112px
    minmax(0,1fr);
}

.calendarWorkspace .w2AxisTitle {
  font-size:10px;
}

.calendarWorkspace .w2Tick {
  font-size:9px;
}

.calendarWorkspace .w2Dow,
.calendarWorkspace .w2Month {
  font-size:9px;
}

.calendarWorkspace .w2DayLabel strong {
  font-size:17px;
}

.calendarWorkspace .w2DayLabel small {
  font-size:9px;
}


/* =========================================================
   SHARED CONTEST BRIEFING MODAL
   ========================================================= */

.calendarBriefModal {
  position:fixed;
  inset:0;
  z-index:3000;

  display:none;
  align-items:center;
  justify-content:center;

  padding:28px;

  background:
    rgba(5, 10, 18, .68);

  backdrop-filter:
    blur(3px);
}

.calendarBriefModal.is-open {
  display:flex;
}

.calendarBriefModal .mSelection {
  display:none;
}

.calendarBriefModalFrame {
  position:relative;

  width:min(
    820px,
    calc(100vw - 56px)
  );

  max-height:
    calc(100vh - 56px);

  overflow:hidden;

  background:var(--surface);

  border:1px solid var(--line);
  border-radius:12px;

  box-shadow:
    0 22px 70px
    rgba(0,0,0,.34);
}

.calendarBriefModal .mBriefing {
  width:auto;
  max-height:
    calc(100vh - 56px);

  overflow-y:auto;
  overscroll-behavior:contain;

  padding:24px 26px 26px;

  border:0;
  border-radius:0;
  box-shadow:none;
}

.calendarBriefModal .mBriefing h2 {
  padding-right:42px;

  font-size:22px;
}

.calendarBriefModal .mSummary {
  font-size:13px;
  line-height:1.5;
}

.calendarBriefModal .mInfoTable {
  font-size:13px;
}

.calendarBriefModalClose {
  position:absolute;
  z-index:2;

  top:12px;
  right:12px;

  width:34px;
  height:34px;

  display:grid;
  place-items:center;

  padding:0;

  border:1px solid var(--line);
  border-radius:7px;

  background:var(--surface);
  color:var(--text);

  font-size:22px;
  line-height:1;

  cursor:pointer;
}

.calendarBriefModalClose:hover {
  border-color:var(--blue);
  color:var(--blue);
}

body.calendarBriefModalOpen {
  overflow:hidden;
}


/* =========================================================
   A-018 READABILITY PASS 1

   Month and Week are calendar-first views.
   Typography is intentionally larger than in the former
   sidebar-constrained layouts.

   Week keeps exact proportional time geometry. Compact
   events may let their text extend beyond the true bar.
   ========================================================= */


/* ---------------------------------------------------------
   MONTH
   --------------------------------------------------------- */

.calendarWorkspace .monthTop h2 {
  font-size:23px;
}

.calendarWorkspace .monthTop p {
  font-size:12px;
}

.calendarWorkspace .monthName {
  min-width:132px;

  font-size:12px;
}

.calendarWorkspace .monthContext {
  font-size:11px;
}

.calendarWorkspace .mWeekdays {
  font-size:11px;
  letter-spacing:.015em;
}

.calendarWorkspace .mDayCell {
  padding:8px 9px;
}

.calendarWorkspace .mDayNumber {
  width:30px;
  height:27px;

  margin-bottom:5px;

  font-size:12.5px;
}

.calendarWorkspace .mToday::after {
  top:8px;
  right:8px;

  font-size:8px;
}

.calendarWorkspace .mEntries {
  gap:5px;
}

.calendarWorkspace .mContest {
  padding:6px 7px;

  border-radius:6px;
}

.calendarWorkspace .mContestTitle {
  gap:5px;

  font-size:12.5px;
  line-height:1.22;
  font-weight:740;
}

.calendarWorkspace .mContestTime {
  margin-top:3px;
  padding-left:16px;

  font-size:10px;
  line-height:1.18;
}

.calendarWorkspace .mMore {
  padding:2px 1px;

  font-size:10px;
}


/* ---------------------------------------------------------
   WEEK HEADER / AXIS
   --------------------------------------------------------- */

.calendarWorkspace .week2Top h2 {
  font-size:23px;
}

.calendarWorkspace .week2Top p {
  font-size:12.5px;
}

.calendarWorkspace .w2Context {
  font-size:11px;
}

.calendarWorkspace .w2Range {
  font-size:19px;
}

.calendarWorkspace .w2AxisRow,
.calendarWorkspace .w2DayRow {
  grid-template-columns:
    118px
    minmax(0,1fr);
}

.calendarWorkspace .w2AxisTitle {
  font-size:10.5px;
}

.calendarWorkspace .w2Tick {
  font-size:10px;
}


/* ---------------------------------------------------------
   WEEK DAY LABELS
   --------------------------------------------------------- */

.calendarWorkspace .w2DayLabel {
  min-height:70px;

  padding:9px 6px;

  gap:5px;
}

.calendarWorkspace .w2Dow,
.calendarWorkspace .w2Month {
  font-size:10px;
}

.calendarWorkspace .w2DayLabel strong {
  font-size:18px;
}

.calendarWorkspace .w2DayLabel small {
  font-size:10px;
}


/* ---------------------------------------------------------
   WEEK TIMELINES / NORMAL EVENTS
   --------------------------------------------------------- */

.calendarWorkspace .w2Timeline {
  min-height:70px;
}

.calendarWorkspace .w2Event {
  min-height:30px;

  padding:5px 6px;
}

.calendarWorkspace .w2EventName {
  gap:4px;

  font-size:10.5px;
  line-height:1.15;
  font-weight:760;
}

.calendarWorkspace .w2EventTime {
  margin-top:2px;

  font-size:8.5px;
  line-height:1.12;
}


/* ---------------------------------------------------------
   WEEK COMPACT EVENTS

   Keep the real narrow time bar. Only the unboxed label
   gets the larger readable typography.
   --------------------------------------------------------- */

.calendarWorkspace .w2Event.compact {
  min-height:32px;
}

.calendarWorkspace .w2Event.compact .w2EventLabel {
  width:max-content;
  max-width:none;
}

.calendarWorkspace .w2Event.compact .w2EventName {
  font-size:10.5px;
}

.calendarWorkspace .w2Event.compact .w2EventTime {
  font-size:8.5px;
}

.calendarWorkspace .w2Event.compact::after {
  height:5px;
}


/* =========================================================
   A-018 MONTH/WEEK LIST-STYLE CONTEST BRIEFING

   Month + Week only.
   The accepted List page remains completely untouched.

   Geometry and typography mirror the accepted List
   briefing, whose public column width is 425 CSS px.
   ========================================================= */

.calendarBriefModalFrame {
  width:min(
    425px,
    calc(100vw - 56px)
  );
}


/* ---------- Briefing shell ---------- */

.calendarBriefModal .mBriefing {
  padding:0;

  background:var(--surface);
  color:var(--text);
}


/* ---------- Loading ---------- */

.calendarBriefLoading {
  padding:30px 24px;

  text-align:center;

  font-size:13px;
  line-height:1.5;

  opacity:.62;
}


/* ---------- Head ---------- */

.calendarBriefHead {
  padding:17px 18px 14px;

  border-bottom:1px solid
    color-mix(
      in srgb,
      currentColor 17%,
      transparent
    );
}

.calendarBriefTitle {
  display:flex;

  gap:8px;
  align-items:center;

  margin-bottom:7px;
}

.calendarBriefModal
.calendarBriefTitle h2 {
  min-width:0;

  margin:0;

  /*
   * Space for the modal close button.
   * The List page needs no such reservation.
   */
  padding:0 42px 0 0;

  font-size:18px;
  line-height:1.2;
}

.calendarBriefStar {
  flex:0 0 auto;

  color:#1670ff;

  font-size:27px;
  line-height:1;
}

.calendarBriefSummary {
  color:var(--text);

  font-size:13px;
  line-height:1.55;
}


/* ---------- Body ---------- */

.calendarBriefBody {
  padding:5px 18px 16px;
}

.calendarBriefInfo {
  display:grid;

  grid-template-columns:
    132px
    minmax(0,1fr);

  gap:10px;
  align-items:start;

  padding:10px 0;

  border-bottom:1px solid
    color-mix(
      in srgb,
      currentColor 13%,
      transparent
    );

  font-size:13px;
}

.calendarBriefInfo:last-child {
  border-bottom:1px solid
    color-mix(
      in srgb,
      var(--text) 12%,
      transparent
    );
}

.calendarBriefLabel {
  min-width:0;

  font-size:13px;
  font-weight:700;
  line-height:1.45;

  opacity:.76;
}

.calendarBriefValue {
  min-width:0;

  color:var(--text);

  font-size:13px;
  line-height:1.45;

  overflow-wrap:anywhere;
}

.calendarBriefValue a {
  color:var(--blue);

  text-decoration:none;
}

.calendarBriefValue a:hover {
  text-decoration:underline;
}


/* ---------- Small screens ---------- */

@media (max-width:480px) {
  .calendarBriefModal {
    padding:14px;
  }

  .calendarBriefModalFrame {
    width:
      calc(100vw - 28px);

    max-height:
      calc(100vh - 28px);
  }

  .calendarBriefModal .mBriefing {
    max-height:
      calc(100vh - 28px);
  }

  .calendarBriefInfo {
    grid-template-columns:
      112px
      minmax(0,1fr);

    gap:9px;
  }
}


/* A-020: active text-search context in Month / Week */
.calendarSearchHint {
  margin-left: 6px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 500;
  white-space: nowrap;
}
