.bulletinView {
  --bulletin-panel: linear-gradient(145deg, rgba(13, 45, 86, 0.95), rgba(4, 24, 56, 0.96));
  --bulletin-line: rgba(105, 166, 255, 0.2);
  --bulletin-paper-blue: #06174c;
  --bulletin-score-blue: #082964;
  --bulletin-score-red: #df090e;
  padding-bottom: 24px;
}

.bulletinControlGrid {
  display: grid;
  grid-template-columns: 1.07fr 1.13fr 1.04fr;
  gap: 10px;
  margin-bottom: 10px;
}

.bulletinControlPanel,
.bulletinPreviewPanel {
  border: 1px solid var(--bulletin-line);
  background: var(--bulletin-panel);
  box-shadow: 0 18px 45px rgba(0, 7, 24, 0.22), inset 0 1px rgba(255, 255, 255, 0.025);
}

.bulletinControlPanel {
  min-height: 202px;
  padding: 14px 17px;
  border-radius: 16px;
}

.bulletinSituationPanel {
  padding-right: 11px;
  padding-left: 11px;
}

.bulletinFilterPanel {
  position: relative;
  z-index: 2;
}

.bulletinPanelTitle {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.bulletinPanelTitle svg,
.bulletinPreviewHeading svg,
.bulletinPreviewTools svg,
.bulletinSelectWrap > svg,
.bulletinSearchField > svg,
.bulletinActionButton svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.bulletinPanelTitle svg {
  width: 20px;
  height: 20px;
}

.bulletinPanelTitle h3,
.bulletinPreviewToolbar h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 650;
}

.bulletinFieldLabel,
.bulletinTerms legend {
  display: block;
  margin: 0 0 4px;
  color: var(--ink-soft);
  font-size: 0.76rem;
}

.bulletinSelectWrap,
.bulletinSearchField {
  position: relative;
  height: 40px;
  margin-bottom: 8px;
  border: 1px solid rgba(118, 174, 255, 0.18);
  border-radius: 10px;
  background: rgba(1, 18, 46, 0.42);
  transition: border-color var(--motion-quick), background var(--motion-quick), transform var(--motion-quick);
}

.bulletinSelectWrap:focus-within,
.bulletinSearchField:focus-within {
  border-color: rgba(63, 142, 255, 0.82);
  background: rgba(4, 28, 67, 0.78);
}

.bulletinSelectWrap > svg {
  position: absolute;
  left: 15px;
  top: 12px;
  width: 21px;
  height: 21px;
  pointer-events: none;
}

.bulletinSelectWrap select,
.bulletinSearchField input {
  width: 100%;
  height: 100%;
  border: 0;
  outline: 0;
  color: var(--ink);
  background: transparent;
}

.bulletinSelectWrap select {
  padding: 0 42px 0 50px;
  appearance: auto;
}

.bulletinClassSelect {
  overflow: visible;
}

.bulletinClassSelect.is-open {
  z-index: 40;
}

.bulletinClassSelect .statsSelectNative {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
}

.bulletinClassSelect .statsSelectButton {
  position: relative;
  width: 100%;
  height: 100%;
  padding: 5px 42px 5px 13px;
  display: grid;
  grid-template-columns: 27px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  border: 0;
  border-radius: inherit;
  color: var(--ink);
  background: transparent;
  text-align: left;
}

.bulletinClassSelect .movementIcon {
  width: 25px;
  height: 25px;
  padding: 3px;
  display: grid;
  place-items: center;
  color: #b9d8ff;
}

.bulletinClassSelect .movementIcon svg {
  width: 100%;
  height: 100%;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.bulletinClassSelect .statsSelectText {
  min-width: 0;
  display: grid;
  line-height: 1.05;
}

.bulletinClassSelect .statsSelectValue {
  overflow: hidden;
  font-size: 0.95rem;
  font-weight: 850;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bulletinClassSelect .statsSelectCaption {
  margin-top: 2px;
  color: var(--muted);
  font-size: 0.6rem;
  font-weight: 800;
  text-transform: uppercase;
}

.bulletinClassSelect .statsSelectChevron {
  position: absolute;
  right: 17px;
  top: 14px;
  width: 9px;
  height: 9px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg);
  transition: transform var(--motion-standard), top var(--motion-standard);
}

.bulletinClassSelect.is-open .statsSelectChevron {
  top: 18px;
  transform: rotate(225deg);
}

.bulletinClassSelect .statsSelectGlow {
  display: none;
}

.bulletinClassSelect .statsSelectMenu {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  right: 0;
  padding: 7px;
  max-height: min(286px, calc(100vh - 150px));
  display: grid;
  gap: 5px;
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid rgba(112, 169, 250, 0.34);
  border-radius: 13px;
  background: rgba(7, 29, 63, 0.99);
  box-shadow: 0 24px 58px rgba(0, 0, 0, 0.42), inset 0 1px rgba(255, 255, 255, 0.06);
  backdrop-filter: blur(20px);
  animation: selectMenuEnter 220ms var(--motion-emphasis) both;
  z-index: 50;
}

.bulletinClassSelect .statsSelectMenu[hidden] {
  display: none;
}

.bulletinClassSelect .statsSelectOption {
  position: relative;
  min-height: 44px;
  padding: 8px 32px 8px 12px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  border: 1px solid transparent;
  border-radius: 9px;
  color: #f5f9ff;
  background: rgba(255, 255, 255, 0.035);
  text-align: left;
  transition: transform var(--motion-quick), background var(--motion-quick), border-color var(--motion-quick);
}

.bulletinClassSelect .statsSelectOption strong {
  font-size: 0.86rem;
  font-weight: 900;
  text-transform: uppercase;
}

.bulletinClassSelect .statsSelectOption span {
  color: #93a9c7;
  font-size: 0.62rem;
  font-weight: 800;
  text-transform: uppercase;
}

.bulletinClassSelect .statsSelectOption:hover,
.bulletinClassSelect .statsSelectOption:focus-visible {
  border-color: rgba(126, 177, 255, 0.42);
  background: rgba(58, 125, 218, 0.2);
  transform: translateX(2px);
}

.bulletinClassSelect .statsSelectOption.active {
  border-color: rgba(76, 155, 255, 0.66);
  background: linear-gradient(135deg, rgba(35, 116, 230, 0.44), rgba(30, 76, 151, 0.4));
}

.bulletinClassSelect .statsSelectOption.active::after {
  content: "";
  position: absolute;
  right: 14px;
  top: 50%;
  width: 7px;
  height: 12px;
  border-right: 2px solid #82b7ff;
  border-bottom: 2px solid #82b7ff;
  transform: translateY(-60%) rotate(45deg);
}

.bulletinSearchField {
  padding-right: 44px;
}

.bulletinSearchField input {
  padding: 0 15px;
}

.bulletinSearchField input::placeholder {
  color: rgba(202, 220, 244, 0.64);
}

.bulletinSearchField > svg {
  position: absolute;
  top: 0;
  right: 0;
  width: 44px;
  height: 100%;
  padding: 11px;
  color: white;
  border-radius: 10px;
  background: linear-gradient(145deg, #2184ff, #004fe0);
  pointer-events: none;
}

.bulletinTerms {
  min-width: 0;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 0;
}

.bulletinTerms legend {
  margin-bottom: 5px;
}

.bulletinTerms > label {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  color: var(--ink-soft);
  font-size: 0.8rem;
  white-space: nowrap;
  cursor: pointer;
}

.bulletinTerms input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.bulletinSwitch {
  position: relative;
  flex: 0 0 auto;
  width: clamp(34px, 2.35vw, 39px);
  height: 21px;
  border-radius: 999px;
  background: rgba(1, 20, 52, 0.78);
  box-shadow: inset 0 0 0 1px rgba(82, 143, 225, 0.16);
  transition: background var(--motion-quick), box-shadow var(--motion-quick);
}

.bulletinSwitch::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 17px;
  height: 17px;
  border-radius: 50%;
  background: #f5f8ff;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.36);
  transition: transform var(--motion-quick);
}

.bulletinTerms input:checked + .bulletinSwitch {
  background: linear-gradient(90deg, #0064ff, #238cff);
  box-shadow: 0 0 16px rgba(0, 105, 255, 0.28);
}

.bulletinTerms input:checked + .bulletinSwitch::after {
  transform: translateX(calc(clamp(34px, 2.35vw, 39px) - 21px));
}

.bulletinTerms input:focus-visible + .bulletinSwitch {
  box-shadow: var(--focus);
}

.bulletinSituationGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}

.bulletinSituationButton {
  min-height: 58px;
  padding: 6px;
  display: grid;
  grid-template-columns: 27px minmax(0, 1fr);
  align-items: center;
  gap: 5px;
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 10px;
  color: #9aabc3;
  background: rgba(4, 24, 56, 0.72);
  font-size: 0.8rem;
  text-align: left;
  line-height: 1.25;
  transition: transform var(--motion-quick), filter var(--motion-quick), box-shadow var(--motion-quick), color var(--motion-quick), background var(--motion-quick);
}

.bulletinSituationButton > span:last-child {
  min-width: 0;
  overflow: hidden;
  overflow-wrap: normal;
  word-break: normal;
  hyphens: none;
}

.bulletinSituationButton:hover,
.bulletinSituationButton:focus-visible {
  transform: translateY(-2px);
  filter: brightness(1.08);
}

.bulletinSituationButton.active {
  color: #fff;
  box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.64), 0 8px 18px rgba(0, 0, 0, 0.22);
}

.bulletinSituationButton.is-course.active {
  background: linear-gradient(145deg, #1685ff, #0056d8);
}

.bulletinSituationButton.is-approved.active {
  background: linear-gradient(145deg, #299f42, #087126);
}

.bulletinSituationButton.is-council.active {
  background: linear-gradient(145deg, #923cf0, #5219bd);
}

.bulletinSituationButton.is-recovery.active {
  background: linear-gradient(145deg, #ff9707, #e26300);
}

.bulletinSituationButton.is-failed.active {
  background: linear-gradient(145deg, #ff2626, #ce0009);
}

.bulletinSituationButton.is-clear {
  color: #09206e;
  background: linear-gradient(145deg, #fff, #dfe7f7);
}

.bulletinSituationIcon {
  width: 27px;
  height: 27px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: currentColor;
  background: rgba(255, 255, 255, 0.12);
  font-size: 1.25rem;
  font-weight: 900;
}

.bulletinSituationButton.active .bulletinSituationIcon,
.bulletinSituationButton.is-clear .bulletinSituationIcon {
  background: rgba(255, 255, 255, 0.94);
}

.bulletinSituationIcon svg {
  width: 17px;
  height: 17px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.bulletinSituationButton.is-course.active .bulletinSituationIcon { color: #0969dd; }
.bulletinSituationButton.is-approved.active .bulletinSituationIcon { color: #108032; }
.bulletinSituationButton.is-council.active .bulletinSituationIcon { color: #6a25d0; }
.bulletinSituationButton.is-recovery.active .bulletinSituationIcon { color: #e66f00; }
.bulletinSituationButton.is-failed.active .bulletinSituationIcon { color: #d6000d; }

.bulletinActionsPanel {
  display: flex;
  flex-direction: column;
}

.bulletinColorMode {
  min-height: 40px;
  margin: 1px 0 10px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  overflow: hidden;
  border: 1px solid rgba(118, 174, 255, 0.18);
  border-radius: 10px;
  background: rgba(1, 18, 46, 0.42);
}

.bulletinColorMode button {
  border: 0;
  color: var(--ink-soft);
  background: transparent;
  font-size: clamp(0.68rem, 0.88vw, 0.88rem);
  transition: color var(--motion-quick), background var(--motion-quick);
}

.bulletinColorMode button.active {
  color: #fff;
  background: linear-gradient(145deg, #1a7fff, #0052e3);
  box-shadow: 0 0 24px rgba(0, 91, 255, 0.28);
}

.bulletinActionButton {
  min-height: 43px;
  margin-bottom: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 0;
  border-radius: 11px;
  color: #081d6f;
  background: linear-gradient(145deg, #fff, #e7ebf6);
  box-shadow: 0 9px 20px rgba(0, 0, 0, 0.17);
  font-size: 0.88rem;
  font-weight: 800;
  transition: transform var(--motion-quick), box-shadow var(--motion-quick);
}

.bulletinActionButton:hover,
.bulletinActionButton:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.24);
}

.bulletinActionButton:disabled {
  cursor: wait;
  opacity: 0.72;
  transform: none;
}

.bulletinActionButton svg {
  width: 20px;
  height: 20px;
}

.bulletinPreviewPanel {
  overflow: hidden;
  border-radius: 19px;
}

.bulletinPreviewToolbar {
  min-height: 40px;
  padding: 0 16px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 15px;
  border-bottom: 1px solid rgba(105, 166, 255, 0.17);
}

.bulletinPreviewHeading,
.bulletinPreviewTools,
.bulletinZoomControl,
.bulletinPreviewTools button {
  display: flex;
  align-items: center;
}

.bulletinPreviewHeading {
  min-width: 0;
  gap: 11px;
}

.bulletinPreviewHeading > svg {
  width: 26px;
  height: 26px;
}

#bulletinPreviewCount {
  color: var(--muted);
  font-size: 0.75rem;
  white-space: nowrap;
}

.bulletinPreviewTools {
  gap: 10px;
  justify-self: end;
}

.bulletinZoomControl,
.bulletinPreviewTools button {
  height: 38px;
  gap: 10px;
  border: 1px solid rgba(105, 166, 255, 0.2);
  border-radius: 10px;
  color: var(--ink-soft);
  background: rgba(1, 17, 44, 0.42);
}

.bulletinZoomControl {
  padding: 0 12px;
}

.bulletinZoomControl svg,
.bulletinPreviewTools button svg {
  width: 20px;
  height: 20px;
}

.bulletinZoomControl select {
  min-width: 74px;
  border: 0;
  outline: 0;
  color: inherit;
  background: transparent;
}

.bulletinPreviewTools button {
  padding: 0 17px;
}

.bulletinPreviewTools button.active {
  color: #fff;
  border-color: #2d83ff;
  background: #075ad8;
}

.bulletinPreviewViewport {
  height: min(790px, calc(100vh - 350px));
  min-height: 560px;
  padding: 0;
  overflow: auto;
  background:
    radial-gradient(circle at 50% 0, rgba(38, 105, 212, 0.13), transparent 34%),
    rgba(0, 10, 31, 0.5);
  scrollbar-color: #2b73d8 rgba(0, 16, 42, 0.7);
}

.bulletinPreviewViewport:fullscreen {
  height: 100vh;
  padding: 24px;
  background: #03132e;
}

.bulletinPages {
  --bulletin-preview-zoom: 1;
  width: calc(100% * var(--bulletin-preview-zoom));
  min-width: 0;
  max-width: calc(1600px * var(--bulletin-preview-zoom));
  margin: 0 auto;
  display: grid;
  gap: calc(18px * var(--bulletin-preview-zoom));
}

.bulletinPage {
  --bulletin-content-scale: var(--bulletin-shared-scale, 1);
  width: 100%;
  aspect-ratio: 210 / 275;
  padding: calc(11px * var(--bulletin-content-scale));
  display: grid;
  grid-template-rows: repeat(4, minmax(0, 1fr));
  gap: calc(11px * var(--bulletin-content-scale));
  overflow: hidden;
  border-radius: calc(14px * var(--bulletin-content-scale));
  background: #edf1f9;
  box-shadow: 0 20px 70px rgba(0, 0, 0, 0.42);
  content-visibility: auto;
  contain-intrinsic-size: auto var(--bulletin-page-intrinsic-height, 1970px);
}

.bulletinPages.is-direct-pdf {
  width: 1505px !important;
  min-width: 1505px !important;
  max-width: 1505px !important;
  gap: 0 !important;
}

.bulletinPages.is-direct-pdf .bulletinPage {
  aspect-ratio: 210 / 297;
  padding: 8px;
  gap: 8px;
  border-radius: 0;
  box-shadow: none;
  content-visibility: visible;
  contain-intrinsic-size: none;
}

.bulletinPages.is-direct-pdf .bulletinSchoolName,
.bulletinPages.is-direct-pdf .bulletinStudentData strong,
.bulletinPages.is-direct-pdf .bulletinStudentResult strong {
  overflow: visible;
  line-height: 1.24;
  text-overflow: clip;
}

.bulletinPages.is-direct-pdf .bulletinSchoolName {
  padding-block: 2px;
}

.bulletinPages.is-direct-pdf .bulletinStudentData strong {
  display: block;
  padding-block: 2px;
  white-space: nowrap;
  -webkit-line-clamp: unset;
}

.bulletinPages.is-direct-pdf .bulletinStudentResult strong {
  padding-block: 2px;
}

.bulletinPages.is-direct-pdf .bulletinProgressRing {
  border: 0;
  background: #fff;
}

.bulletinPages.is-direct-pdf .bulletinWarningIcon {
  border-radius: 50%;
  clip-path: none;
}

.bulletinDocument {
  position: relative;
  min-height: 0;
  overflow: hidden;
  border: calc(1px * var(--bulletin-content-scale)) solid #bdc8dc;
  border-radius: calc(12px * var(--bulletin-content-scale));
  color: #06133c;
  background:
    radial-gradient(circle at 4% 90%, rgba(24, 75, 170, 0.09) 0 1px, transparent 1.5px) 0 0 / 6px 6px,
    linear-gradient(110deg, #fff 0%, #f7f9ff 58%, #f0f3fa 100%);
  box-shadow: 0 5px 14px rgba(19, 35, 76, 0.14);
}

.bulletinDocumentHeader {
  position: relative;
  height: 15%;
  min-height: 0;
  margin: 0 0.9%;
  padding: 0 3% 0 9%;
  display: flex;
  align-items: center;
  gap: 1.5%;
  color: #fff;
  background: linear-gradient(100deg, #061c5b 0%, #07276e 45%, #061542 100%);
}

.bulletinSchoolLogo {
  position: absolute;
  left: 1.6%;
  top: 50%;
  width: auto;
  height: 88%;
  max-width: 6.2%;
  max-height: 88%;
  object-fit: contain;
  transform: translateY(-50%);
  filter: drop-shadow(0 3px 4px rgba(0, 0, 0, 0.3));
}

.bulletinSchoolName {
  min-width: 0;
  overflow: hidden;
  font-size: calc(22px * var(--bulletin-content-scale));
  font-weight: 500;
  letter-spacing: calc(0.5px * var(--bulletin-content-scale));
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bulletinStars {
  flex: 0 0 auto;
  display: flex;
  gap: calc(6px * var(--bulletin-content-scale));
}

.bulletinStars i {
  width: calc(21px * var(--bulletin-content-scale));
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #082264;
  background: #fff;
  font-size: calc(13px * var(--bulletin-content-scale));
  font-style: normal;
}

.bulletinDocumentBody {
  height: 68%;
  padding: 1.7% 1.7% 1.2%;
  display: grid;
  grid-template-columns: 31% minmax(0, 69%);
  gap: 1.4%;
}

.bulletinStudentIdentity {
  min-width: 0;
  display: grid;
  grid-template-rows: minmax(0, 77%) minmax(0, 24%);
  align-content: start;
  gap: 3%;
}

.bulletinStudentTop {
  min-height: 0;
  display: grid;
  grid-template-columns: 35% minmax(0, 65%);
  grid-template-rows: minmax(0, 32%) minmax(0, 68%);
  column-gap: 7%;
  align-items: start;
}

.bulletinStudentPhoto {
  grid-row: 1 / 3;
  width: 100%;
  height: 100%;
  border: calc(1px * var(--bulletin-content-scale)) solid #1667ca;
  border-radius: calc(9px * var(--bulletin-content-scale));
  object-fit: cover;
  object-position: center 22%;
  box-shadow: 0 5px 10px rgba(9, 36, 96, 0.24);
}

.bulletinStudentData {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  padding-top: 2%;
}

.bulletinStudentData strong {
  display: -webkit-box;
  overflow: hidden;
  color: #092066;
  font-size: calc(19px * var(--bulletin-content-scale));
  line-height: 1.08;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.bulletinStudentData span {
  display: block;
  margin-top: 3%;
  color: #092066;
  font-size: calc(22px * var(--bulletin-content-scale));
  font-weight: 800;
}

.bulletinTermProgress {
  grid-column: 2;
  grid-row: 2;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 3%;
  align-items: end;
}

.bulletinProgressItem {
  min-width: 0;
  display: grid;
  place-items: center;
  gap: 7%;
}

.bulletinProgressItem > span {
  overflow: hidden;
  width: 100%;
  font-size: calc(9px * var(--bulletin-content-scale));
  font-weight: 800;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bulletinProgressRing {
  position: relative;
  width: calc(70px * var(--bulletin-content-scale));
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #071c5f;
  background: #fff;
  box-shadow: 0 3px 7px rgba(4, 33, 104, 0.18);
  font-size: calc(12px * var(--bulletin-content-scale));
}

.bulletinProgressRing svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
}

.bulletinProgressRemainder,
.bulletinProgressFill {
  fill: none;
  stroke-width: 5;
}

.bulletinProgressRemainder {
  stroke: #e2121b;
}

.bulletinProgressFill {
  stroke: #075fd1;
  stroke-linecap: butt;
}

.bulletinProgressRing.is-empty .bulletinProgressRemainder {
  stroke: #cbd4e3;
}

.bulletinProgressValue {
  position: relative;
  z-index: 1;
  white-space: nowrap;
}

.bulletinStudentResult {
  min-width: 0;
  width: 90%;
  transform: translateY(calc(14px * var(--bulletin-content-scale)));
  padding: 0 4%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4%;
  border-radius: calc(9px * var(--bulletin-content-scale));
  color: #fff;
  box-shadow: 0 5px 10px rgba(0, 34, 35, 0.2);
}

.bulletinStudentResult.is-approved,
.bulletinStudentResult.is-council {
  background: linear-gradient(145deg, #199336, #087522);
}

.bulletinStudentResult.is-recovery {
  background: linear-gradient(145deg, #f09309, #ce5b00);
}

.bulletinStudentResult.is-course {
  background: linear-gradient(145deg, #157eff, #0057cd);
}

.bulletinStudentResult.is-failed {
  background: linear-gradient(145deg, #ef2027, #bd0008);
}

.bulletinStudentResult strong {
  min-width: 0;
  overflow: hidden;
  font-size: calc(19px * var(--bulletin-content-scale));
  font-weight: 500;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bulletinResultIcon {
  flex: 0 0 auto;
  width: calc(40px * var(--bulletin-content-scale));
  aspect-ratio: 1;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: #087524;
  background: #fff;
  font-size: calc(26px * var(--bulletin-content-scale));
  font-weight: 900;
}

.bulletinStudentResult.is-recovery .bulletinResultIcon { color: #ce5b00; }
.bulletinStudentResult.is-course .bulletinResultIcon { color: #0057cd; }
.bulletinStudentResult.is-failed .bulletinResultIcon { color: #bd0008; }

.bulletinGradeRegion {
  position: relative;
  min-width: 0;
  height: 108%;
  align-self: start;
  overflow: hidden;
  border: calc(1px * var(--bulletin-content-scale)) solid #aebed9;
  border-radius: calc(9px * var(--bulletin-content-scale));
  background: linear-gradient(145deg, #ffffff, #edf2fa);
  box-shadow:
    0 calc(8px * var(--bulletin-content-scale)) calc(20px * var(--bulletin-content-scale)) rgba(7, 30, 83, 0.16),
    inset 0 calc(1px * var(--bulletin-content-scale)) rgba(255, 255, 255, 0.9);
  transition: transform var(--motion-standard), box-shadow var(--motion-standard);
}

.bulletinGradeRegion::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 calc(1px * var(--bulletin-content-scale)) rgba(255, 255, 255, 0.36);
  pointer-events: none;
}

.bulletinDocument:hover .bulletinGradeRegion {
  transform: translateY(calc(-1px * var(--bulletin-content-scale)));
  box-shadow:
    0 calc(11px * var(--bulletin-content-scale)) calc(25px * var(--bulletin-content-scale)) rgba(7, 30, 83, 0.2),
    inset 0 calc(1px * var(--bulletin-content-scale)) rgba(255, 255, 255, 0.94);
}

.bulletinGradeTable {
  width: 100%;
  height: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  color: #06113c;
  font-size: calc(9px * var(--bulletin-content-scale));
}

.bulletinGradeTable thead {
  height: 17%;
}

.bulletinGradeTable tbody {
  height: 83%;
}

.bulletinPeriodColumn {
  width: 10.5%;
}

.bulletinKindColumn {
  width: 4.8%;
}

.bulletinDisciplineColumn {
  width: 7.0583%;
}

.bulletinGradeTable th,
.bulletinGradeTable td {
  padding: 0.4%;
  overflow: hidden;
  border: calc(1px * var(--bulletin-content-scale)) solid rgba(174, 190, 216, 0.78);
  text-align: center;
  text-overflow: clip;
  transition: filter var(--motion-quick), box-shadow var(--motion-quick), background var(--motion-quick);
}

.bulletinGradeTable thead th {
  height: 20%;
  color: #fff;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.08), transparent 42%),
    linear-gradient(145deg, #092665, #05143f 72%);
  box-shadow: inset 0 calc(-2px * var(--bulletin-content-scale)) rgba(0, 0, 0, 0.18);
  font-size: calc(8.1px * var(--bulletin-content-scale));
  font-weight: 650;
  line-height: 1.12;
  overflow-wrap: anywhere;
  text-shadow: 0 calc(1px * var(--bulletin-content-scale)) calc(2px * var(--bulletin-content-scale)) rgba(0, 0, 0, 0.3);
}

.bulletinGradeTable thead th:first-child {
  color: #0b2254;
  background: linear-gradient(145deg, #ffffff, #e6edf8);
  box-shadow: inset calc(-2px * var(--bulletin-content-scale)) 0 rgba(8, 41, 100, 0.08);
  font-size: calc(8.8px * var(--bulletin-content-scale));
  font-weight: 900;
  text-shadow: none;
}

.bulletinGradeTable tbody th {
  color: #0a2256;
  background: linear-gradient(145deg, #fafcff, #e9eef7);
  font-size: calc(8.5px * var(--bulletin-content-scale));
  font-weight: 900;
  letter-spacing: calc(0.08px * var(--bulletin-content-scale));
}

.bulletinGradeTable tbody tr:nth-child(even) th {
  background: linear-gradient(145deg, #f2f6fc, #e3eaf5);
}

.bulletinGradeTable tbody tr:nth-child(2n + 1):not(:first-child) > * {
  border-top-color: #91a8cb;
  border-top-width: calc(2px * var(--bulletin-content-scale));
}

.bulletinGradeTable td {
  color: #06133d;
  background: linear-gradient(145deg, #fbfcff, #eef2f8);
  font-size: calc(10.5px * var(--bulletin-content-scale));
  font-weight: 650;
}

.bulletinGradeTable td.is-pass {
  color: #fff;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.11), transparent 42%),
    linear-gradient(145deg, var(--bulletin-score-blue), #0d347b);
  box-shadow: inset 0 calc(1px * var(--bulletin-content-scale)) rgba(255, 255, 255, 0.14);
  text-shadow: 0 calc(1px * var(--bulletin-content-scale)) calc(2px * var(--bulletin-content-scale)) rgba(0, 0, 0, 0.26);
}

.bulletinGradeTable td.is-low {
  color: #fff;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.13), transparent 42%),
    linear-gradient(145deg, #f0181d, var(--bulletin-score-red));
  box-shadow: inset 0 calc(1px * var(--bulletin-content-scale)) rgba(255, 255, 255, 0.16);
  text-shadow: 0 calc(1px * var(--bulletin-content-scale)) calc(2px * var(--bulletin-content-scale)) rgba(83, 0, 3, 0.3);
}

.bulletinGradeTable td.is-recovery-empty,
.bulletinGradeTable td.is-missing {
  color: #1b243b;
  background:
    repeating-linear-gradient(135deg, rgba(18, 50, 103, 0.022) 0 3px, transparent 3px 7px),
    #f3f6fa;
}

.bulletinFinalRow th {
  color: #071d55 !important;
  background: linear-gradient(145deg, #eaf1fc, #dce7f7) !important;
  font-size: calc(9.6px * var(--bulletin-content-scale)) !important;
  letter-spacing: calc(0.25px * var(--bulletin-content-scale));
}

.bulletinFinalRow td.is-pass {
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.16), transparent 40%),
    linear-gradient(145deg, var(--bulletin-score-blue), #0d347b);
  box-shadow:
    inset 0 calc(2px * var(--bulletin-content-scale)) rgba(112, 174, 255, 0.36),
    inset 0 calc(-2px * var(--bulletin-content-scale)) rgba(0, 0, 0, 0.18);
  font-weight: 900;
}

.bulletinGradeTable tbody tr:hover td {
  filter: brightness(1.08) saturate(1.04);
}

.bulletinGradeTable tbody tr:hover th {
  filter: brightness(0.98);
}

.bulletinDocumentFooter {
  height: 10.5%;
  margin: calc(10px * var(--bulletin-content-scale)) 1.7% 0.8% 32.7%;
  padding: 0 3% 0 7%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2%;
  color: #07185e;
  border-radius: calc(5px * var(--bulletin-content-scale));
  background: linear-gradient(90deg, #e5e9f5, #eef1f8);
  font-size: calc(11px * var(--bulletin-content-scale));
}

.bulletinPrivacyWarning {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 4%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.bulletinWarningIcon {
  flex: 0 0 auto;
  width: calc(23px * var(--bulletin-content-scale));
  aspect-ratio: 1.1;
  display: grid;
  place-items: center;
  color: #fff;
  background: #07185e;
  clip-path: polygon(50% 0, 100% 100%, 0 100%);
  font-size: calc(13px * var(--bulletin-content-scale));
}

.bulletinNumber {
  flex: 0 0 auto;
}

.bulletinEmptyState {
  min-height: 300px;
  padding: 30px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 8px;
  border: 1px dashed rgba(118, 174, 255, 0.36);
  border-radius: 18px;
  color: var(--ink-soft);
  text-align: center;
  background: rgba(4, 24, 56, 0.8);
}

.bulletinPages[data-color-mode="mono"] .bulletinDocument {
  filter: grayscale(1);
}

body[data-theme="claro"] .bulletinView {
  --bulletin-panel: linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(238, 246, 255, 0.98));
  --bulletin-line: rgba(38, 94, 158, 0.21);
}

body[data-theme="claro"] .bulletinSelectWrap,
body[data-theme="claro"] .bulletinSearchField,
body[data-theme="claro"] .bulletinColorMode,
body[data-theme="claro"] .bulletinZoomControl,
body[data-theme="claro"] .bulletinPreviewTools button {
  background: rgba(217, 233, 251, 0.58);
}

body[data-theme="claro"] .bulletinSearchField input::placeholder {
  color: #60748d;
}

body[data-theme="mono"] .bulletinView {
  --bulletin-panel: linear-gradient(145deg, rgba(38, 40, 47, 0.98), rgba(16, 18, 23, 0.98));
  --bulletin-line: rgba(255, 255, 255, 0.15);
}

@media (max-width: 1500px) {
  .bulletinSituationButton {
    padding: 5px;
    grid-template-columns: 25px minmax(0, 1fr);
    gap: 4px;
    font-size: 0.74rem;
  }

  .bulletinSituationIcon {
    width: 25px;
    height: 25px;
    font-size: 1.15rem;
  }

  .bulletinSituationIcon svg {
    width: 16px;
    height: 16px;
  }
}

@media (max-width: 1320px) {
  .bulletinTerms > label {
    font-size: 0.66rem;
  }

  .bulletinSituationButton {
    padding: 5px 4px;
    grid-template-columns: 23px minmax(0, 1fr);
    gap: 4px;
    font-size: 0.66rem;
  }

  .bulletinSituationIcon {
    width: 23px;
    height: 23px;
    font-size: 1.05rem;
  }

  .bulletinSituationIcon svg {
    width: 15px;
    height: 15px;
  }
}

@media (max-width: 1100px) {
  .bulletinControlGrid {
    grid-template-columns: 1fr 1fr;
  }

  .bulletinActionsPanel {
    grid-column: 1 / -1;
    min-height: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px 14px;
  }

  .bulletinActionsPanel .bulletinPanelTitle,
  .bulletinActionsPanel > .bulletinFieldLabel,
  .bulletinActionsPanel .bulletinColorMode {
    grid-column: 1 / -1;
  }

  .bulletinActionButton {
    margin: 0;
  }
}

@media (max-width: 820px) {
  .bulletinControlGrid {
    grid-template-columns: 1fr;
  }

  .bulletinActionsPanel {
    grid-column: auto;
  }

  .bulletinPreviewToolbar {
    padding: 10px 12px;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
  }

  .bulletinPages {
    min-width: calc(1210px * var(--bulletin-preview-zoom));
  }

  .bulletinPreviewHeading {
    flex-wrap: wrap;
  }

  .bulletinPreviewTools button span {
    display: none;
  }
}

@media (max-width: 560px) {
  .bulletinControlPanel {
    padding: 16px;
  }

  .bulletinTerms {
    grid-template-columns: 1fr;
  }

  .bulletinTerms > label {
    margin-bottom: 8px;
  }

  .bulletinSituationGrid {
    grid-template-columns: 1fr 1fr;
  }

  .bulletinSituationButton {
    grid-template-columns: 27px minmax(0, 1fr);
    min-height: 58px;
    padding: 6px;
    font-size: 0.74rem;
  }

  .bulletinSituationIcon {
    width: 27px;
    height: 27px;
  }

  .bulletinActionsPanel {
    display: flex;
  }

  .bulletinPreviewToolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
  }

  .bulletinPreviewHeading {
    flex: 1 1 100%;
  }

  .bulletinPreviewTools {
    justify-content: space-between;
  }

  .bulletinPreviewViewport {
    min-height: 480px;
    padding: 8px;
  }
}

@page bulletin {
  size: A4 portrait;
  margin: 6mm;
}

@media print {
  body:is([data-print-view="boletim"], [data-view="boletim"]) {
    background: #fff !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .appRail,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .systemBar,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .appFatalError,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinControlGrid,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPreviewToolbar,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .studentProfileBackdrop,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .studentProfilePanel {
    display: none !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .appShell,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .mainStage,
  body:is([data-print-view="boletim"], [data-view="boletim"]) #view-boletim,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPreviewPanel,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPreviewViewport,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPages {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: none !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPage {
    page: bulletin;
    width: 100% !important;
    height: 285mm !important;
    min-height: 285mm !important;
    aspect-ratio: auto;
    padding: 0 !important;
    grid-template-rows: repeat(4, minmax(0, 1fr));
    gap: 2mm !important;
    overflow: hidden !important;
    border-radius: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
    content-visibility: visible !important;
    contain-intrinsic-size: none !important;
    break-after: page;
    page-break-after: always;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPage:last-child {
    break-after: auto;
    page-break-after: auto;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocument {
    --bulletin-content-scale: 0.47;
    min-height: 0;
    break-inside: avoid;
    page-break-inside: avoid;
    print-color-adjust: exact;
    -webkit-print-color-adjust: exact;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocument,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocumentHeader,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentResult,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinGradeTable td,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocumentFooter {
    box-shadow: none !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocument {
    background: #fff !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinSchoolLogo {
    filter: none !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentPhoto {
    box-shadow: none !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinProgressRing {
    border: 0 !important;
    background: #fff !important;
    box-shadow: none !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocumentHeader {
    background: #071d5c !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinGradeTable thead th {
    background: #061747 !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinGradeTable thead th:first-child {
    background: #f4f6fa !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinDocumentFooter {
    background: #e9edf5 !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentResult.is-approved,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentResult.is-council {
    background: #087b2a !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentResult.is-recovery,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentResult.is-course {
    background: #0968da !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinStudentResult.is-failed {
    background: #d20b15 !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinGradeTable td.is-pass,
  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinFinalRow td.is-pass {
    background: var(--bulletin-score-blue) !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinGradeTable td.is-low {
    background: var(--bulletin-score-red) !important;
  }

  body:is([data-print-view="boletim"], [data-view="boletim"]) .bulletinPages[data-color-mode="mono"] .bulletinDocument {
    filter: grayscale(1);
  }
}
