/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties {
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or
    ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
    *,
    :before,
    :after,
    ::backdrop {
      --tw-rotate-x: initial;
      --tw-rotate-y: initial;
      --tw-rotate-z: initial;
      --tw-skew-x: initial;
      --tw-skew-y: initial;
      --tw-border-style: solid;
      --tw-shadow: 0 0 #0000;
      --tw-shadow-color: initial;
      --tw-shadow-alpha: 100%;
      --tw-inset-shadow: 0 0 #0000;
      --tw-inset-shadow-color: initial;
      --tw-inset-shadow-alpha: 100%;
      --tw-ring-color: initial;
      --tw-ring-shadow: 0 0 #0000;
      --tw-inset-ring-color: initial;
      --tw-inset-ring-shadow: 0 0 #0000;
      --tw-ring-inset: initial;
      --tw-ring-offset-width: 0px;
      --tw-ring-offset-color: #fff;
      --tw-ring-offset-shadow: 0 0 #0000;
      --tw-blur: initial;
      --tw-brightness: initial;
      --tw-contrast: initial;
      --tw-grayscale: initial;
      --tw-hue-rotate: initial;
      --tw-invert: initial;
      --tw-opacity: initial;
      --tw-saturate: initial;
      --tw-sepia: initial;
      --tw-drop-shadow: initial;
      --tw-drop-shadow-color: initial;
      --tw-drop-shadow-alpha: 100%;
      --tw-drop-shadow-size: initial;
      --tw-backdrop-blur: initial;
      --tw-backdrop-brightness: initial;
      --tw-backdrop-contrast: initial;
      --tw-backdrop-grayscale: initial;
      --tw-backdrop-hue-rotate: initial;
      --tw-backdrop-invert: initial;
      --tw-backdrop-opacity: initial;
      --tw-backdrop-saturate: initial;
      --tw-backdrop-sepia: initial;
    }
  }
}
@layer theme {
  :root,
  :host {
    --font-sans:
      ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",
      "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    --font-mono:
      ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
      "Courier New", monospace;
    --spacing: 0.25rem;
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
  }
}
@layer base {
  *,
  :after,
  :before,
  ::backdrop {
    box-sizing: border-box;
    border: 0 solid;
    margin: 0;
    padding: 0;
  }
  ::file-selector-button {
    box-sizing: border-box;
    border: 0 solid;
    margin: 0;
    padding: 0;
  }
  html,
  :host {
    -webkit-text-size-adjust: 100%;
    tab-size: 4;
    line-height: 1.5;
    font-family: var(
      --default-font-family,
      ui-sans-serif,
      system-ui,
      sans-serif,
      "Apple Color Emoji",
      "Segoe UI Emoji",
      "Segoe UI Symbol",
      "Noto Color Emoji"
    );
    font-feature-settings: var(--default-font-feature-settings, normal);
    font-variation-settings: var(--default-font-variation-settings, normal);
    -webkit-tap-highlight-color: transparent;
  }
  hr {
    height: 0;
    color: inherit;
    border-top-width: 1px;
  }
  abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
  }
  h1,
  h2,
  h3,
  h4,
  h5,
  h6 {
    font-size: inherit;
    font-weight: inherit;
  }
  a {
    color: inherit;
    -webkit-text-decoration: inherit;
    -webkit-text-decoration: inherit;
    -webkit-text-decoration: inherit;
    -webkit-text-decoration: inherit;
    text-decoration: inherit;
  }
  b,
  strong {
    font-weight: bolder;
  }
  code,
  kbd,
  samp,
  pre {
    font-family: var(
      --default-mono-font-family,
      ui-monospace,
      SFMono-Regular,
      Menlo,
      Monaco,
      Consolas,
      "Liberation Mono",
      "Courier New",
      monospace
    );
    font-feature-settings: var(--default-mono-font-feature-settings, normal);
    font-variation-settings: var(
      --default-mono-font-variation-settings,
      normal
    );
    font-size: 1em;
  }
  small {
    font-size: 80%;
  }
  sub,
  sup {
    vertical-align: baseline;
    font-size: 75%;
    line-height: 0;
    position: relative;
  }
  sub {
    bottom: -0.25em;
  }
  sup {
    top: -0.5em;
  }
  table {
    text-indent: 0;
    border-color: inherit;
    border-collapse: collapse;
  }
  :-moz-focusring {
    outline: auto;
  }
  progress {
    vertical-align: baseline;
  }
  summary {
    display: list-item;
  }
  ol,
  ul,
  menu {
    list-style: none;
  }
  img,
  svg,
  video,
  canvas,
  audio,
  iframe,
  embed,
  object {
    vertical-align: middle;
    display: block;
  }
  img,
  video {
    max-width: 100%;
    height: auto;
  }
  button,
  input,
  select,
  optgroup,
  textarea {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    opacity: 1;
    background-color: #0000;
    border-radius: 0;
  }
  ::file-selector-button {
    font: inherit;
    font-feature-settings: inherit;
    font-variation-settings: inherit;
    letter-spacing: inherit;
    color: inherit;
    opacity: 1;
    background-color: #0000;
    border-radius: 0;
  }
  :where(select:is([multiple], [size])) optgroup {
    font-weight: bolder;
  }
  :where(select:is([multiple], [size])) optgroup option {
    padding-inline-start: 20px;
  }
  ::file-selector-button {
    margin-inline-end: 4px;
  }
  ::placeholder {
    opacity: 1;
  }
  @supports (not ((-webkit-appearance: -apple-pay-button))) or
    (contain-intrinsic-size: 1px) {
    ::placeholder {
      color: currentColor;
    }
    @supports (color: color-mix(in lab, red, red)) {
      ::placeholder {
        color: color-mix(in oklab, currentcolor 50%, transparent);
      }
    }
  }
  textarea {
    resize: vertical;
  }
  ::-webkit-search-decoration {
    -webkit-appearance: none;
  }
  ::-webkit-date-and-time-value {
    min-height: 1lh;
    text-align: inherit;
  }
  ::-webkit-datetime-edit {
    display: inline-flex;
  }
  ::-webkit-datetime-edit-fields-wrapper {
    padding: 0;
  }
  ::-webkit-datetime-edit {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-year-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-month-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-day-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-hour-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-minute-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-second-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-millisecond-field {
    padding-block: 0;
  }
  ::-webkit-datetime-edit-meridiem-field {
    padding-block: 0;
  }
  ::-webkit-calendar-picker-indicator {
    line-height: 1;
  }
  :-moz-ui-invalid {
    box-shadow: none;
  }
  button,
  input:where([type="button"], [type="reset"], [type="submit"]) {
    appearance: button;
  }
  ::file-selector-button {
    appearance: button;
  }
  ::-webkit-inner-spin-button {
    height: auto;
  }
  ::-webkit-outer-spin-button {
    height: auto;
  }
  [hidden]:where(:not([hidden="until-found"])) {
    display: none !important;
  }
}
@layer components;
@layer utilities {
  .visible {
    visibility: visible;
  }
  .absolute {
    position: absolute;
  }
  .relative {
    position: relative;
  }
  .static {
    position: static;
  }
  .sticky {
    position: sticky;
  }
  .start {
    inset-inline-start: var(--spacing);
  }
  .end {
    inset-inline-end: var(--spacing);
  }
  .container {
    width: 100%;
  }
  @media (width>=40rem) {
    .container {
      max-width: 40rem;
    }
  }
  @media (width>=48rem) {
    .container {
      max-width: 48rem;
    }
  }
  @media (width>=64rem) {
    .container {
      max-width: 64rem;
    }
  }
  @media (width>=80rem) {
    .container {
      max-width: 80rem;
    }
  }
  @media (width>=96rem) {
    .container {
      max-width: 96rem;
    }
  }
  .contents {
    display: contents;
  }
  .flex {
    display: flex;
  }
  .hidden {
    display: none;
  }
  .table {
    display: table;
  }
  .table-cell {
    display: table-cell;
  }
  .transform {
    transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,)
      var(--tw-skew-x,) var(--tw-skew-y,);
  }
  .resize {
    resize: both;
  }
  .border {
    border-style: var(--tw-border-style);
    border-width: 1px;
  }
  .italic {
    font-style: italic;
  }
  .antialiased {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
  }
  .ring {
    --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0
      calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
    box-shadow:
      var(--tw-inset-shadow), var(--tw-inset-ring-shadow),
      var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
  }
  .blur {
    --tw-blur: blur(8px);
    filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,)
      var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,)
      var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
  }
  .filter {
    filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,)
      var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,)
      var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
  }
  .filter\! {
    filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,)
      var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,)
      var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,) !important;
  }
  .backdrop-filter {
    -webkit-backdrop-filter: var(--tw-backdrop-blur,)
      var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,)
      var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,)
      var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,)
      var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);
    backdrop-filter: var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,)
      var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,)
      var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,)
      var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,)
      var(--tw-backdrop-sepia,);
  }
}
:root {
  --ink: #172033;
  --muted: #6f7788;
  --line: #e4e8f0;
  --canvas: #f5f7fb;
  --white: #fff;
  --blue: #3157d5;
  --blue-dark: #2545b4;
  --blue-soft: #edf1ff;
  --violet: #7b4dd8;
  --green: #0a8f6a;
  --amber: #c56828;
  --red: #c53c4b;
  --shadow: 0 12px 34px #1f2b4c14;
}
* {
  box-sizing: border-box;
  scrollbar-color: color-mix(in srgb, var(--blue) 78%, var(--surface, #fff) 22%) color-mix(in srgb, var(--canvas) 92%, var(--blue) 8%);
}
*::-webkit-scrollbar { width: 11px; height: 10px; }
*::-webkit-scrollbar-track { background: color-mix(in srgb, var(--canvas) 92%, var(--blue) 8%); }
*::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--blue) 78%, var(--surface, #fff) 22%); border: 2px solid transparent; background-clip: padding-box; border-radius: 999px; }
*::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--blue) 90%, var(--surface, #fff) 10%); background-clip: padding-box; }
html {
  background: var(--canvas);
  /* Mantém a largura útil estável quando filtros/pesquisa fazem a página ganhar ou perder scroll vertical. */
  scrollbar-gutter: stable;
}
body {
  background: var(--canvas);
  color: var(--ink);
  margin: 0;
  font-family:
    Inter,
    Segoe UI,
    Arial,
    sans-serif;
}
button,
input,
select,
textarea {
  font: inherit;
}
button {
  color: inherit;
}
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible {
  outline-offset: 2px;
  outline: 3px solid #3157d538;
}
.app-shell {
  min-height: 100vh;
}
.sidebar {
  color: #fff;
  z-index: 20;
  background: var(--sidebar);
  flex-direction: column;
  width: 264px;
  padding: 28px 18px 22px;
  display: flex;
  position: fixed;
  inset: 0 auto 0 0;
}
.brand {
  align-items: center;
  gap: 13px;
  padding: 0 10px 30px;
  display: flex;
}
.brand-mark {
  width: 44px;
  height: 44px;
  color: var(--blue);
  background: #fff;
  border-radius: 13px;
  place-items: center;
  display: grid;
  position: relative;
  overflow: hidden;
}
.brand-mark span {
  z-index: 1;
  font-size: var(--cp-fs-23px, 23px);
  font-weight: 850;
  position: relative;
}
.brand-mark i {
  background: #dfe6ff;
  border-radius: 50%;
  width: 27px;
  height: 27px;
  position: absolute;
  bottom: -8px;
  right: -8px;
}
.brand strong,
.brand small {
  display: block;
}
.brand strong {
  letter-spacing: -0.02em;
  font-size: var(--cp-fs-20px, 20px);
}
.brand small {
  color: #aeb8cd;
  margin-top: 2px;
  font-size: var(--cp-fs-12px, 12px);
}
.main-nav {
  flex-direction: column;
  gap: 5px;
  display: flex;
}
.main-nav button {
  color: #b9c2d6;
  text-align: left;
  cursor: pointer;
  background: 0 0;
  border: 0;
  border-radius: 12px;
  align-items: center;
  gap: 11px;
  width: 100%;
  min-height: 48px;
  padding: 8px 11px;
  font-size: var(--cp-fs-13px, 13px);
  font-weight: 650;
  transition: all 0.16s;
  display: flex;
  position: relative;
}
.main-nav button:hover {
  color: #fff;
  background: #1a263e;
}
.main-nav button.active {
  color: #fff;
  background: #263a70;
  box-shadow: inset 3px 0 #89a1ff;
}
.nav-icon {
  color: #aebfff;
  letter-spacing: 0.04em;
  background: #ffffff14;
  border-radius: 8px;
  place-items: center;
  width: 28px;
  height: 28px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 850;
  display: grid;
}
.main-nav button.active .nav-icon {
  color: var(--blue);
  background: #fff;
}
.sync-dot {
  background: #657089;
  border-radius: 50%;
  width: 7px;
  height: 7px;
  margin-left: auto;
}
.sync-dot.success,
.sync-dot.syncing {
  background: #46d09c;
  box-shadow: 0 0 0 4px #46d09c1f;
}
.sync-dot.error {
  background: #ff7682;
}
.sidebar-bottom {
  margin-top: auto;
}
.storage-card {
  background: #151f34;
  border: 1px solid #2c3953;
  border-radius: 13px;
  gap: 10px;
  padding: 13px;
  display: flex;
}
.storage-card-button {
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  align-items: center;
  width: 100%;
  transition: background-color 140ms ease, border-color 140ms ease, transform 140ms ease;
}
.storage-card-button:hover {
  background: #1a2741;
  border-color: #405170;
}
.storage-card-button:active {
  transform: translateY(1px);
}
.storage-card-button:focus-visible {
  outline: 2px solid #9db0ff;
  outline-offset: 2px;
}
.storage-card-copy {
  min-width: 0;
  flex: 1;
}
.storage-card-chevron {
  color: #9db0ff;
  font-size: var(--cp-fs-20px, 20px);
  line-height: 1;
  margin-left: auto;
  transform: translateY(-1px);
}
.storage-icon {
  color: #9db0ff;
  background: #24345a;
  border-radius: 9px;
  place-items: center;
  width: 31px;
  height: 31px;
  display: grid;
}
.storage-card strong,
.storage-card small {
  display: block;
}
.storage-card strong {
  font-size: var(--cp-fs-12px, 12px);
}
.storage-card small {
  color: #8e9ab0;
  margin-top: 3px;
  font-size: var(--cp-fs-10px, 10px);
  line-height: 1.35;
}
.close-session-button {
  color: #c8d0df;
  text-align: left;
  cursor: pointer;
  background: transparent;
  border: 1px solid #2c3953;
  border-radius: 11px;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin-top: 9px;
  padding: 10px 12px;
  display: flex;
  transition: all 0.16s;
}
.close-session-button:hover {
  color: #fff;
  background: #281d2a;
  border-color: #69404a;
}
.close-session-button > span {
  color: #ff9aa5;
  background: #ffffff0d;
  border-radius: 8px;
  flex: none;
  place-items: center;
  width: 30px;
  height: 30px;
  font-size: var(--cp-fs-18px, 18px);
  line-height: 1;
  display: grid;
}
.close-session-button strong,
.close-session-button small {
  display: block;
}
.close-session-button strong {
  font-size: var(--cp-fs-11px, 11px);
}
.close-session-button small {
  color: #7f8ba2;
  margin-top: 2px;
  font-size: var(--cp-fs-9px, 9px);
}
.sidebar-bottom > p {
  color: #667289;
  margin: 14px 10px 0;
  font-size: var(--cp-fs-10px, 10px);
}
.session-closed {
  background: var(--canvas);
  place-items: center;
  min-height: 100vh;
  padding: 28px;
  display: grid;
}
.session-closed > div {
  text-align: center;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 20px;
  width: min(520px, 100%);
  padding: 46px 38px;
  box-shadow: var(--shadow);
}
.session-closed span {
  color: #fff;
  background: var(--green);
  border-radius: 50%;
  place-items: center;
  width: 54px;
  height: 54px;
  margin: 0 auto 20px;
  font-size: var(--cp-fs-24px, 24px);
  font-weight: 850;
  display: grid;
}
.session-closed h1 {
  letter-spacing: -0.03em;
  margin: 0;
  font-size: var(--cp-fs-28px, 28px);
}
.session-closed p {
  color: var(--ink);
  margin: 13px 0 7px;
  font-size: var(--cp-fs-13px, 13px);
  line-height: 1.55;
}
.session-closed small {
  color: var(--muted);
  font-size: var(--cp-fs-11px, 11px);
  line-height: 1.55;
}
.workspace {
  min-height: 100vh;
  margin-left: 264px;
}
.topbar {
  border-bottom: 1px solid var(--line);
  z-index: 15;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  background: #fffffff0;
  justify-content: space-between;
  align-items: center;
  height: 78px;
  padding: 0 32px;
  display: flex;
  position: sticky;
  top: 0;
}
.breadcrumb {
  align-items: center;
  gap: 9px;
  font-size: var(--cp-fs-13px, 13px);
  display: flex;
}
.breadcrumb span,
.breadcrumb b {
  color: #9aa2b2;
  font-weight: 500;
}
.breadcrumb strong {
  font-weight: 750;
}
.topbar-actions {
  align-items: center;
  gap: 16px;
  display: flex;
}
.class-switcher {
  flex-direction: column;
  gap: 2px;
  display: flex;
}
.class-switcher span {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.class-switcher select {
  background-color: color-mix(in srgb, var(--surface, #fff) 90%, var(--active-class-color, #dfe4ec) 10%);
  border: 1px solid color-mix(in srgb, var(--line) 72%, var(--active-class-color, #dfe4ec) 28%);
  border-left: 5px solid var(--active-class-color, #dfe4ec);
  border-radius: 9px;
  outline: none;
  min-width: 245px;
  padding: 6px 28px 6px 9px;
  font-size: var(--cp-fs-12px, 12px);
  font-weight: 750;
}
.class-switcher select:focus-visible {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--active-class-color, #526f93) 18%, transparent);
}
.sync-pill {
  border: 1px solid var(--line);
  text-align: left;
  cursor: pointer;
  background: #fff;
  border-radius: 12px;
  align-items: center;
  gap: 10px;
  min-width: 188px;
  padding: 8px 12px;
  display: flex;
}
.pulse {
  background: #9aa2b2;
  border-radius: 50%;
  flex: none;
  width: 9px;
  height: 9px;
}
.pulse.success,
.pulse.syncing {
  background: var(--green);
  box-shadow: 0 0 0 4px #0a8f6a1f;
}
.pulse.error {
  background: var(--red);
}
.pulse.pending {
  background: #d99118;
  box-shadow: 0 0 0 4px rgba(217,145,24,.16);
}
.sync-pill b,
.sync-pill small {
  display: block;
}
.sync-pill b {
  font-size: var(--cp-fs-11px, 11px);
}
.sync-pill small {
  color: var(--muted);
  margin-top: 2px;
  font-size: var(--cp-fs-9px, 9px);
}
.mobile-brand,
.mobile-nav {
  display: none;
}
.content {
  max-width: 1540px;
  margin: 0 auto;
  padding: 36px 36px 70px;
}
.demo-banner {
  background: #f1f4ff;
  border: 1px solid #d8def7;
  border-radius: 12px;
  align-items: center;
  gap: 12px;
  margin-bottom: 26px;
  padding: 12px 14px 12px 16px;
  display: flex;
}
.demo-banner span {
  background: var(--blue);
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-radius: 7px;
  padding: 5px 8px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 800;
}
.demo-banner p {
  color: #4c5875;
  margin: 0;
  font-size: var(--cp-fs-12px, 12px);
}
.demo-banner button {
  color: var(--blue);
  cursor: pointer;
  background: 0 0;
  border: 0;
  margin-left: auto;
  font-size: var(--cp-fs-11px, 11px);
  font-weight: 750;
}
.eyebrow {
  color: #8a93a5;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  margin: 0 0 7px;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 850;
}
.hero-row,
.page-heading {
  justify-content: space-between;
  align-items: flex-end;
  gap: 24px;
  margin-bottom: 28px;
  display: flex;
}
.hero-row h1,
.page-heading h1 {
  letter-spacing: -0.035em;
  margin: 0;
  font-size: clamp(30px, 3vw, 42px);
  line-height: 1.08;
}
.hero-row > div > p:last-child,
.page-heading > div > p:last-child {
  max-width: 720px;
  color: var(--muted);
  margin: 10px 0 0;
  font-size: var(--cp-fs-14px, 14px);
  line-height: 1.55;
}
.heading-actions {
  flex-wrap: wrap;
  gap: 10px;
  display: flex;
}
.primary,
.secondary,
.danger-button,
.text-button {
  cursor: pointer;
  border-radius: 10px;
  padding: 11px 16px;
  font-size: var(--cp-fs-12px, 12px);
  font-weight: 750;
  transition: all 0.15s;
}
.primary {
  border: 1px solid var(--blue);
  background: var(--blue);
  color: #fff;
  box-shadow: 0 8px 18px #3157d533;
}
.primary:hover {
  background: var(--blue-dark);
  transform: translateY(-1px);
}
.secondary {
  border: 1px solid var(--line);
  color: #35405a;
  background: #fff;
}
.secondary:hover {
  background: #f9fafc;
  border-color: #bdc5d5;
}
.danger-button {
  color: var(--red);
  background: #fff2f3;
  border: 1px solid #ffd4d8;
}
.text-button {
  color: var(--blue);
  background: 0 0;
  border: 0;
  padding: 7px 0;
}
button:disabled {
  cursor: not-allowed;
  opacity: 0.45;
  transform: none !important;
}
.full {
  width: 100%;
}
.stat-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
  display: grid;
}
.stat-card {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 17px;
  align-items: center;
  gap: 16px;
  min-height: 132px;
  padding: 20px;
  display: flex;
  box-shadow: 0 5px 18px #1f2b4c0a;
}
.stat-card > span {
  border-radius: 14px;
  place-items: center;
  width: 48px;
  height: 48px;
  font-size: var(--cp-fs-11px, 11px);
  font-weight: 850;
  display: grid;
}
.stat-card.blue > span {
  background: var(--blue-soft);
  color: var(--blue);
}
.stat-card.violet > span {
  color: var(--violet);
  background: #f4edff;
}
.stat-card.amber > span {
  color: var(--amber);
  background: #fff2e8;
}
.stat-card.green > span {
  color: var(--green);
  background: #e9f8f2;
}
.stat-card small,
.stat-card strong,
.stat-card p {
  display: block;
}
.stat-card small {
  color: var(--muted);
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 700;
}
.stat-card strong {
  letter-spacing: -0.02em;
  margin-top: 3px;
  font-size: var(--cp-fs-24px, 24px);
}
.stat-card p {
  color: #8b93a4;
  margin: 3px 0 0;
  font-size: var(--cp-fs-9px, 9px);
}
.dashboard-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  display: grid;
}
.panel {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 18px;
  box-shadow: 0 7px 24px #1f2b4c0b;
}
.span-2 {
  grid-column: span 2;
}
.panel-header {
  justify-content: space-between;
  align-items: flex-start;
  gap: 20px;
  padding: 20px 22px 15px;
  display: flex;
}
.panel-header h2 {
  letter-spacing: -0.02em;
  margin: 0;
  font-size: var(--cp-fs-17px, 17px);
}
.panel-header p:not(.eyebrow) {
  color: var(--muted);
  margin: 5px 0 0;
  font-size: var(--cp-fs-11px, 11px);
}
.agenda-list {
  padding: 0 22px 18px;
}
.agenda-item {
  border-top: 1px solid #eef0f4;
  grid-template-columns: 54px 4px 1fr auto;
  align-items: center;
  gap: 13px;
  padding: 13px 0;
  display: grid;
}
.date-tile {
  background: #f3f5f9;
  border-radius: 11px;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 48px;
  display: flex;
}
.date-tile span {
  color: var(--muted);
  text-transform: uppercase;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.date-tile b {
  margin-top: 2px;
  font-size: var(--cp-fs-12px, 12px);
}
.agenda-item > i {
  border-radius: 3px;
  width: 4px;
  height: 37px;
}
.agenda-item strong {
  font-size: var(--cp-fs-12px, 12px);
}
.agenda-item p {
  color: var(--muted);
  margin: 4px 0 0;
  font-size: var(--cp-fs-10px, 10px);
}
.agenda-item > button {
  border: 1px solid var(--line);
  cursor: pointer;
  background: #fff;
  border-radius: 8px;
  padding: 7px 10px;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 700;
}
.class-hero {
  color: #fff;
  border-radius: 14px;
  margin: 0 20px 16px;
  padding: 19px;
  position: relative;
  overflow: hidden;
}
.class-hero:after {
  content: "";
  border: 20px solid #ffffff1c;
  border-radius: 50%;
  width: 110px;
  height: 110px;
  position: absolute;
  top: -46px;
  right: -38px;
}
.class-hero b,
.class-hero span,
.class-hero small {
  z-index: 1;
  display: block;
  position: relative;
}
.class-hero b {
  font-size: var(--cp-fs-25px, 25px);
}
.class-hero span {
  margin-top: 3px;
  font-size: var(--cp-fs-12px, 12px);
  font-weight: 700;
}
.class-hero small {
  color: #ffffffc2;
  margin-top: 13px;
  font-size: var(--cp-fs-9px, 9px);
}
.mini-metrics {
  grid-template-columns: repeat(3, 1fr);
  margin: 0 20px 16px;
  display: grid;
}
.mini-metrics div {
  text-align: center;
  border-right: 1px solid var(--line);
  padding: 5px 8px;
}
.mini-metrics div:last-child {
  border: 0;
}
.mini-metrics b,
.mini-metrics span {
  display: block;
}
.mini-metrics b {
  font-size: var(--cp-fs-17px, 17px);
}
.mini-metrics span {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-8px, 8px);
  line-height: 1.3;
}
.panel > .full {
  width: calc(100% - 40px);
  margin: 0 20px 20px;
}
.project-strip {
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  padding: 0 22px 22px;
  display: grid;
}
.project-card {
  border: 1px solid var(--line);
  text-align: left;
  cursor: pointer;
  background: #fff;
  border-radius: 13px;
  grid-template-columns: 40px 1fr;
  gap: 11px;
  padding: 14px;
  display: grid;
}
.project-card:hover {
  border-color: #bec9ee;
  box-shadow: 0 8px 20px #1f2b4c0f;
}
.project-icon {
  background: var(--blue-soft);
  width: 40px;
  height: 40px;
  color: var(--blue);
  border-radius: 11px;
  place-items: center;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 850;
  display: grid;
}
.project-card strong {
  font-size: var(--cp-fs-11px, 11px);
  line-height: 1.35;
  display: block;
}
.project-card p,
.project-card small {
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
}
.project-card p {
  margin: 3px 0 8px;
}
.project-card small {
  margin-top: 5px;
  display: block;
}
.progress,
.micro-progress {
  background: #eef1f5;
  border-radius: 5px;
  height: 5px;
  overflow: hidden;
}
.progress i,
.micro-progress i {
  border-radius: inherit;
  background: var(--blue);
  height: 100%;
  display: block;
}
.quick-list {
  flex-direction: column;
  gap: 8px;
  padding: 2px 20px 20px;
  display: flex;
}
.quick-list button {
  border: 1px solid var(--line);
  text-align: left;
  cursor: pointer;
  background: #fff;
  border-radius: 10px;
  align-items: center;
  gap: 10px;
  padding: 10px;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 700;
  display: flex;
}
.quick-list button span {
  width: 27px;
  height: 27px;
  color: var(--blue);
  background: #f0f3fa;
  border-radius: 8px;
  place-items: center;
  font-size: var(--cp-fs-14px, 14px);
  display: grid;
}
.class-tabs,
.rubric-tabs,
.project-tabs {
  scrollbar-width: thin;
  gap: 10px;
  margin-bottom: 7px;
  padding: 2px 1px 14px;
  display: flex;
  overflow-x: auto;
}
.class-tabs button {
  border: 1px solid var(--line);
  cursor: pointer;
  background: #fff;
  border-radius: 11px;
  align-items: center;
  gap: 8px;
  min-width: 114px;
  padding: 11px 13px;
  font-size: var(--cp-fs-11px, 11px);
  font-weight: 750;
  display: flex;
}
.class-tabs button.active {
  border-color: var(--blue);
  box-shadow: 0 0 0 2px #3157d51a;
}
.class-tabs i {
  border-radius: 50%;
  width: 8px;
  height: 8px;
}
.class-tabs small {
  color: var(--muted);
  margin-left: auto;
}
.class-summary {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 16px;
  align-items: center;
  gap: 16px;
  margin-bottom: 17px;
  padding: 18px 21px;
  display: flex;
}
.class-badge {
  color: #fff;
  border-radius: 13px;
  place-items: center;
  min-width: 68px;
  height: 58px;
  font-size: var(--cp-fs-20px, 20px);
  font-weight: 850;
  display: grid;
}
.class-summary h2 {
  margin: 0;
  font-size: var(--cp-fs-18px, 18px);
}
.class-summary p {
  color: var(--muted);
  margin: 5px 0 0;
  font-size: var(--cp-fs-11px, 11px);
}
.summary-numbers {
  gap: 20px;
  margin-left: auto;
  display: flex;
}
.summary-numbers span {
  color: var(--muted);
  font-size: var(--cp-fs-10px, 10px);
}
.summary-numbers b {
  color: var(--ink);
  font-size: var(--cp-fs-15px, 15px);
}
.table-panel {
  overflow: hidden;
}
.table-tools {
  border-bottom: 1px solid var(--line);
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 20px 22px;
  display: flex;
}
.table-tools h2 {
  margin: 0;
  font-size: var(--cp-fs-17px, 17px);
}
.table-tools p {
  color: var(--muted);
  margin: 5px 0 0;
  font-size: var(--cp-fs-10px, 10px);
}
.search {
  border: 1px solid var(--line);
  background: #fafbfc;
  border-radius: 10px;
  align-items: center;
  gap: 8px;
  min-width: 240px;
  padding: 9px 11px;
  display: flex;
}
.search span {
  color: var(--muted);
}
.search input {
  background: 0 0;
  border: 0;
  outline: 0;
  width: 100%;
  font-size: var(--cp-fs-11px, 11px);
}
.table-scroll {
  overflow-x: auto;
}
table {
  border-collapse: collapse;
  width: 100%;
}
th {
  color: #7d8698;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: left;
  white-space: nowrap;
  background: #f7f8fb;
  padding: 11px 14px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 800;
}
td {
  vertical-align: middle;
  border-top: 1px solid #edf0f4;
  padding: 12px 14px;
  font-size: var(--cp-fs-11px, 11px);
}
tbody tr:hover {
  background: #fbfcff;
}
.number-cell {
  width: 52px;
  color: var(--muted);
  font-weight: 700;
}
.student-name {
  align-items: center;
  gap: 10px;
  min-width: 160px;
  display: flex;
}
.student-name > span,
.student-name > img {
  border-radius: 10px;
  flex: none;
  width: 34px;
  height: 34px;
}
.student-name > span {
  background: var(--blue-soft);
  color: var(--blue);
  place-items: center;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 850;
  display: grid;
}
.student-name > img {
  width: 30px;
  height: 38px;
  object-fit: contain;
  object-position: center;
  background: var(--soft);
  border: 1px solid var(--line);
}
.student-name strong,
.student-name small {
  display: block;
}
.student-name strong {
  font-size: var(--cp-fs-11px, 11px);
}
.student-name small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-8px, 8px);
}
.gender-cell {
  min-width: 86px;
}
.gender-toggle {
  background: #eef1f6;
  border: 1px solid #e0e4ec;
  border-radius: 9px;
  grid-template-columns: repeat(2, 32px);
  gap: 2px;
  width: max-content;
  padding: 2px;
  display: grid;
}
.gender-toggle button {
  color: #737d91;
  cursor: pointer;
  background: transparent;
  border: 0;
  border-radius: 6px;
  height: 27px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 850;
}
.gender-toggle button:hover {
  color: var(--blue);
  background: #fff;
}
.gender-toggle button.selected {
  color: #fff;
  background: var(--blue);
  box-shadow: 0 2px 6px #3157d52e;
}
.tag {
  border-radius: 7px;
  padding: 5px 7px;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 800;
  display: inline-block;
}
.tag.purple {
  color: var(--violet);
  background: #f3edff;
}
.muted {
  color: #9ca4b2;
}
.notes-cell {
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 310px;
  color: var(--muted);
  overflow: hidden;
}
.row-button {
  border: 1px solid var(--line);
  color: var(--blue);
  white-space: nowrap;
  cursor: pointer;
  background: #fff;
  border-radius: 8px;
  padding: 7px 10px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.lesson-layout {
  grid-template-columns: minmax(0, 1.9fr) minmax(250px, 0.6fr);
  gap: 18px;
  display: grid;
}
.lesson-list {
  overflow: hidden;
}
.lesson-card {
  border-top: 1px solid var(--line);
  grid-template-columns: 52px 1fr;
  gap: 16px;
  padding: 18px 22px;
  display: grid;
}
.lesson-date {
  background: #f2f4f8;
  border-radius: 12px;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 52px;
  height: 58px;
  display: flex;
}
.lesson-date b {
  font-size: var(--cp-fs-20px, 20px);
}
.lesson-date span {
  color: var(--muted);
  text-transform: uppercase;
  font-size: var(--cp-fs-9px, 9px);
}
.lesson-meta {
  align-items: center;
  gap: 8px;
  display: flex;
}
.lesson-meta span {
  color: #fff;
  border-radius: 6px;
  padding: 4px 7px;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 800;
}
.lesson-meta small {
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
}
.lesson-main h3 {
  max-width: 800px;
  margin: 10px 0 5px;
  font-size: var(--cp-fs-13px, 13px);
  line-height: 1.5;
}
.lesson-main > p {
  color: var(--muted);
  margin: 0;
  font-size: var(--cp-fs-10px, 10px);
}
.attendance-summary {
  gap: 8px;
  margin-top: 13px;
  display: flex;
}
.attendance-summary span {
  border-radius: 6px;
  padding: 4px 7px;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 750;
}
.attendance-summary .ok {
  color: var(--green);
  background: #eaf8f3;
}
.attendance-summary .danger {
  color: var(--red);
  background: #fff0f2;
}
.attendance-summary .warn {
  color: var(--amber);
  background: #fff4e9;
}
.lesson-side {
  height: max-content;
  padding: 22px;
  position: sticky;
  top: 98px;
}
.lesson-side h2 {
  margin: 0;
  font-size: var(--cp-fs-24px, 24px);
}
.ring {
  border: 14px solid #edf1ff;
  border-top-color: var(--blue);
  border-radius: 50%;
  place-items: center;
  width: 150px;
  height: 150px;
  margin: 25px auto;
  display: grid;
}
.ring div {
  text-align: center;
}
.ring b,
.ring span {
  display: block;
}
.ring b {
  font-size: var(--cp-fs-29px, 29px);
}
.ring span {
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
}
.legend {
  border-top: 1px solid var(--line);
  padding-top: 12px;
}
.legend p {
  color: var(--muted);
  align-items: center;
  gap: 8px;
  font-size: var(--cp-fs-10px, 10px);
  display: flex;
}
.legend i {
  border-radius: 50%;
  width: 8px;
  height: 8px;
}
.green-dot {
  background: var(--green);
}
.red-dot {
  background: var(--red);
}
.amber-dot {
  background: var(--amber);
}
.project-tabs button,
.rubric-tabs button {
  border: 1px solid var(--line);
  cursor: pointer;
  text-align: left;
  background: #fff;
  border-radius: 12px;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  min-width: 220px;
  padding: 13px 15px;
  display: flex;
}
.project-tabs button.active,
.rubric-tabs button.active {
  border-color: var(--blue);
  background: #f8faff;
  box-shadow: 0 0 0 2px #3157d514;
}
.project-tabs span,
.rubric-tabs span {
  color: var(--blue);
  letter-spacing: 0.06em;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 850;
}
.project-tabs strong,
.rubric-tabs strong {
  font-size: var(--cp-fs-11px, 11px);
}
.project-tabs small,
.rubric-tabs small {
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
}
.assessment-panel,
.rubric-panel {
  overflow: hidden;
}
.assessment-header,
.rubric-header {
  border-bottom: 1px solid var(--line);
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 24px;
  display: flex;
}
.assessment-header h2,
.rubric-header h2 {
  letter-spacing: -0.02em;
  margin: 0;
  font-size: var(--cp-fs-22px, 22px);
}
.assessment-header > div > p:last-child,
.rubric-header > div > p:last-child {
  color: var(--muted);
  margin: 6px 0 0;
  font-size: var(--cp-fs-10px, 10px);
}
.rubric-actions {
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 7px;
  display: flex;
}
.criteria-count {
  background: var(--blue-soft);
  text-align: center;
  border-radius: 12px;
  min-width: 88px;
  padding: 12px;
}
.criteria-count b,
.criteria-count span {
  display: block;
}
.criteria-count b {
  color: var(--blue);
  font-size: var(--cp-fs-22px, 22px);
}
.criteria-count span {
  color: #6e7aa2;
  font-size: var(--cp-fs-8px, 8px);
}
.assessment-table .micro-progress {
  vertical-align: middle;
  width: 90px;
  margin-right: 8px;
  display: inline-block;
}
.assessment-table td > small {
  color: var(--muted);
  font-size: var(--cp-fs-8px, 8px);
}
.level {
  border-radius: 8px;
  place-items: center;
  width: 27px;
  height: 27px;
  font-weight: 850;
  display: grid;
}
.level-5 {
  color: #08795a;
  background: #e4f6ef;
}
.level-4 {
  color: var(--blue);
  background: #edf1ff;
}
.level-3 {
  color: #997018;
  background: #fff5d9;
}
.level-2,
.level-1 {
  color: var(--red);
  background: #ffeaed;
}
.rubric-domain-list {
  flex-direction: column;
  gap: 26px;
  padding: 24px;
  display: flex;
}
.rubric-domain-list > section > header {
  align-items: center;
  gap: 12px;
  margin-bottom: 10px;
  display: flex;
}
.rubric-domain-list > section > header > span {
  width: 34px;
  height: 34px;
  color: var(--blue);
  background: #eef1f7;
  border-radius: 9px;
  place-items: center;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 850;
  display: grid;
}
.rubric-domain-list h3 {
  margin: 0;
  font-size: var(--cp-fs-14px, 14px);
}
.rubric-domain-list header p {
  color: var(--muted);
  margin: 3px 0 0;
  font-size: var(--cp-fs-9px, 9px);
}
.criterion-list {
  flex-direction: column;
  gap: 7px;
  margin-left: 46px;
  display: flex;
}
.criterion-list details {
  border: 1px solid var(--line);
  border-radius: 11px;
  overflow: hidden;
}
.criterion-list summary {
  cursor: pointer;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  list-style: none;
  display: flex;
}
.criterion-list summary::-webkit-details-marker {
  display: none;
}
.criterion-list summary strong,
.criterion-list summary small {
  display: block;
}
.criterion-list summary strong {
  text-transform: uppercase;
  font-size: var(--cp-fs-10px, 10px);
}
.criterion-list summary small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-8px, 8px);
}
.criterion-list summary > span {
  color: var(--blue);
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.descriptor-grid {
  background: #f8f9fb;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  padding: 12px;
  display: grid;
}
.descriptor {
  border-left: 3px solid var(--blue);
  background: #fff;
  border-radius: 9px;
  padding: 12px;
}
.descriptor.bom {
  border-color: var(--green);
}
.descriptor.suficiente {
  border-color: var(--amber);
}
.descriptor.insuficiente {
  border-color: var(--red);
}
.descriptor b {
  text-transform: uppercase;
  font-size: var(--cp-fs-8px, 8px);
}
.descriptor p {
  color: #596174;
  margin: 6px 0 0;
  font-size: var(--cp-fs-9px, 9px);
  line-height: 1.45;
}
.schedule {
  padding: 18px;
  overflow-x: auto;
}
.schedule-grid {
  border: 1px solid var(--line);
  border-radius: 13px;
  grid-template-columns: 78px repeat(5, minmax(150px, 1fr));
  min-width: 920px;
  display: grid;
  overflow: hidden;
}
.schedule-corner,
.schedule-day {
  color: #667085;
  text-transform: uppercase;
  text-align: center;
  background: #f3f5f9;
  padding: 13px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 850;
}
.schedule-day {
  border-left: 1px solid var(--line);
}
.schedule-row {
  border-top: 1px solid var(--line);
  grid-column: 1/-1;
  grid-template-columns: 78px repeat(5, minmax(150px, 1fr));
  min-height: 80px;
  display: grid;
}
.schedule-time {
  color: var(--muted);
  text-align: center;
  background: #fafbfc;
  padding: 14px 8px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.schedule-cell {
  border-left: 1px solid var(--line);
  padding: 6px;
}
.schedule-cell article {
  border-left: 3px solid;
  border-radius: 8px;
  padding: 9px;
}
.schedule-cell strong,
.schedule-cell span,
.schedule-cell small {
  display: block;
}
.schedule-cell strong {
  font-size: var(--cp-fs-10px, 10px);
}
.schedule-cell span {
  margin-top: 2px;
  font-size: var(--cp-fs-8px, 8px);
}
.schedule-cell small {
  color: var(--muted);
  margin-top: 5px;
  font-size: var(--cp-fs-8px, 8px);
}
.meeting-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  display: grid;
}
.meeting-card {
  grid-template-columns: 60px 1fr;
  gap: 17px;
  padding: 20px;
  display: grid;
}
.meeting-date {
  background: var(--blue-soft);
  height: 68px;
  color: var(--blue);
  border-radius: 13px;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  display: flex;
}
.meeting-date b {
  font-size: var(--cp-fs-23px, 23px);
}
.meeting-date span {
  text-transform: uppercase;
  font-size: var(--cp-fs-9px, 9px);
}
.meeting-top {
  align-items: center;
  gap: 8px;
  display: flex;
}
.meeting-top span {
  border-radius: 6px;
  padding: 4px 7px;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 800;
}
.meeting-top small {
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
}
.meeting-card h2 {
  margin: 10px 0 7px;
  font-size: var(--cp-fs-15px, 15px);
}
.meeting-card p {
  color: var(--muted);
  margin: 0;
  font-size: var(--cp-fs-10px, 10px);
  line-height: 1.55;
}
.status-badge {
  color: var(--muted);
  text-transform: uppercase;
  background: #eef0f4;
  border-radius: 8px;
  padding: 7px 10px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 800;
}
.status-badge.success {
  color: var(--green);
  background: #e7f7f1;
}
.status-badge.error {
  color: var(--red);
  background: #fff0f2;
}
.status-badge.syncing {
  background: var(--blue-soft);
  color: var(--blue);
}
.sync-layout {
  grid-template-columns: minmax(0, 1.5fr) minmax(280px, 0.7fr);
  gap: 18px;
  display: grid;
}
.sync-main,
.backup-panel {
  padding: 26px;
}
.drive-hero {
  border-bottom: 1px solid var(--line);
  align-items: center;
  gap: 18px;
  padding-bottom: 23px;
  display: flex;
}
.drive-mark {
  flex: none;
  width: 64px;
  height: 58px;
  position: relative;
}
.drive-mark i {
  border-radius: 3px;
  width: 12px;
  height: 48px;
  position: absolute;
}
.drive-mark .d1 {
  background: #2aa65a;
  top: 4px;
  left: 16px;
  transform: rotate(30deg);
}
.drive-mark .d2 {
  background: #f2ba24;
  top: 4px;
  right: 15px;
  transform: rotate(-30deg);
}
.drive-mark .d3 {
  background: #3982ef;
  width: 42px;
  height: 12px;
  bottom: 4px;
  left: 11px;
}
.drive-hero h2 {
  margin: 0;
  font-size: var(--cp-fs-19px, 19px);
}
.drive-hero > div > p:last-child {
  color: var(--muted);
  margin: 6px 0 0;
  font-size: var(--cp-fs-10px, 10px);
  line-height: 1.5;
}
.sync-feedback {
  color: #697285;
  background: #f4f5f8;
  border-radius: 10px;
  align-items: center;
  gap: 10px;
  margin: 20px 0;
  padding: 12px 14px;
  display: flex;
}
.sync-feedback span {
  background: #fff;
  border-radius: 50%;
  place-items: center;
  width: 24px;
  height: 24px;
  font-size: var(--cp-fs-11px, 11px);
  font-weight: 850;
  display: grid;
}
.sync-feedback p {
  margin: 0;
  font-size: var(--cp-fs-10px, 10px);
}
.sync-feedback.success {
  color: var(--green);
  background: #e9f8f2;
}
.sync-feedback.error {
  color: var(--red);
  background: #fff0f2;
}
.sync-feedback.syncing {
  background: var(--blue-soft);
  color: var(--blue);
}
.sync-feedback.pending {
  background: #fff7e7;
  color: #9a650d;
}
.sync-actions {
  justify-content: flex-end;
  gap: 9px;
  margin-top: 20px;
  display: flex;
}
.backup-panel > h2 {
  margin: 0;
  font-size: var(--cp-fs-19px, 19px);
}
.backup-panel > p:not(.eyebrow) {
  color: var(--muted);
  font-size: var(--cp-fs-10px, 10px);
  line-height: 1.55;
}
.backup-actions {
  flex-direction: column;
  gap: 9px;
  margin: 18px 0;
  display: flex;
}
.backup-actions button {
  border: 1px solid var(--line);
  text-align: left;
  cursor: pointer;
  background: #fff;
  border-radius: 11px;
  align-items: center;
  gap: 11px;
  padding: 12px;
  display: flex;
}
.backup-actions button > span {
  background: var(--blue-soft);
  width: 33px;
  height: 33px;
  color: var(--blue);
  border-radius: 9px;
  place-items: center;
  font-size: var(--cp-fs-16px, 16px);
  display: grid;
}
.backup-actions b,
.backup-actions small {
  display: block;
}
.backup-actions b {
  font-size: var(--cp-fs-10px, 10px);
}
.backup-actions small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-8px, 8px);
}
.security-note {
  background: #f7f8fa;
  border-radius: 11px;
  padding: 14px;
}
.security-note b {
  font-size: var(--cp-fs-10px, 10px);
}
.security-note ol {
  color: var(--muted);
  margin: 9px 0 0;
  padding-left: 17px;
  font-size: var(--cp-fs-9px, 9px);
  line-height: 1.7;
}
.security-note code {
  color: var(--blue);
}
.empty {
  text-align: center;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  min-height: 190px;
  padding: 35px;
  display: flex;
}
.empty-mark {
  background: var(--blue-soft);
  width: 42px;
  height: 42px;
  color: var(--blue);
  border-radius: 13px;
  place-items: center;
  font-size: var(--cp-fs-20px, 20px);
  display: grid;
}
.empty h3 {
  margin: 13px 0 5px;
  font-size: var(--cp-fs-15px, 15px);
}
.empty p {
  color: var(--muted);
  margin: 0 0 15px;
  font-size: var(--cp-fs-10px, 10px);
}
.modal-backdrop {
  z-index: 100;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  background: #0f16259e;
  place-items: center;
  padding: 32px;
  display: grid;
  position: fixed;
  inset: 0;
}
.modal {
  background: #fff;
  border-radius: 19px;
  width: min(590px, 100%);
  max-height: calc(100vh - 64px);
  overflow-y: auto;
  box-shadow: 0 28px 80px #090f1e4d;
}
.modal-wide {
  width: min(1050px, 100%);
}
.modal-header {
  border-bottom: 1px solid var(--line);
  z-index: 5;
  background: #fffffff7;
  justify-content: space-between;
  align-items: flex-start;
  gap: 20px;
  padding: 21px 24px;
  display: flex;
  position: sticky;
  top: 0;
}
.modal-header h2 {
  margin: 0;
  font-size: var(--cp-fs-19px, 19px);
}
.modal-header p {
  color: var(--muted);
  margin: 5px 0 0;
  font-size: var(--cp-fs-10px, 10px);
}
.icon-button {
  border: 1px solid var(--line);
  width: 32px;
  height: 32px;
  color: var(--muted);
  cursor: pointer;
  background: #fff;
  border-radius: 9px;
  font-size: var(--cp-fs-20px, 20px);
}
.modal-body {
  padding: 23px 24px 0;
}
.form-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  display: grid;
}
.field {
  flex-direction: column;
  gap: 6px;
  display: flex;
}
.field > span {
  color: #596174;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 800;
}
.field input,
.field select,
.field textarea {
  width: 100%;
  color: var(--ink);
  background: #fff;
  border: 1px solid #dce1ea;
  border-radius: 9px;
  outline: none;
  padding: 10px 11px;
  font-size: var(--cp-fs-11px, 11px);
}
.field textarea {
  resize: vertical;
  line-height: 1.5;
}
.field input:focus,
.field select:focus,
.field textarea:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px #3157d514;
}
.field small {
  color: var(--muted);
  font-size: var(--cp-fs-8px, 8px);
  line-height: 1.45;
}
.field.span-2,
.toggle-row.span-2 {
  grid-column: span 2;
}
.check-field {
  border: 1px solid var(--line);
  border-radius: 9px;
  align-items: center;
  gap: 8px;
  min-height: 41px;
  padding: 10px 12px;
  font-size: var(--cp-fs-10px, 10px);
  display: flex;
}
.check-field input,
.toggle-row input {
  accent-color: var(--blue);
}
.modal-footer {
  border-top: 1px solid var(--line);
  justify-content: space-between;
  align-items: center;
  gap: 9px;
  margin-top: 22px;
  padding: 17px 0 20px;
  display: flex;
}
.modal-footer > div {
  gap: 9px;
  display: flex;
}
.modal-footer.sticky {
  z-index: 4;
  background: #fffffff7;
  margin-left: -24px;
  margin-right: -24px;
  padding-left: 24px;
  padding-right: 24px;
  position: sticky;
  bottom: 0;
}
.modal-note {
  background: var(--blue-soft);
  border-radius: 10px;
  margin-top: 16px;
  padding: 13px;
}
.modal-note b {
  color: var(--blue);
  font-size: var(--cp-fs-10px, 10px);
}
.modal-note p {
  color: #586587;
  margin: 5px 0 0;
  font-size: var(--cp-fs-9px, 9px);
  line-height: 1.5;
}
.student-photo-edit {
  align-items: center;
  gap: 12px;
  margin-bottom: 18px;
  display: flex;
}
.student-photo-edit > div {
  background: var(--blue-soft);
  width: 54px;
  height: 68px;
  color: var(--blue);
  border-radius: 13px;
  place-items: center;
  font-weight: 850;
  display: grid;
  overflow: hidden;
}
.student-photo-edit img {
  object-fit: contain;
  object-position: center;
  width: 100%;
  height: 100%;
}
.student-photo-edit label {
  border: 1px solid var(--line);
  cursor: pointer;
  border-radius: 8px;
  padding: 8px 10px;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.student-importer {
  padding-bottom: 0;
}
.import-method-tabs {
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  display: grid;
}
.import-method-tabs button {
  border: 1px solid var(--line);
  color: var(--ink);
  text-align: left;
  cursor: pointer;
  background: #fff;
  border-radius: 12px;
  align-items: center;
  gap: 11px;
  padding: 14px;
  display: flex;
}
.import-method-tabs button > span {
  width: 30px;
  height: 30px;
  color: var(--muted);
  background: #f0f2f7;
  border-radius: 9px;
  flex: none;
  place-items: center;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 850;
  display: grid;
}
.import-method-tabs b,
.import-method-tabs small {
  display: block;
}
.import-method-tabs b {
  font-size: var(--cp-fs-11px, 11px);
}
.import-method-tabs small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-8px, 8px);
}
.import-method-tabs button.active {
  border-color: var(--blue);
  background: #f8faff;
  box-shadow: 0 0 0 2px #3157d514;
}
.import-method-tabs button.active > span {
  background: var(--blue);
  color: #fff;
}
.import-source-panel {
  border: 1px solid var(--line);
  background: #fafbfc;
  border-radius: 13px;
  margin-top: 14px;
  padding: 17px;
}
.import-source-panel > div:first-child h3 {
  margin: 0;
  font-size: var(--cp-fs-13px, 13px);
}
.import-source-panel > div:first-child p {
  color: var(--muted);
  margin: 5px 0 14px;
  font-size: var(--cp-fs-9px, 9px);
  line-height: 1.5;
}
.import-source-panel > .secondary {
  margin-top: 12px;
}
.import-file-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  display: grid;
}
.import-file {
  cursor: pointer;
  background: #fff;
  border: 1px dashed #c7cedb;
  border-radius: 11px;
  width: 100%;
  color: inherit;
  text-align: left;
  grid-template-columns: 42px 1fr;
  align-items: center;
  gap: 11px;
  min-height: 76px;
  padding: 13px;
  display: grid;
}
.import-file > span {
  background: var(--blue-soft);
  width: 42px;
  height: 42px;
  color: var(--blue);
  border-radius: 10px;
  place-items: center;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 850;
  display: grid;
}
.import-file b,
.import-file small {
  display: block;
}
.import-file b {
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 330px;
  font-size: var(--cp-fs-10px, 10px);
  overflow: hidden;
}
.import-file small {
  color: var(--muted);
  margin-top: 4px;
  font-size: var(--cp-fs-8px, 8px);
  line-height: 1.4;
}
.import-file input {
  grid-column: 1/-1;
  width: 100%;
  font-size: var(--cp-fs-9px, 9px);
}
.import-file.ready {
  background: #f6fcfa;
  border-style: solid;
  border-color: #8fd3bc;
}
.import-file.ready > span {
  color: var(--green);
  background: #e4f6ef;
}
.import-feedback {
  color: #7d531b;
  background: #fff3e7;
  border-radius: 10px;
  align-items: center;
  gap: 9px;
  margin-top: 12px;
  padding: 11px 13px;
  display: flex;
}
.import-feedback.success {
  color: #08795a;
  background: #eaf8f3;
}
.import-feedback > span {
  background: #ffffffb8;
  border-radius: 7px;
  flex: none;
  place-items: center;
  width: 23px;
  height: 23px;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 850;
  display: grid;
}
.import-feedback p {
  margin: 0;
  font-size: var(--cp-fs-9px, 9px);
  line-height: 1.45;
}
.import-preview {
  border: 1px solid var(--line);
  border-radius: 13px;
  margin-top: 15px;
  overflow: hidden;
}
.import-preview > header {
  background: #f8f9fb;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
  padding: 14px 16px;
  display: flex;
}
.import-preview h3 {
  margin: 0;
  font-size: var(--cp-fs-13px, 13px);
}
.import-preview > header > div:last-child {
  color: var(--muted);
  grid-template-columns: auto auto auto auto;
  align-items: baseline;
  gap: 4px 7px;
  font-size: var(--cp-fs-8px, 8px);
  display: grid;
}
.import-preview > header > div:last-child b {
  color: var(--ink);
  font-size: var(--cp-fs-14px, 14px);
}
.import-preview .table-scroll {
  max-height: 330px;
  overflow: auto;
}
.import-preview td {
  padding: 8px;
}
.import-preview tr.excluded {
  opacity: 0.45;
}
.import-preview tr.gender-missing td { background:color-mix(in srgb, var(--amber) 8%, var(--surface)); }
.import-preview tr.gender-missing .gender-cell { box-shadow:inset 3px 0 0 color-mix(in srgb, var(--amber) 72%, transparent); }
.import-preview input[type="checkbox"] {
  accent-color: var(--blue);
}
.import-photo {
  background: var(--blue-soft);
  width: 38px;
  height: 46px;
  color: var(--blue);
  border-radius: 8px;
  place-items: center;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 850;
  display: grid;
  overflow: hidden;
}
.import-photo img {
  object-fit: contain;
  object-position: center;
  width: 100%;
  height: 100%;
}
.table-input {
  color: var(--ink);
  background: #fff;
  border: 1px solid #dce1ea;
  border-radius: 7px;
  outline: none;
  padding: 7px 8px;
  font-size: var(--cp-fs-9px, 9px);
}
.table-input:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 2px #3157d514;
}
.table-input.number {
  width: 58px;
}
.table-input.name {
  width: 210px;
}
.table-input.date {
  width: 126px;
}
.table-input.process {
  width: 90px;
}
.table-input.support {
  width: 52px;
}
.attendance-editor {
  border: 1px solid var(--line);
  border-radius: 12px;
  margin-top: 18px;
  overflow: hidden;
}
.attendance-editor > header {
  background: #f7f8fa;
  justify-content: space-between;
  align-items: center;
  padding: 13px 15px;
  display: flex;
}
.attendance-editor h3 {
  margin: 0;
  font-size: var(--cp-fs-13px, 13px);
}
.attendance-editor header p {
  color: var(--muted);
  margin: 3px 0 0;
  font-size: var(--cp-fs-8px, 8px);
}
.attendance-legend {
  gap: 5px;
  display: flex;
}
.attendance-legend span {
  color: var(--muted);
  background: #fff;
  border-radius: 5px;
  padding: 4px 6px;
  font-size: var(--cp-fs-7px, 7px);
}
.attendance-grid {
  grid-template-columns: repeat(2, 1fr);
  max-height: 290px;
  display: grid;
  overflow-y: auto;
}
.attendance-person {
  border-top: 1px solid var(--line);
  border-right: 1px solid var(--line);
  grid-template-columns: 23px 1fr auto;
  align-items: center;
  gap: 7px;
  padding: 9px 12px;
  display: grid;
}
.attendance-person > span {
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
}
.attendance-person > strong {
  font-size: var(--cp-fs-9px, 9px);
}
.attendance-person > div {
  gap: 3px;
  display: flex;
}
.attendance-person button {
  border: 1px solid var(--line);
  cursor: pointer;
  background: #fff;
  border-radius: 6px;
  width: 25px;
  height: 25px;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 850;
}
.attendance-person button.selected.present {
  color: var(--green);
  background: #def4eb;
  border-color: #9ddcc5;
}
.attendance-person button.selected.absent {
  color: var(--red);
  background: #ffe7ea;
  border-color: #f2aab2;
}
.attendance-person button.selected.late {
  color: var(--amber);
  background: #fff0dc;
  border-color: #edc28e;
}
.rubric-builder {
  padding-bottom: 0;
}
.builder-layout {
  grid-template-columns: minmax(260px, 0.75fr) minmax(0, 1.5fr);
  gap: 18px;
  margin-top: 20px;
  display: grid;
}
.builder-layout > aside,
.builder-layout > section {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.builder-layout > aside > h3,
.builder-layout > aside > p,
.builder-layout > section > h3,
.builder-layout > section > p {
  margin-left: 15px;
  margin-right: 15px;
}
.builder-layout h3 {
  margin-top: 15px;
  margin-bottom: 3px;
  font-size: var(--cp-fs-12px, 12px);
}
.builder-layout > aside > p,
.builder-layout > section > p {
  color: var(--muted);
  margin-top: 0;
  font-size: var(--cp-fs-8px, 8px);
}
.builder-section-heading {
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  min-height: 76px;
  padding: 12px 15px;
  display: flex;
}
.builder-section-heading h3,
.builder-section-heading p {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.builder-section-heading h3 {
  margin-top: 0;
}
.builder-section-heading p {
  margin-bottom: 0;
}
.rubric-total {
  text-align: right;
  background: #f7f8fb;
  border: 1px solid #dfe4ef;
  border-radius: 10px;
  min-width: 126px;
  padding: 9px 11px;
}
.rubric-total span,
.rubric-total b,
.rubric-total small {
  display: block;
}
.rubric-total span {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: var(--cp-fs-7px, 7px);
}
.rubric-total b {
  margin-top: 2px;
  font-size: var(--cp-fs-15px, 15px);
}
.rubric-total small {
  color: var(--muted);
  margin-top: 2px;
  font-size: var(--cp-fs-7px, 7px);
}
.rubric-total.valid {
  background: #effaf5;
  border-color: #a9dec9;
}
.rubric-total.valid b,
.rubric-total.valid small {
  color: var(--green);
}
.rubric-total.over {
  background: #fff3f4;
  border-color: #efb2b8;
}
.rubric-total.over b,
.rubric-total.over small {
  color: var(--red);
}
.criterion-picker,
.selected-criteria {
  border-top: 1px solid var(--line);
  max-height: 480px;
  overflow-y: auto;
}
.criterion-picker > label {
  cursor: pointer;
  border-bottom: 1px solid #eef0f4;
  align-items: flex-start;
  gap: 8px;
  padding: 9px 11px;
  display: flex;
}
.criterion-picker > label.selected {
  background: #f5f7ff;
}
.criterion-picker input {
  accent-color: var(--blue);
  margin-top: 2px;
}
.criterion-picker b,
.criterion-picker small {
  display: block;
}
.criterion-picker b {
  font-size: var(--cp-fs-8px, 8px);
  line-height: 1.35;
}
.criterion-picker small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-7px, 7px);
}
.selected-criteria details {
  border-bottom: 1px solid var(--line);
}
.selected-criteria summary {
  cursor: pointer;
  grid-template-columns: 27px 1fr auto;
  align-items: center;
  gap: 9px;
  padding: 10px 12px;
  list-style: none;
  display: grid;
}
.selected-criteria summary > span {
  background: var(--blue-soft);
  width: 27px;
  height: 27px;
  color: var(--blue);
  border-radius: 7px;
  place-items: center;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 850;
  display: grid;
}
.selected-criteria summary b,
.selected-criteria summary small {
  display: block;
}
.selected-criteria summary b {
  font-size: var(--cp-fs-8px, 8px);
}
.selected-criteria summary small {
  color: var(--muted);
  margin-top: 2px;
  font-size: var(--cp-fs-7px, 7px);
}
.selected-criteria summary label {
  color: var(--muted);
  align-items: center;
  gap: 5px;
  font-size: var(--cp-fs-8px, 8px);
  display: flex;
}
.selected-criteria summary input {
  border: 1px solid var(--line);
  border-radius: 6px;
  width: 58px;
  padding: 5px;
}
.descriptor-editor {
  background: #f7f8fa;
  grid-template-columns: repeat(2, 1fr);
  gap: 9px;
  padding: 12px;
  display: grid;
}
.save-requirement {
  color: var(--muted);
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 700;
}
.score-editor {
  padding-top: 17px;
}
.score-summary {
  background: #f5f7fb;
  border-radius: 11px;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  display: flex;
}
.score-summary > div:last-child {
  text-align: right;
}
.score-summary > div:last-child span,
.score-summary > div:last-child b {
  display: block;
}
.score-summary > div:last-child span {
  color: var(--muted);
  font-size: var(--cp-fs-8px, 8px);
}
.score-summary > div:last-child b {
  font-size: var(--cp-fs-16px, 16px);
}
.score-list {
  flex-direction: column;
  gap: 10px;
  margin-top: 14px;
  display: flex;
}
.score-list > article {
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.score-list > article > header {
  background: #fafbfc;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
  padding: 12px 14px;
  display: flex;
}
.score-list small {
  color: var(--muted);
  font-size: var(--cp-fs-7px, 7px);
}
.score-list h3 {
  text-transform: uppercase;
  margin: 4px 0 0;
  font-size: var(--cp-fs-10px, 10px);
}
.chosen {
  background: var(--blue-soft);
  color: var(--blue);
  border-radius: 6px;
  padding: 5px 7px;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 800;
}
.not-delivered-action {
  width: 100%;
  color: var(--ink);
  text-align: left;
  cursor: pointer;
  background: #fff8f8;
  border: 1px solid #e7c6ca;
  border-radius: 11px;
  grid-template-columns: 34px 1fr auto;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
  padding: 11px 13px;
  display: grid;
}
.not-delivered-action > span {
  width: 32px;
  height: 32px;
  color: var(--red);
  background: #ffe7ea;
  border-radius: 9px;
  place-items: center;
  font-weight: 850;
  display: grid;
}
.not-delivered-action b,
.not-delivered-action small {
  display: block;
}
.not-delivered-action b {
  font-size: var(--cp-fs-9px, 9px);
}
.not-delivered-action small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-7px, 7px);
}
.not-delivered-action > strong {
  color: var(--red);
  font-size: var(--cp-fs-8px, 8px);
}
.not-delivered-action.selected {
  background: #fff0f1;
  border-color: #e78f99;
  box-shadow: inset 0 0 0 1px #efabb2;
}
.level-buttons {
  grid-template-columns: repeat(4, 1fr);
  display: grid;
}
.level-buttons button {
  border: 0;
  border-right: 1px solid var(--line);
  text-align: left;
  cursor: pointer;
  background: #fff;
  min-height: 104px;
  padding: 10px;
}
.level-buttons button:last-child {
  border-right: 0;
}
.level-buttons button.selected {
  box-shadow: inset 0 -3px var(--blue);
  background: #edf1ff;
}
.level-buttons b,
.level-buttons em,
.level-buttons span {
  display: block;
}
.level-buttons b {
  font-size: var(--cp-fs-8px, 8px);
}
.level-buttons em {
  color: var(--blue);
  margin-top: 4px;
  font-size: var(--cp-fs-11px, 11px);
  font-style: normal;
  font-weight: 850;
}
.level-buttons span {
  color: var(--muted);
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  margin-top: 6px;
  font-size: var(--cp-fs-7px, 7px);
  line-height: 1.4;
  display: -webkit-box;
  overflow: hidden;
}
.toggle-row {
  border: 1px solid var(--line);
  border-radius: 10px;
  align-items: flex-start;
  gap: 10px;
  padding: 12px;
  display: flex;
}
.toggle-row input {
  margin-top: 2px;
}
.toggle-row b,
.toggle-row small {
  display: block;
}
.toggle-row b {
  font-size: var(--cp-fs-10px, 10px);
}
.toggle-row small {
  color: var(--muted);
  margin-top: 3px;
  font-size: var(--cp-fs-8px, 8px);
  line-height: 1.45;
}
.toast {
  z-index: 150;
  color: #fff;
  background: #162238;
  border-radius: 12px;
  align-items: center;
  gap: 9px;
  padding: 12px 16px;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 700;
  display: flex;
  position: fixed;
  bottom: 26px;
  right: 28px;
  box-shadow: 0 15px 40px #090f1e4d;
}
.toast span {
  background: #2bb482;
  border-radius: 50%;
  place-items: center;
  width: 22px;
  height: 22px;
  display: grid;
}
@media (width<=1180px) {
  .stat-grid,
  .dashboard-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .dashboard-grid .span-2 {
    grid-column: span 2;
  }
  .project-strip,
  .sync-layout {
    grid-template-columns: 1fr;
  }
}
@media (width<=880px) {
  .sidebar {
    display: none;
  }
  .workspace {
    margin-left: 0;
  }
  .topbar {
    height: 66px;
    padding: 0 18px;
  }
  .breadcrumb,
  .class-switcher {
    display: none;
  }
  .mobile-brand {
    font-size: var(--cp-fs-14px, 14px);
    font-weight: 850;
    display: block;
  }
  .sync-pill {
    min-width: 0;
    padding: 8px;
  }
  .sync-pill > span:last-child {
    display: none;
  }
  .mobile-nav {
    z-index: 14;
    border-bottom: 1px solid var(--line);
    background: #fff;
    gap: 5px;
    padding: 8px 12px;
    display: flex;
    position: sticky;
    top: 66px;
    overflow-x: auto;
  }
  .mobile-nav button {
    min-width: 72px;
    color: var(--muted);
    white-space: nowrap;
    background: 0 0;
    border: 0;
    border-radius: 8px;
    padding: 7px;
    font-size: var(--cp-fs-8px, 8px);
  }
  .mobile-nav button span {
    color: var(--blue);
    margin-bottom: 3px;
    font-size: var(--cp-fs-8px, 8px);
    font-weight: 850;
    display: block;
  }
  .mobile-nav button.active {
    background: var(--blue-soft);
    color: var(--blue);
    font-weight: 750;
  }
  .content {
    padding: 24px 18px 60px;
  }
  .demo-banner {
    flex-wrap: wrap;
    align-items: flex-start;
  }
  .demo-banner button {
    margin-left: 0;
  }
  .hero-row,
  .page-heading {
    flex-direction: column;
    align-items: flex-start;
  }
  .heading-actions {
    width: 100%;
  }
  .heading-actions button {
    flex: 1;
  }
  .dashboard-grid {
    grid-template-columns: 1fr;
  }
  .dashboard-grid .span-2 {
    grid-column: span 1;
  }
  .lesson-layout {
    grid-template-columns: 1fr;
  }
  .lesson-side {
    position: static;
  }
  .meeting-grid {
    grid-template-columns: 1fr;
  }
  .summary-numbers {
    display: none;
  }
  .builder-layout {
    grid-template-columns: 1fr;
  }
  .criterion-picker,
  .selected-criteria {
    max-height: 340px;
  }
  .level-buttons {
    grid-template-columns: repeat(2, 1fr);
  }
  .level-buttons button {
    border-bottom: 1px solid var(--line);
  }
}
@media (width<=580px) {
  .stat-grid {
    grid-template-columns: 1fr;
  }
  .stat-card {
    min-height: 104px;
  }
  .hero-row h1,
  .page-heading h1 {
    font-size: var(--cp-fs-29px, 29px);
  }
  .primary,
  .secondary {
    padding: 10px 12px;
  }
  .agenda-item {
    grid-template-columns: 48px 3px 1fr;
  }
  .agenda-item > button {
    display: none;
  }
  .class-summary {
    align-items: flex-start;
  }
  .class-badge {
    min-width: 58px;
  }
  .table-tools {
    flex-direction: column;
    align-items: flex-start;
  }
  .search {
    width: 100%;
    min-width: 0;
  }
  .modal-backdrop {
    place-items: end center;
    padding: 0;
  }
  .modal {
    border-radius: 20px 20px 0 0;
    width: 100%;
    max-height: 94vh;
  }
  .modal-header {
    padding: 18px;
  }
  .modal-body {
    padding-left: 18px;
    padding-right: 18px;
  }
  .form-grid {
    grid-template-columns: 1fr;
  }
  .field.span-2,
  .toggle-row.span-2 {
    grid-column: span 1;
  }
  .modal-footer.sticky {
    margin-left: -18px;
    margin-right: -18px;
    padding-left: 18px;
    padding-right: 18px;
  }
  .attendance-grid,
  .descriptor-grid,
  .descriptor-editor {
    grid-template-columns: 1fr;
  }
  .project-tabs button,
  .rubric-tabs button {
    min-width: 190px;
  }
  .import-method-tabs,
  .import-file-grid {
    grid-template-columns: 1fr;
  }
  .import-preview > header {
    flex-direction: column;
    align-items: flex-start;
  }
  .student-importer .modal-footer {
    flex-direction: column;
    align-items: stretch;
  }
  .student-importer .modal-footer > div {
    grid-template-columns: 1fr;
    display: grid;
  }
  .student-importer .modal-footer button {
    width: 100%;
  }
  .meeting-card {
    grid-template-columns: 50px 1fr;
  }
  .sync-main,
  .backup-panel {
    padding: 19px;
  }
  .drive-hero {
    align-items: flex-start;
  }
  .sync-actions {
    flex-direction: column;
  }
  .sync-actions button {
    width: 100%;
  }
}
@media print {
  .sidebar,
  .topbar,
  .mobile-nav,
  .demo-banner,
  button {
    display: none !important;
  }
  .workspace {
    margin: 0;
  }
  .content {
    max-width: none;
    padding: 0;
  }
  .panel {
    box-shadow: none;
    break-inside: avoid;
  }
}
@property --tw-rotate-x {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-y {
  syntax: "*";
  inherits: false;
}
@property --tw-rotate-z {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-x {
  syntax: "*";
  inherits: false;
}
@property --tw-skew-y {
  syntax: "*";
  inherits: false;
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-inset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
  syntax: "*";
  inherits: false;
}
@property --tw-inset-ring-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
  syntax: "*";
  inherits: false;
}
@property --tw-ring-offset-width {
  syntax: "<length>";
  inherits: false;
  initial-value: 0;
}
@property --tw-ring-offset-color {
  syntax: "*";
  inherits: false;
  initial-value: #fff;
}
@property --tw-ring-offset-shadow {
  syntax: "*";
  inherits: false;
  initial-value: 0 0 #0000;
}
@property --tw-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-sepia {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-color {
  syntax: "*";
  inherits: false;
}
@property --tw-drop-shadow-alpha {
  syntax: "<percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-drop-shadow-size {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-blur {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-brightness {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-contrast {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-grayscale {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-hue-rotate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-invert {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-opacity {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-saturate {
  syntax: "*";
  inherits: false;
}
@property --tw-backdrop-sepia {
  syntax: "*";
  inherits: false;
}
/*$vite$:1*/

/* Melhorias consolidadas da versão 4 */
.page-actions,
.row-actions,
.rubric-actions,
.assessment-toolbar,
.schedule-card-actions,
.import-controls,
.import-stats {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.danger-button {
  appearance: none;
  border: 1px solid rgba(181, 55, 72, .28);
  background: rgba(181, 55, 72, .08);
  color: #a52f43;
  border-radius: 12px;
  padding: 10px 14px;
  font-weight: 750;
  cursor: pointer;
}
.danger-button:hover { background: rgba(181, 55, 72, .14); }
.danger-button:disabled { opacity: .4; cursor: not-allowed; }
.compact { padding: 7px 10px !important; min-height: 0 !important; font-size: var(--cp-fs-0_82rem, .82rem); }
.color-field span { display: flex; align-items: center; gap: 10px; }
.color-field input[type="color"] { width: 52px; min-height: 38px; padding: 3px; cursor: pointer; }
.color-field code { color: var(--muted); }
.class-summary-actions { display: flex; gap: 8px; align-items: center; }
.bulk-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 10px 0 0; }
.student-select { width: 42px; text-align: center; }
.student-table tr.is-selected { background: rgba(49, 87, 213, .07); }

.lesson-card { position: relative; align-items: flex-start; }
.lesson-actions { margin-left: auto; display: flex; gap: 7px; flex-direction: column; }
.attendance-summary .disciplinary { color: #7651a9; background: rgba(118, 81, 169, .1); }
.purple-dot { background: #7651a9; }
.calendar-notice { border: 1px solid rgba(206, 143, 36, .3); background: rgba(248, 190, 72, .1); border-radius: 14px; padding: 10px 14px; }
.calendar-notice p { margin: 3px 0; }
.attendance-buttons button.selected.disciplinary { background: #7651a9; border-color: #7651a9; color: white; }

.assessment-scroll { max-height: calc(100vh - 325px); }
.assessment-matrix { min-width: max-content; border-collapse: separate; border-spacing: 0; }
.assessment-matrix th,
.assessment-matrix td { min-width: 68px; padding: 8px 7px; text-align: center; vertical-align: middle; }
.assessment-matrix th:nth-child(1), .assessment-matrix td:nth-child(1) { min-width: 54px; }
.assessment-matrix th:nth-child(2), .assessment-matrix td:nth-child(2) { min-width: 210px; text-align: left; }
.assessment-matrix .sticky-number,
.assessment-matrix thead th:first-child { position: sticky; left: 0; z-index: 5; background: var(--surface); }
.assessment-matrix .sticky-student,
.assessment-matrix thead th:nth-child(2) { position: sticky; left: 54px; z-index: 5; background: var(--surface); box-shadow: 7px 0 12px rgba(28, 36, 60, .05); }
.assessment-matrix thead th { position: sticky; top: 0; z-index: 4; }
.assessment-matrix .criterion-row th { top: 48px; }
.assessment-matrix .rubric-group { color: #182139; font-size: var(--cp-fs-0_76rem, .76rem); line-height: 1.25; border-bottom-width: 3px; }
.rubric-group.saber, .rubric-category.saber > header, .selected-group.saber > header, .score-group.saber > header, .picker-group.saber h4 { background: rgba(239, 232, 168, .34); border-color: #9c8a32; }
.rubric-group.informacao, .rubric-category.informacao > header, .selected-group.informacao > header, .score-group.informacao > header, .picker-group.informacao h4 { background: rgba(247, 239, 132, .30); border-color: #a99a2e; }
.rubric-group.pensamento, .rubric-category.pensamento > header, .selected-group.pensamento > header, .score-group.pensamento > header, .picker-group.pensamento h4 { background: rgba(141, 174, 211, .25); border-color: #5d7fa7; }
.rubric-group.desenvolvimento, .rubric-category.desenvolvimento > header, .selected-group.desenvolvimento > header, .score-group.desenvolvimento > header, .picker-group.desenvolvimento h4 { background: rgba(116, 158, 204, .25); border-color: #4f759f; }
.rubric-group.sensibilidade, .rubric-category.sensibilidade > header, .selected-group.sensibilidade > header, .score-group.sensibilidade > header, .picker-group.sensibilidade h4 { background: rgba(152, 126, 178, .25); border-color: #7a6095; }
.rubric-group.saude, .rubric-category.saude > header, .selected-group.saude > header, .score-group.saude > header, .picker-group.saude h4 { background: rgba(191, 209, 151, .28); border-color: #758b45; }
.criterion-row th span { display: flex; flex-direction: column; align-items: center; gap: 3px; max-width: 92px; }
.criterion-row th b { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: rgba(49,87,213,.1); }
.criterion-row th small { white-space: normal; font-size: var(--cp-fs-0_68rem, .68rem); line-height: 1.15; max-height: 2.35em; overflow: hidden; }
.grade-cell { transition: background .15s ease; }
.grade-cell.grade-mb { background: rgba(34, 151, 91, .15); }
.grade-cell.grade-ins { background: rgba(205, 72, 82, .15); }
.grade-cell.grade-mid { background: rgba(61, 112, 203, .12); }
.grade-cell.grade-na { background: rgba(110, 117, 132, .10); }
.grade-select { width: 62px; min-height: 34px; padding: 5px 4px; border-radius: 9px; font-weight: 800; text-align: center; }
.grade-select.grade-mb { color: #137144; border-color: rgba(34,151,91,.35); }
.grade-select.grade-ins { color: #a62f42; border-color: rgba(205,72,82,.4); }
.grade-select.grade-mid { color: #294f9d; border-color: rgba(61,112,203,.34); }
.grade-select.grade-na { color: #626a78; }
.result-cell { font-variant-numeric: tabular-nums; }
.matrix-help { margin: 12px 18px 18px; color: var(--muted); font-size: var(--cp-fs-0_82rem, .82rem); }

.rubric-header { gap: 18px; align-items: flex-start; }
.rubric-category { border: 1px solid var(--line); border-radius: 16px; overflow: hidden; margin-bottom: 16px; }
.rubric-category > header { border-left: 5px solid; padding: 15px 18px; }
.frequent-criterion > summary strong,
.criterion-picker label.frequent b { font-size: var(--cp-fs-9px, 9px); }
.criterion-picker label.frequent { box-shadow: inset 3px 0 0 rgba(82, 111, 147, .42); }
.frequent-criterion > summary { box-shadow: inset 3px 0 0 rgba(82, 111, 147, .42); }
.frequent-criterion > summary::after { content: none; }
.grouped-selected .selected-group summary {
  grid-template-columns: minmax(0, 1fr) 96px 32px;
  min-height: 54px;
}
.grouped-selected .selected-group summary > div { min-width: 0; }
.grouped-selected .criterion-weight {
  justify-content: flex-end;
  min-width: 96px;
  white-space: nowrap;
}
.grouped-selected .criterion-weight input { width: 62px; }
.grouped-picker section { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; margin-bottom: 12px; }
.grouped-picker h4 { margin: 0; padding: 9px 11px; border-left: 4px solid; font-size: var(--cp-fs-0_77rem, .77rem); }
.grouped-picker label { margin: 0; border-radius: 0; }
.grouped-selected { display: grid; gap: 16px; }
.selected-group { border: 1px solid var(--line); border-radius: 15px; overflow: hidden; }
.selected-group > header,
.score-group > header { border-left: 5px solid; display: flex; align-items: center; justify-content: space-between; padding: 12px 15px; }
.selected-group > header h4, .score-group > header h3 { margin: 0; }
.selected-group details { border-top: 1px solid var(--line); }
.criterion-weight { display: inline-flex; align-items: center; gap: 5px; }
.criterion-weight input { width: 70px; padding: 6px; }
.remove-criterion { border: 0; background: transparent; font-size: var(--cp-fs-1_4rem, 1.4rem); color: #a52f43; cursor: pointer; }
.descriptor-editor { display: grid; gap: 10px; padding: 12px 16px 18px; }
.descriptor-editor label span { font-weight: 750; font-size: var(--cp-fs-0_78rem, .78rem); }

.score-groups { display: grid; gap: 16px; }
.score-group { border: 1px solid var(--line); border-radius: 15px; overflow: hidden; }
.score-row { display: grid; grid-template-columns: minmax(220px, 1fr) 150px 80px; gap: 12px; align-items: center; padding: 12px 15px; border-top: 1px solid var(--line); }
.score-row > div { display: flex; flex-direction: column; }
.score-row > p { grid-column: 1 / -1; margin: -4px 0 2px; color: var(--muted); font-size: var(--cp-fs-0_82rem, .82rem); }
.score-row.grade-mb { background: rgba(34,151,91,.10); }
.score-row.grade-ins { background: rgba(205,72,82,.10); }
.score-row.grade-na { background: rgba(110,117,132,.08); }
.score-summary { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 16px; padding: 16px; border-radius: 14px; background: var(--soft); }
.score-summary > div { display: flex; align-items: center; gap: 12px; }
.score-summary b { font-size: var(--cp-fs-1_6rem, 1.6rem); }

.schedule-card { position: relative; min-height: 92px; }
.schedule-card-actions { position: absolute; right: 5px; top: 5px; gap: 3px; opacity: 0; transition: opacity .15s ease; }
.schedule-card:hover .schedule-card-actions { opacity: 1; }
.schedule-card-actions button { border: 0; border-radius: 7px; background: rgba(255,255,255,.86); padding: 4px 6px; font-size: var(--cp-fs-0_65rem, .65rem); cursor: pointer; }
.schedule-hint { text-align: center; color: var(--muted); margin: 14px 0; }

.calendar-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 18px; }
.calendar-summary article { border: 1px solid var(--line); background: var(--surface); border-radius: 15px; padding: 15px; display: flex; flex-direction: column; }
.calendar-summary b { font-size: var(--cp-fs-1_65rem, 1.65rem); }
.calendar-summary span { color: var(--muted); font-size: var(--cp-fs-0_82rem, .82rem); }
.calendar-list { display: grid; }
.calendar-item { display: grid; grid-template-columns: 62px minmax(0,1fr) auto; gap: 16px; align-items: center; padding: 15px 18px; border-bottom: 1px solid var(--line); border-left: 5px solid #3157d5; }
.calendar-item.type-holiday { border-left-color: #b53b54; }
.calendar-item.type-interruption { border-left-color: #c1792b; }
.calendar-item.type-period { border-left-color: #168967; }
.calendar-date { text-align: center; display: flex; flex-direction: column; }
.calendar-date b { font-size: var(--cp-fs-1_45rem, 1.45rem); }
.calendar-date span { text-transform: uppercase; color: var(--muted); font-size: var(--cp-fs-0_7rem, .7rem); }
.calendar-main h3, .calendar-main p { margin: 2px 0; }
.calendar-main small { text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }

.import-modal { min-height: 320px; }
.import-controls { padding: 13px; border: 1px dashed var(--line); border-radius: 14px; background: var(--soft); }
.import-controls input[type="file"] { flex: 1; min-width: 280px; }
.import-status { padding: 10px 13px; border-radius: 11px; background: rgba(49,87,213,.08); }
.import-stats span { padding: 8px 11px; border-radius: 999px; background: var(--soft); font-weight: 700; }
.import-preview { width: 100%; min-width: 760px; border-collapse: collapse; }
.import-preview th, .import-preview td { padding: 8px 9px; border-bottom: 1px solid var(--line); text-align: left; }
.import-preview input, .import-preview select { min-width: 110px; padding: 7px; }
.calendar-preview td:nth-child(3) input { min-width: 230px; }
.check-line { display: flex; align-items: center; gap: 9px; font-weight: 700; }

@media (max-width: 980px) {
  .calendar-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .lesson-actions { flex-direction: row; }
  .score-row { grid-template-columns: 1fr; }
}

@media print {
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
  body[data-print-section] { background: #fff !important; }
  body[data-print-section] .sidebar,
  body[data-print-section] .topbar,
  body[data-print-section] .page-heading,
  body[data-print-section] .project-tabs,
  body[data-print-section] .no-print,
  body[data-print-section] .toast { display: none !important; }
  body[data-print-section] .workspace,
  body[data-print-section] .content { display: block !important; margin: 0 !important; padding: 0 !important; width: 100% !important; max-width: none !important; }
  body[data-print-section="schedule"] .content > * { display: none !important; }
  body[data-print-section="schedule"] #print-schedule,
  body[data-print-section="assessment"] #print-assessment { display: block !important; box-shadow: none !important; border: 0 !important; margin: 0 !important; width: 100% !important; }
  body[data-print-section="assessment"] .assessment-scroll { overflow: visible !important; max-height: none !important; }
  body[data-print-section="assessment"] .assessment-matrix { min-width: 100% !important; font-size: 8pt; }
  body[data-print-section="assessment"] .assessment-matrix th,
  body[data-print-section="assessment"] .assessment-matrix td { position: static !important; min-width: 0 !important; padding: 4px 3px !important; }
  body[data-print-section="assessment"] .student-name span { display: none; }
  body[data-print-section="assessment"] .grade-select { appearance: none; border: 0; background: transparent; width: auto; font-size: 8pt; padding: 0; }
  body[data-print-section="schedule"] .schedule-grid { font-size: 8pt; }
  body[data-print-section="schedule"] .schedule-card { min-height: 55px; break-inside: avoid; }
  @page { size: landscape; margin: 8mm; }
}

/* Refinamentos de formulários — versão 4 */
.modal-form {
  padding: 24px 26px 0;
}
.modal-form .form-grid {
  gap: 18px 20px;
}
.modal-form .form-grid > label,
.modal-form > label {
  display: flex;
  flex-direction: column;
  gap: 7px;
  color: #596174;
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 800;
  letter-spacing: .035em;
}
.modal-form input,
.modal-form select,
.modal-form textarea {
  width: 100%;
  color: var(--ink);
  background: #fff;
  border: 1px solid #dce1ea;
  border-radius: 10px;
  outline: none;
  padding: 11px 12px;
  font: inherit;
  font-weight: 500;
  letter-spacing: normal;
}
.modal-form input:focus,
.modal-form select:focus,
.modal-form textarea:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 11%, transparent);
}
.modal-form > label {
  margin-top: 18px;
}
.modal-form > label textarea {
  min-height: 118px;
  resize: vertical;
  line-height: 1.55;
}
.modal-form > label + label textarea {
  min-height: 72px;
}
.modal-form .modal-footer {
  margin-top: 24px;
  padding: 18px 0 22px;
}
@media (max-width: 700px) {
  .modal-form { padding: 20px 18px 0; }
}

/* Seleção explícita de ficheiros e edição prévia de importações */
.explicit-upload {
  align-items: stretch;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
}
.file-upload-control {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 13px;
  cursor: pointer;
  min-width: 0;
}
.file-upload-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  border-radius: 10px;
  padding: 9px 14px;
  background: var(--blue);
  color: #fff;
  font-weight: 800;
  white-space: nowrap;
  box-shadow: 0 5px 16px color-mix(in srgb, var(--blue) 24%, transparent);
}
.file-upload-control:hover .file-upload-button { filter: brightness(.96); }
.file-upload-name {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.file-upload-name b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--cp-fs-0_9rem, .9rem);
}
.file-upload-name small { color: var(--muted); margin-top: 3px; line-height: 1.35; }
.import-edit-help {
  margin: 10px 0;
  color: var(--muted);
  font-size: var(--cp-fs-0_82rem, .82rem);
}
.schedule-import-preview { min-width: 1180px; }
.schedule-import-preview th,
.schedule-import-preview td { white-space: nowrap; }
.schedule-import-preview td:nth-child(6) input { min-width: 135px; }
.schedule-import-preview td:nth-child(7) input { min-width: 180px; }
.schedule-import-preview tr.excluded { opacity: .48; background: #f5f6f8; }
.import-file em {
  display: inline-flex;
  margin-top: 8px;
  padding: 6px 9px;
  border-radius: 8px;
  background: color-mix(in srgb, var(--blue) 10%, white);
  color: var(--blue);
  font-size: var(--cp-fs-0_72rem, .72rem);
  font-style: normal;
  font-weight: 800;
}
@media (max-width: 760px) {
  .explicit-upload { grid-template-columns: 1fr; }
  .file-upload-control { grid-template-columns: 1fr; }
  .file-upload-button { width: 100%; }
}

/* Seleção e eliminação múltipla de turmas */
.class-selection-area { margin-bottom: 7px; }
.class-bulk-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin: 0 1px 10px;
  padding: 9px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--soft);
}
.class-tab-wrap {
  position: relative;
  display: flex;
  align-items: stretch;
  min-width: 150px;
}
.class-tab-wrap > button { width: 100%; padding-left: 38px; }
.class-select-box {
  position: absolute;
  left: 12px;
  top: 50%;
  z-index: 2;
  transform: translateY(-50%);
  accent-color: var(--red);
}
.class-tab-wrap.selected-for-delete > button {
  border-color: rgba(181, 55, 72, .45);
  background: rgba(181, 55, 72, .06);
}
@media (max-width: 700px) {
  .class-bulk-toolbar { align-items: stretch; flex-direction: column; }
}

/* Navegação organizada da avaliação */
.assessment-browser {
  display: grid;
  gap: 18px;
  padding: 18px;
  margin-bottom: 18px;
}
.assessment-browser-title {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}
.assessment-browser-title h2,
.assessment-browser-title p { margin: 0; }
.assessment-browser-title p { color: var(--muted); font-size: var(--cp-fs-0_86rem, .86rem); }
.assessment-class-tabs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(175px, 1fr));
  gap: 10px;
}
.assessment-class-tabs button {
  min-height: 76px;
  padding: 12px 14px;
  text-align: left;
  border: 1px solid var(--line);
  border-left: 5px solid var(--class-color, var(--blue));
  border-radius: 13px;
  background: var(--surface);
  cursor: pointer;
  transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.assessment-class-tabs button:hover { transform: translateY(-1px); box-shadow: var(--shadow); }
.assessment-class-tabs button.active {
  border-color: var(--class-color, var(--blue));
  background: color-mix(in srgb, var(--class-color, var(--blue)) 9%, var(--surface));
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--class-color, var(--blue)) 12%, transparent);
}
.assessment-class-tabs strong,
.assessment-class-tabs small { display: block; }
.assessment-class-tabs small { margin-top: 4px; color: var(--muted); line-height: 1.3; }
.assessment-period-browser { display: grid; gap: 12px; }
.assessment-period-section {
  display: grid;
  grid-template-columns: 130px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.assessment-period-section > header { padding: 9px 0; }
.assessment-period-section > header h3 { margin: 0; font-size: var(--cp-fs-0_95rem, .95rem); }
.assessment-period-section > header small { color: var(--muted); }
.assessment-project-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 9px; }
.assessment-project-buttons button {
  min-height: 66px;
  padding: 10px 12px;
  text-align: left;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--surface);
  cursor: pointer;
}
.assessment-project-buttons button.active {
  border-color: var(--blue);
  background: var(--blue-soft);
  box-shadow: inset 0 -3px var(--blue);
}
.assessment-project-buttons strong,
.assessment-project-buttons small { display: block; }
.assessment-project-buttons small { margin-top: 4px; color: var(--muted); line-height: 1.3; }
.empty-period { margin: 10px 0; color: var(--muted); font-size: var(--cp-fs-0_84rem, .84rem); }

/* Rubricas-base importáveis por disciplina */
.rubric-import-modal { display: grid; gap: 16px; }
.rubric-import-preview {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  max-height: 390px;
  overflow: auto;
}
.rubric-import-preview .rubric-category { margin: 0; padding: 14px; border-radius: 13px; }
.rubric-import-preview .rubric-category h3 { margin: 0 0 9px; font-size: var(--cp-fs-0_87rem, .87rem); }
.rubric-import-preview ul { margin: 0; padding-left: 18px; }
.rubric-import-preview li { margin: 5px 0; font-size: var(--cp-fs-0_8rem, .8rem); line-height: 1.35; }

/* Paletas cromáticas */
:root {
  --surface: #fff;
  --soft: #edf1ff;
  --sidebar: #11192b;
}
.sidebar { background: var(--sidebar); }
.panel,
.modal,
.topbar { background-color: var(--surface); }
.appearance-panel { margin-top: 18px; padding: 22px; }
.appearance-panel > header { margin-bottom: 16px; }
.appearance-panel > header h2,
.appearance-panel > header p { margin: 0; }
.appearance-panel > header p:last-child { margin-top: 5px; color: var(--muted); }
.theme-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 11px;
}
.theme-option {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 7px;
  min-height: 124px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--surface);
  text-align: left;
  cursor: pointer;
}
.theme-option:hover { border-color: var(--blue); }
.theme-option.active {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--blue) 12%, transparent);
}
.theme-option small { color: var(--muted); line-height: 1.35; }
.theme-swatches { display: grid; grid-template-columns: repeat(4, 1fr); height: 28px; overflow: hidden; border-radius: 8px; border: 1px solid var(--line); }
.theme-swatches i { display: block; }
.custom-theme {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto repeat(4, minmax(100px, 130px));
  gap: 12px;
  align-items: end;
  margin-top: 17px;
  padding-top: 17px;
  border-top: 1px solid var(--line);
}
.custom-theme h3,
.custom-theme p { margin: 0; }
.custom-theme p { margin-top: 4px; color: var(--muted); font-size: var(--cp-fs-0_82rem, .82rem); }
.custom-theme label { display: grid; gap: 5px; color: var(--muted); font-size: var(--cp-fs-0_72rem, .72rem); font-weight: 800; }
.custom-theme input[type="color"] { width: 100%; height: 42px; padding: 3px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); cursor: pointer; }
.custom-theme .secondary.active { border-color: var(--blue); background: var(--blue-soft); color: var(--blue); }

@media (max-width: 980px) {
  .assessment-period-section { grid-template-columns: 1fr; gap: 4px; }
  .rubric-import-preview { grid-template-columns: 1fr; }
  .custom-theme { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .custom-theme > div { grid-column: 1 / -1; }
}
@media (max-width: 620px) {
  .assessment-class-tabs,
  .assessment-project-buttons,
  .theme-grid,
  .custom-theme { grid-template-columns: 1fr; }
}

/* Pequenos alinhamentos da navegação por período */
.assessment-period-section > header { display: flex; flex-direction: column; gap: 2px; }
.assessment-period-section > header span { color: var(--muted); font-size: var(--cp-fs-0_78rem, .78rem); }
.assessment-class-tabs button { display: grid; grid-template-columns: 8px minmax(0,1fr) auto; align-items: center; gap: 10px; }
.assessment-class-tabs button > i { width: 8px; height: 38px; border-radius: 999px; }
.assessment-class-tabs button > span { color: var(--muted); font-size: var(--cp-fs-0_76rem, .76rem); white-space: nowrap; }
@media (max-width: 620px) { .assessment-class-tabs button { grid-template-columns: 8px 1fr; } .assessment-class-tabs button > span { grid-column: 2; } }

/* Ajuste final dos controlos de presença */
.attendance-buttons {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.attendance-buttons button {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface);
  color: var(--text);
  font-weight: 800;
  cursor: pointer;
}
.attendance-buttons button:hover { background: var(--soft); }
.attendance-buttons button.selected.present { background: #3f8b67; border-color: #3f8b67; color: #fff; }
.attendance-buttons button.selected.absent { background: #b74455; border-color: #b74455; color: #fff; }
.attendance-buttons button.selected.late { background: #d18a2f; border-color: #d18a2f; color: #fff; }
.attendance-buttons button.selected.disciplinary { background: #7651a9; border-color: #7651a9; color: #fff; }

/* Ajustes da versão 5 — grelha de avaliação mais compacta e cabeçalhos estáveis */
.assessment-scroll {
  --assessment-number-width: 46px;
  --assessment-student-width: 178px;
  --assessment-item-width: 58px;
  --assessment-group-height: 42px;
  overflow: auto;
  position: relative;
  isolation: isolate;
  scrollbar-gutter: stable;
}

.assessment-matrix {
  table-layout: fixed;
}

.assessment-matrix th,
.assessment-matrix td {
  width: var(--assessment-item-width);
  min-width: var(--assessment-item-width);
  max-width: var(--assessment-item-width);
  padding: 6px 4px;
}

.assessment-matrix .category-row > th:first-child,
.assessment-matrix tbody > tr > td.sticky-number {
  width: var(--assessment-number-width);
  min-width: var(--assessment-number-width);
  max-width: var(--assessment-number-width);
}

.assessment-matrix .category-row > th:nth-child(2),
.assessment-matrix tbody > tr > td.sticky-student {
  width: var(--assessment-student-width);
  min-width: var(--assessment-student-width);
  max-width: var(--assessment-student-width);
}

/* Apenas N.º e Aluno ficam presos horizontalmente. Os dois primeiros itens
   da segunda linha do cabeçalho devem deslocar-se com os restantes critérios. */
.assessment-matrix .category-row > th:first-child {
  position: sticky;
  left: 0;
  top: 0;
  z-index: 50;
  background: var(--surface);
}

.assessment-matrix .category-row > th:nth-child(2) {
  position: sticky;
  left: var(--assessment-number-width);
  top: 0;
  z-index: 50;
  background: var(--surface);
  box-shadow: 7px 0 12px rgba(28, 36, 60, .07);
}

.assessment-matrix .criterion-row > th:first-child,
.assessment-matrix .criterion-row > th:nth-child(2) {
  left: auto;
}

.assessment-matrix tbody > tr > td.sticky-number {
  position: sticky;
  left: 0;
  z-index: 12;
  background: var(--surface);
}

.assessment-matrix tbody > tr > td.sticky-student {
  position: sticky;
  left: var(--assessment-number-width);
  z-index: 12;
  background: var(--surface);
  box-shadow: 7px 0 12px rgba(28, 36, 60, .06);
}

/* Os dois níveis do cabeçalho ficam sempre acima das linhas e dos selects. */
.assessment-matrix .category-row > th {
  position: sticky;
  top: 0;
  z-index: 40;
  height: var(--assessment-group-height);
  min-height: var(--assessment-group-height);
  padding: 6px 5px;
}

.assessment-matrix .criterion-row > th {
  position: sticky;
  top: var(--assessment-group-height);
  z-index: 35;
  height: 66px;
  min-height: 66px;
  background: #f7f8fb;
  padding: 5px 3px;
}

.assessment-matrix tbody td {
  position: relative;
  z-index: 1;
}

.assessment-matrix tbody tr:hover td.sticky-number,
.assessment-matrix tbody tr:hover td.sticky-student {
  background: #fbfcff;
}

.assessment-matrix .rubric-group {
  width: auto;
  min-width: 0;
  max-width: none;
  padding-inline: 7px;
  font-size: var(--cp-fs-0_59rem, .59rem);
  line-height: 1.12;
  letter-spacing: .035em;
  white-space: normal;
  overflow-wrap: anywhere;
}

.assessment-matrix .criterion-row th span {
  width: 100%;
  max-width: var(--assessment-item-width);
  gap: 2px;
}

.assessment-matrix .criterion-row th b {
  width: 20px;
  height: 20px;
  font-size: var(--cp-fs-0_62rem, .62rem);
}

.assessment-matrix .criterion-row th small {
  max-width: calc(var(--assessment-item-width) - 6px);
  max-height: 3.25em;
  font-size: var(--cp-fs-0_53rem, .53rem);
  line-height: 1.08;
  letter-spacing: .015em;
  overflow-wrap: anywhere;
}

.assessment-matrix .grade-cell {
  padding: 5px 2px;
}

.assessment-matrix .grade-select {
  position: relative;
  z-index: 1;
  width: 46px;
  min-width: 46px;
  min-height: 30px;
  padding: 4px 1px;
  border-radius: 8px;
  font-size: var(--cp-fs-0_68rem, .68rem);
}

.assessment-matrix .student-name {
  min-width: 0;
  gap: 8px;
}

.assessment-matrix .student-name > span,
.assessment-matrix .student-name > img {
  width: 32px;
  height: 32px;
}

.assessment-matrix .student-name strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--cp-fs-10px, 10px);
}

@media (max-width: 1100px) {
  .assessment-scroll {
    --assessment-student-width: 164px;
    --assessment-item-width: 56px;
  }
  .assessment-matrix .rubric-group { font-size: var(--cp-fs-0_57rem, .57rem); }
  .assessment-matrix .criterion-row th small { font-size: var(--cp-fs-0_51rem, .51rem); }
  .assessment-matrix .grade-select { width: 44px; min-width: 44px; }
}

/* A grelha não deve esticar as colunas para ocupar toda a largura disponível. */
.assessment-matrix {
  width: max-content;
  min-width: max-content;
}

/* Afinamento final das proporções do cabeçalho. */
.assessment-scroll {
  --assessment-item-width: 58px;
  --assessment-group-height: 48px;
}

.assessment-matrix .category-row > th {
  height: var(--assessment-group-height);
  min-height: var(--assessment-group-height);
  max-height: var(--assessment-group-height);
  overflow: hidden;
}

.assessment-matrix .rubric-group > span {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  line-height: 1.08;
}

@media (max-width: 1100px) {
  .assessment-scroll { --assessment-item-width: 56px; }
}

/* Neutraliza as larguras antigas aplicadas por posição às duas primeiras
   células da segunda linha do cabeçalho. */
.assessment-matrix .criterion-row > th {
  width: var(--assessment-item-width);
  min-width: var(--assessment-item-width);
  max-width: var(--assessment-item-width);
}


/* Versão 5 — importação multiformato do calendário */
.calendar-import-sources {
  display: grid;
  gap: 15px;
}
.calendar-import-sources .import-controls {
  grid-template-columns: minmax(0, 1fr);
}
.import-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  color: var(--muted);
  font-size: var(--cp-fs-0_76rem, .76rem);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
}
.import-divider::before,
.import-divider::after {
  content: "";
  height: 1px;
  flex: 1;
  background: var(--line);
}
.calendar-paste-block {
  display: grid;
  gap: 8px;
  color: var(--text);
  font-weight: 750;
}
.calendar-paste-block textarea {
  width: 100%;
  min-height: 150px;
  resize: vertical;
  font: inherit;
  font-weight: 450;
  line-height: 1.45;
}
.calendar-paste-block small {
  color: var(--muted);
  font-size: var(--cp-fs-0_76rem, .76rem);
  font-weight: 450;
}
.calendar-analyse-button {
  justify-self: end;
  min-width: 190px;
}
@media (max-width: 720px) {
  .calendar-analyse-button { width: 100%; justify-self: stretch; }
}

/* Versão 7 — planeamento de aulas, calendário, sumários e refinamentos visuais */
.assessment-scroll {
  --assessment-item-width: 64px;
  --assessment-group-height: 40px;
}

/* O cabeçalho completo constitui uma única camada opaca e fixa. Desta forma,
   nenhuma linha de avaliação ou controlo nativo passa visualmente por cima. */
.assessment-matrix thead {
  position: sticky;
  top: 0;
  z-index: 120;
  isolation: isolate;
  background: var(--surface);
}

.assessment-matrix .category-row > th,
.assessment-matrix .criterion-row > th {
  top: auto;
  background-clip: padding-box;
}

.assessment-matrix .category-row > th {
  height: var(--assessment-group-height);
  min-height: var(--assessment-group-height);
  max-height: var(--assessment-group-height);
  padding: 4px 5px;
}

.assessment-matrix .criterion-row > th {
  height: 62px;
  min-height: 62px;
  max-height: 62px;
  padding: 4px 3px;
  background: #f7f8fb;
}

/* Fundos sólidos nos critérios gerais para ocultar integralmente as linhas
   que passam por baixo do cabeçalho durante o deslocamento vertical. */
.assessment-matrix .rubric-group.saber { background: #f7f4dc; }
.assessment-matrix .rubric-group.informacao { background: #f8f2cf; }
.assessment-matrix .rubric-group.pensamento { background: #e8f0f8; }
.assessment-matrix .rubric-group.desenvolvimento { background: #e5eef7; }
.assessment-matrix .rubric-group.sensibilidade { background: #eee8f4; }
.assessment-matrix .rubric-group.saude { background: #edf3df; }

.assessment-matrix .rubric-group,
.assessment-matrix .rubric-group > span {
  font-family: "Segoe UI", Arial, sans-serif;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 650;
  line-height: 1.04;
  letter-spacing: 0;
}

.assessment-matrix .rubric-group > span {
  -webkit-line-clamp: 3;
  line-clamp: 3;
}

.assessment-matrix .criterion-row th span {
  max-width: var(--assessment-item-width);
  gap: 2px;
}

.assessment-matrix .criterion-row th b {
  width: 18px;
  height: 18px;
  font-family: "Segoe UI", Arial, sans-serif;
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 650;
}

.assessment-matrix .criterion-row th small {
  max-width: calc(var(--assessment-item-width) - 6px);
  max-height: 3.3em;
  font-family: "Segoe UI", Arial, sans-serif;
  font-size: var(--cp-fs-7px, 7px);
  font-weight: 600;
  line-height: 1.08;
  letter-spacing: 0;
}

.assessment-matrix .grade-select {
  width: 49px;
  min-width: 49px;
}

/* Garante uma hierarquia inequívoca entre cabeçalho, colunas fixas e corpo. */
.assessment-matrix thead th { z-index: 121; }
.assessment-matrix .category-row > th:first-child,
.assessment-matrix .category-row > th:nth-child(2) { z-index: 130; }
.assessment-matrix tbody { position: relative; z-index: 0; }
.assessment-matrix tbody td { z-index: 0; }
.assessment-matrix tbody > tr > td.sticky-number,
.assessment-matrix tbody > tr > td.sticky-student { z-index: 10; }

/* Controlos de presença mais discretos. */
.attendance-buttons {
  gap: 4px;
}
.attendance-buttons button {
  width: 26px;
  height: 26px;
  border-radius: 7px;
  background: #f8fafc;
  color: var(--muted);
  font-size: var(--cp-fs-10px, 10px);
  font-weight: 700;
  box-shadow: none;
}
.attendance-buttons button.selected.present {
  color: #2f7555;
  background: #e7f4ed;
  border-color: #b8d9c7;
}
.attendance-buttons button.selected.absent {
  color: #a43b4a;
  background: #fae8eb;
  border-color: #e9b8c0;
}
.attendance-buttons button.selected.late {
  color: #94601f;
  background: #fbf0df;
  border-color: #e7c99e;
}
.attendance-buttons button.selected.disciplinary {
  color: #684691;
  background: #f0eafa;
  border-color: #cdbde2;
}

@media (max-width: 1100px) {
  .assessment-scroll { --assessment-item-width: 62px; }
  .assessment-matrix .rubric-group,
  .assessment-matrix .rubric-group > span { font-size: var(--cp-fs-7_5px, 7.5px); }
  .assessment-matrix .criterion-row th small { font-size: var(--cp-fs-6_8px, 6.8px); }
}

/* Versão 7 — grelha, calendário, sumários e presenças */
.assessment-scroll {
  --assessment-item-width: 72px;
  --assessment-group-height: 42px;
  --assessment-criterion-height: 66px;
}

/* Cabeçalhos fixos por linha. A aparência nativa dos selects é neutralizada
   para impedir que estes sejam desenhados por cima do cabeçalho no Edge. */
.assessment-matrix thead {
  position: static;
  z-index: auto;
  isolation: auto;
}
.assessment-matrix .category-row > th {
  position: sticky;
  top: 0;
  z-index: 230;
  height: var(--assessment-group-height);
  min-height: var(--assessment-group-height);
  max-height: var(--assessment-group-height);
  background-clip: border-box;
  box-shadow: inset 0 -1px 0 rgba(40, 49, 70, .10);
}
.assessment-matrix .criterion-row > th {
  position: sticky;
  top: var(--assessment-group-height);
  z-index: 220;
  height: var(--assessment-criterion-height);
  min-height: var(--assessment-criterion-height);
  max-height: var(--assessment-criterion-height);
  background: #f7f8fb;
  background-clip: border-box;
  box-shadow: inset 0 -1px 0 rgba(40, 49, 70, .13);
}
.assessment-matrix .category-row > th:first-child,
.assessment-matrix .category-row > th:nth-child(2) {
  z-index: 260;
  background: var(--surface);
}
.assessment-matrix tbody,
.assessment-matrix tbody tr,
.assessment-matrix tbody td {
  position: relative;
  z-index: 0;
}
.assessment-matrix tbody > tr > td.sticky-number,
.assessment-matrix tbody > tr > td.sticky-student { z-index: 12; }
.assessment-matrix .grade-select {
  position: static;
  z-index: auto;
  width: 55px;
  min-width: 55px;
  -webkit-appearance: none;
  appearance: none;
  background-image:
    linear-gradient(45deg, transparent 50%, #7b8496 50%),
    linear-gradient(135deg, #7b8496 50%, transparent 50%);
  background-position:
    calc(100% - 8px) 50%,
    calc(100% - 5px) 50%;
  background-size: 3px 3px, 3px 3px;
  background-repeat: no-repeat;
  padding-right: 12px;
}

/* Seis grupos cromaticamente inequívocos; grupos contíguos não repetem família. */
.assessment-matrix .rubric-group.saber { background: #f3e5a5; }
.assessment-matrix .rubric-group.informacao { background: #cfe8df; }
.assessment-matrix .rubric-group.pensamento { background: #d6e5f5; }
.assessment-matrix .rubric-group.desenvolvimento { background: #f1d5dc; }
.assessment-matrix .rubric-group.sensibilidade { background: #e4d8f0; }
.assessment-matrix .rubric-group.saude { background: #dce9c9; }

.assessment-matrix .rubric-group,
.assessment-matrix .rubric-group > span {
  font-family: "Segoe UI", Arial, sans-serif;
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 650;
  line-height: 1.06;
}
.assessment-matrix .criterion-row th b {
  width: 19px;
  height: 19px;
  font-size: var(--cp-fs-9px, 9px);
}
.assessment-matrix .criterion-row th small {
  max-width: calc(var(--assessment-item-width) - 7px);
  font-size: var(--cp-fs-8px, 8px);
  line-height: 1.09;
}

@media (max-width: 1100px) {
  .assessment-scroll { --assessment-item-width: 68px; }
  .assessment-matrix .rubric-group,
  .assessment-matrix .rubric-group > span { font-size: var(--cp-fs-8_5px, 8.5px); }
  .assessment-matrix .criterion-row th small { font-size: var(--cp-fs-7_5px, 7.5px); }
}

/* Presenças: uma única coluna, com separação ligeira entre alunos. */
.attendance-grid {
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
  max-height: 390px;
  padding: 7px;
  background: #f6f8fb;
}
.attendance-grid > article {
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  min-height: 48px;
  padding: 7px 10px;
}
.attendance-buttons { gap: 3px; }
.attendance-buttons button {
  width: 24px;
  height: 24px;
  border-radius: 6px;
  font-size: var(--cp-fs-9px, 9px);
}

/* Linha cronológica do calendário, agrupada e identificada por período. */
.calendar-period-group {
  --period-color: #526f93;
  --period-soft: #edf1f6;
  border: 1px solid color-mix(in srgb, var(--period-color) 32%, var(--line));
  border-radius: 16px;
  overflow: hidden;
  margin: 12px 0;
  background: var(--surface);
}
.calendar-period-group.period-1 { --period-color: #b18424; --period-soft: #fbf4dc; }
.calendar-period-group.period-2 { --period-color: #397d6b; --period-soft: #e8f3ef; }
.calendar-period-group.period-3 { --period-color: #6f5aa5; --period-soft: #f0ebf8; }
.calendar-period-title {
  margin: 0;
  padding: 10px 16px;
  color: color-mix(in srgb, var(--period-color) 80%, #172033);
  background: var(--period-soft);
  border-bottom: 1px solid color-mix(in srgb, var(--period-color) 24%, var(--line));
  font-size: var(--cp-fs-0_82rem, .82rem);
}
.calendar-period-group .calendar-item {
  border-left-color: var(--period-color);
}
.calendar-item.period-boundary {
  background: var(--period-soft);
  border-left-width: 7px;
}
.calendar-item.period-boundary .calendar-main small {
  color: var(--period-color);
  font-weight: 850;
}
.calendar-ungrouped {
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  margin: 12px 0;
}

/* Planeamento dos sumários por período. */
.lesson-planning {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.lesson-period-stat {
  border: 1px solid var(--line);
  border-top: 4px solid var(--period-color, var(--blue));
  border-radius: 13px;
  padding: 11px 13px;
  background: var(--surface);
}
.lesson-period-stat.period-1 { --period-color: #b18424; }
.lesson-period-stat.period-2 { --period-color: #397d6b; }
.lesson-period-stat.period-3 { --period-color: #6f5aa5; }
.lesson-period-stat h3 { margin: 0 0 5px; font-size: var(--cp-fs-0_84rem, .84rem); }
.lesson-period-stat p { margin: 2px 0; color: var(--muted); font-size: var(--cp-fs-0_76rem, .76rem); }
.lesson-period-stat b { color: var(--text); }
.lesson-filter-banner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
  padding: 10px 13px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--soft);
}
.lesson-number {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  background: var(--soft);
  color: var(--blue-dark);
  padding: 3px 7px;
  font-size: var(--cp-fs-0_7rem, .7rem);
  font-weight: 850;
}
.lesson-card.teacher-absent { opacity: .82; }
.lesson-card.teacher-absent .lesson-date { background: #f8e8eb; }
.teacher-absence-toggle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  width: fit-content;
  border: 1px solid #e7bdc4;
  border-radius: 9px;
  padding: 6px 9px;
  background: #fff7f8;
  color: #9c3e4c;
  font-size: var(--cp-fs-0_76rem, .76rem);
  font-weight: 750;
}
.teacher-absence-toggle input { margin: 0; }
.lesson-slot-picker { grid-column: 1 / -1; }
.lesson-slot-picker select { width: 100%; }
.lesson-date-lock {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
  align-items: end;
  grid-column: 1 / -1;
}
.lesson-date-lock .locked-values {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.lesson-date-lock output {
  display: block;
  min-height: 39px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #f6f8fb;
  font-size: var(--cp-fs-0_82rem, .82rem);
}
.schedule-card-main {
  display: block;
  width: 100%;
  border: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.schedule-card-main:hover strong { text-decoration: underline; }
.schedule-card-main small { display: block; margin-top: 3px; }

@media (max-width: 850px) {
  .lesson-planning { grid-template-columns: 1fr; }
  .lesson-date-lock .locked-values { grid-template-columns: 1fr; }
}

/* Alinhamento horizontal dos alunos na lista única de presenças. */
.attendance-grid > article {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.attendance-grid > article .student-name { min-width: 0; flex: 1; }


/* Revisão 8 — agenda, matrícula, avaliação, impressão e horários de 50/100 minutos */
.student-inactive { filter: grayscale(.85); opacity: .52; background: #f2f3f5 !important; }
.student-inactive img { filter: grayscale(1); }
.student-inactive select, .student-inactive button { cursor: not-allowed; }
.enrollment-status-field small { color: #7b8495; font-weight: 500; letter-spacing: 0; }
.attendance-buttons button.material.selected { background: #f4ead2; border-color: #c9a14b; color: #795b16; }
.amber-dot { background: #d69c2f !important; }
.assessment-project-wrap { position: relative; display:flex; align-items:stretch; min-width:240px; }
.assessment-project-wrap > button { flex:1; padding-right:76px !important; }
.assessment-project-actions { position:absolute; right:8px; top:50%; transform:translateY(-50%); display:flex; gap:4px; }
.assessment-project-actions button { border:0; background:rgba(255,255,255,.78); border-radius:7px; padding:5px 7px; font-size: var(--cp-fs-10px, 10px); color:#586174; }
.calendar-item.period-end-tone-0 { background: color-mix(in srgb, var(--period-color, #7256a6) 10%, white) !important; }
.calendar-item.period-end-tone-1 { background: color-mix(in srgb, var(--period-color, #7256a6) 17%, white) !important; }
.agenda-item .date-tile span { white-space:nowrap; font-size: var(--cp-fs-9px, 9px); }
.schedule-card-main { width:100%; text-align:left; }

@media print {
  body[data-print-section="assessment"] .content > * { display:none !important; }
  body[data-print-section="assessment"] #print-assessment { display:block !important; visibility:visible !important; position:static !important; }
  body[data-print-section="assessment"] #print-assessment * { visibility:visible !important; }
  body[data-print-section="assessment"] .assessment-scroll { display:block !important; overflow:visible !important; max-height:none !important; }
  body[data-print-section="assessment"] .assessment-matrix { display:table !important; width:100% !important; min-width:0 !important; table-layout:fixed !important; }
  body[data-print-section="assessment"] .assessment-matrix thead { display:table-header-group !important; }
  body[data-print-section="assessment"] .assessment-matrix tbody { display:table-row-group !important; }
  body[data-print-section="assessment"] .assessment-matrix tr { display:table-row !important; break-inside:avoid; }
  body[data-print-section="assessment"] .assessment-matrix th,
  body[data-print-section="assessment"] .assessment-matrix td { display:table-cell !important; position:static !important; }
}


/* Revisão 8.1 — pesos de projetos e sincronização persistente */
.official-export-help { display:block; max-width:760px; margin-top:7px; color:var(--muted); line-height:1.45; }
.assessment-period-section > header { display:flex; flex-direction:column; gap:4px; }
.period-weight-total { display:inline-flex; width:max-content; padding:3px 7px; border-radius:999px; background:#f1f3f7; color:#727b8e; font-size: var(--cp-fs-0_69rem, .69rem); font-weight:700; }
.period-weight-total.complete { background:#e4f3eb; color:#28734d; }
.period-weight-total.incomplete { background:#fff0d9; color:#966117; }
.sync-actions { flex-wrap:wrap; }
@media print {
  body[data-print-section="assessment"] .official-export-help,
  body[data-print-section="assessment"] .assessment-browser,
  body[data-print-section="assessment"] .page-heading { display:none !important; }
}


/* Revisão 9 — diálogos, perfil e duplicação do horário */
.app-dialog { max-width: 560px; }
.app-dialog .modal-header { border-top: 5px solid var(--blue); }
.app-dialog .modal-header p { max-width: 44rem; color: var(--muted); font-size: var(--cp-fs-0_96rem, .96rem); line-height: 1.55; }
.app-dialog .dialog-confirm { background: var(--blue); border-color: var(--blue); }
.user-profile-panel { margin-top: 1.25rem; }
.user-profile-panel > header { margin-bottom: 1.25rem; }
.profile-fields input { width: 100%; }
.schedule-clipboard { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:0 0 1rem; padding:.9rem 1rem; border:1px solid color-mix(in srgb,var(--blue) 35%,transparent); border-radius:16px; background:color-mix(in srgb,var(--blue-soft) 78%,var(--surface)); }
.schedule-clipboard div { display:grid; gap:.2rem; }
.schedule-clipboard span { color:var(--muted); font-size: var(--cp-fs-0_88rem, .88rem); }
.schedule-cell.paste-target { cursor:copy; background:color-mix(in srgb,var(--blue-soft) 62%,transparent); box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--blue) 30%,transparent); }
.schedule-cell.paste-target:hover { background:color-mix(in srgb,var(--blue-soft) 86%,var(--surface)); box-shadow:inset 0 0 0 2px var(--blue); }
.schedule-card-actions { flex-wrap:wrap; }
.schedule-card-actions button { font-size: var(--cp-fs-0_68rem, .68rem); padding:.28rem .4rem; }
.schedule-card-actions .danger-link { color:#b4233a; }
@media (max-width: 760px) { .schedule-clipboard { align-items:flex-start; flex-direction:column; } }


/* Revisão 11 — horários, calendário, avaliação compacta, reuniões e impressão */
.modal-footer { padding-left: 10px; padding-right: 10px; padding-bottom: 26px; }
.app-dialog > .modal-footer { margin: 0; padding: 24px 30px 28px; }
.modal-header { padding-left: 30px; padding-right: 30px; }
.modal-body, .modal-form { padding-left: 30px; padding-right: 30px; }

.schedule { padding: 9px; }
.schedule-grid { grid-template-columns: 58px repeat(5,minmax(108px,1fr)); min-width: 650px; border-radius: 10px; }
.schedule-row { grid-template-columns: 58px repeat(5,minmax(108px,1fr)); min-height: 52px; }
.schedule-corner,.schedule-day { padding: 7px 5px; font-size: var(--cp-fs-8px, 8px); }
.schedule-time { padding: 7px 3px; font-size: var(--cp-fs-8px, 8px); }
.schedule-cell { padding: 3px; min-height: 52px; cursor: default; }
.schedule-cell.empty-slot { cursor: pointer; background: color-mix(in srgb,var(--blue) 2%,transparent); }
.schedule-cell.empty-slot:hover { background: color-mix(in srgb,var(--blue) 8%,transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--blue) 25%,transparent); }
.schedule-cell article,.schedule-card { min-height: 45px; padding: 5px 6px; border-radius: 6px; }
.schedule-cell strong { font-size: var(--cp-fs-9px, 9px); line-height: 1.12; }
.schedule-cell span { font-size: var(--cp-fs-7_5px, 7.5px); line-height: 1.15; margin-top: 1px; }
.schedule-cell small { font-size: var(--cp-fs-7px, 7px); margin-top: 2px; }
.schedule-card-actions { right: 2px; top: 2px; }
.schedule-card-actions button { padding: 2px 4px; font-size: var(--cp-fs-0_56rem, .56rem); }

.calendar-summary { gap: 7px; margin-bottom: 9px; }
.calendar-summary article { padding: 8px 10px; border-radius: 10px; }
.calendar-summary b { font-size: var(--cp-fs-1_15rem, 1.15rem); }
.calendar-period-group { margin: 6px 0; border-radius: 11px; }
.calendar-period-title { padding: 6px 11px; font-size: var(--cp-fs-0_73rem, .73rem); }
.calendar-item { grid-template-columns: 45px minmax(0,1fr) auto; gap: 9px; padding: 7px 10px; }
.calendar-date b { font-size: var(--cp-fs-1_05rem, 1.05rem); line-height: 1; }
.calendar-date span { font-size: var(--cp-fs-0_58rem, .58rem); }
.calendar-main h3 { font-size: var(--cp-fs-0_82rem, .82rem); margin: 0; }
.calendar-main p { font-size: var(--cp-fs-0_72rem, .72rem); margin: 1px 0; }
.calendar-main small { font-size: var(--cp-fs-0_58rem, .58rem); }
.calendar-item .row-actions button { padding: 5px 7px; font-size: var(--cp-fs-0_66rem, .66rem); }

.assessment-browser { display:grid; grid-template-columns: 210px minmax(0,1fr); gap:12px; align-items:start; margin-bottom:12px; }
.assessment-browser > header { display:none; }
.assessment-class-tabs { display:flex; flex-direction:column; gap:4px; max-height:250px; overflow:auto; padding-right:3px; }
.assessment-class-tabs button { min-height:38px; padding:6px 8px; grid-template-columns:5px minmax(0,1fr); gap:7px; border-radius:8px; }
.assessment-class-tabs button > i { width:5px; height:26px; }
.assessment-class-tabs strong { font-size: var(--cp-fs-0_72rem, .72rem); line-height:1.2; font-weight:700; }
.assessment-class-tabs small { margin-top:1px; font-size: var(--cp-fs-0_62rem, .62rem); white-space:normal; }
.assessment-period-browser { gap:5px; }
.assessment-browser-title { display:none !important; }
.assessment-period-section { grid-template-columns:82px minmax(0,1fr); gap:7px; padding-top:5px; }
.assessment-period-section > header { padding:4px 0; gap:1px; }
.assessment-period-section > header b { font-size: var(--cp-fs-0_72rem, .72rem); }
.assessment-period-section > header span,.assessment-period-section > header small { font-size: var(--cp-fs-0_61rem, .61rem); }
.assessment-project-buttons { display:flex; flex-wrap:wrap; gap:5px; }
.assessment-project-wrap { min-width:190px; flex:1 1 220px; }
.assessment-project-buttons button { min-height:39px; padding:6px 70px 6px 8px; border-radius:8px; }
.assessment-project-buttons strong { font-size: var(--cp-fs-0_72rem, .72rem); }
.assessment-project-buttons small { margin-top:1px; font-size: var(--cp-fs-0_61rem, .61rem); }
.assessment-project-actions button { padding:3px 5px; font-size: var(--cp-fs-8px, 8px); }
.empty-period { margin:5px 0; font-size: var(--cp-fs-0_7rem, .7rem); }

@media (max-width: 900px) {
  .assessment-browser { grid-template-columns: 160px minmax(0,1fr); }
  .assessment-class-tabs strong { font-size: var(--cp-fs-0_66rem, .66rem); }
  .schedule-grid,.schedule-row { grid-template-columns:52px repeat(5,minmax(98px,1fr)); }
}
@media (max-width: 680px) {
  .assessment-browser { display:block; }
  .assessment-class-tabs { flex-direction:row; max-height:none; overflow-x:auto; margin-bottom:8px; }
  .assessment-class-tabs button { min-width:145px; }
}

@media print {
  @page { size: A4 landscape; margin: 5mm; }
  body[data-print-section="assessment"] #print-assessment { font-family: Arial, sans-serif !important; zoom: .72; }
  body[data-print-section="assessment"] #print-assessment > header { padding: 4px 6px !important; border-bottom: 1px solid #9da7b7 !important; }
  body[data-print-section="assessment"] #print-assessment h2 { font-size: 10pt !important; margin: 0 !important; }
  body[data-print-section="assessment"] #print-assessment p,
  body[data-print-section="assessment"] #print-assessment small { font-size: 5.5pt !important; margin: 1px 0 !important; }
  body[data-print-section="assessment"] .assessment-matrix { font-size: 5.2pt !important; line-height: 1.05 !important; }
  body[data-print-section="assessment"] .assessment-matrix th,
  body[data-print-section="assessment"] .assessment-matrix td { padding: 2px 2px !important; height: 13px !important; border-color: #cbd1db !important; }
  body[data-print-section="assessment"] .assessment-matrix thead th { font-weight: 700 !important; }
  body[data-print-section="assessment"] .student-name img,
  body[data-print-section="assessment"] .avatar { width: 14px !important; height: 14px !important; }
  body[data-print-section="assessment"] .assessment-matrix select { appearance:none !important; border:0 !important; padding:0 !important; font-size:5pt !important; background:transparent !important; }
  body[data-print-section="assessment"] .assessment-scroll { max-height:none !important; overflow:visible !important; }
  body[data-print-section="assessment"] .assessment-matrix tr { break-inside:avoid !important; page-break-inside:avoid !important; }
}

/* Revisão 12 — correções de sincronização, horário, formulários e documentos */
.modal-footer {
  padding-left: 28px;
  padding-right: 28px;
  padding-bottom: 28px;
}
.modal-form .modal-footer,
.modal-body > .modal-footer {
  margin-left: -30px;
  margin-right: -30px;
}

.user-profile-panel {
  padding: 24px 28px 28px !important;
}
.user-profile-panel > header {
  margin: 0 0 20px !important;
}
.user-profile-panel > header h2,
.user-profile-panel > header p {
  margin-left: 0;
  margin-right: 0;
}
.profile-fields {
  gap: 16px 18px;
}

/* Horário integralmente ajustável à largura útil. */
.schedule {
  overflow-x: hidden;
}
.schedule-grid,
.schedule-row {
  width: 100%;
  min-width: 0 !important;
  grid-template-columns: 52px repeat(5, minmax(0, 1fr)) !important;
}
.schedule-grid > .schedule-row {
  display: grid !important;
  grid-column: 1 / -1;
  min-height: 52px;
  visibility: visible !important;
}
.schedule-cell {
  min-width: 0;
  overflow: hidden;
}
.schedule-card-main,
.schedule-card-main strong,
.schedule-card-main span,
.schedule-card-main small {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* Formulário de sumário e presenças. */
.modal-form .form-grid.three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: end;
}
.modal-form .form-grid.three > label,
.modal-form .form-grid.three > div {
  min-width: 0;
}
.lesson-slot-picker,
.lesson-date-lock {
  grid-column: 1 / -1;
}
.modal-form > label {
  width: 100%;
}
.modal-form > label textarea {
  width: 100%;
  min-height: 110px;
}
.attendance-editor {
  margin-top: 18px;
}
.attendance-editor > header {
  gap: 18px;
  padding: 14px 16px;
}

/* Pré-visualização do horário importado sem deslocamento lateral. */
.import-modal .table-scroll {
  overflow-x: hidden;
}
.schedule-import-preview {
  width: 100%;
  min-width: 0 !important;
  table-layout: fixed;
  font-size: var(--cp-fs-0_72rem, .72rem);
}
.schedule-import-preview th,
.schedule-import-preview td {
  padding: 6px 4px;
  overflow: hidden;
}
.schedule-import-preview th:nth-child(1),
.schedule-import-preview td:nth-child(1) { width: 42px; text-align: center; }
.schedule-import-preview th:nth-child(2),
.schedule-import-preview td:nth-child(2) { width: 86px; }
.schedule-import-preview th:nth-child(3),
.schedule-import-preview td:nth-child(3),
.schedule-import-preview th:nth-child(4),
.schedule-import-preview td:nth-child(4) { width: 72px; }
.schedule-import-preview th:nth-child(5),
.schedule-import-preview td:nth-child(5) { width: 76px; }
.schedule-import-preview th:nth-child(6),
.schedule-import-preview td:nth-child(6) { width: 135px; }
.schedule-import-preview th:nth-child(7),
.schedule-import-preview td:nth-child(7) { width: 170px; }
.schedule-import-preview th:nth-child(8),
.schedule-import-preview td:nth-child(8) { width: 72px; }
.schedule-import-preview th:nth-child(9),
.schedule-import-preview td:nth-child(9) { width: 78px; }
.schedule-import-preview input,
.schedule-import-preview select,
.schedule-import-preview button {
  width: 100%;
  min-width: 0;
  padding: 6px 5px;
  font-size: var(--cp-fs-0_7rem, .7rem);
}
.schedule-import-preview input[type="checkbox"] {
  width: auto;
}

/* Rubricas organizadas por turma. */
.rubric-browser {
  display: grid;
  grid-template-columns: 190px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  margin-bottom: 14px;
}
.rubric-class-tabs {
  display: grid;
  gap: 5px;
}
.rubric-class-tabs button {
  display: grid;
  gap: 2px;
  width: 100%;
  border: 1px solid var(--line);
  border-left: 4px solid var(--blue);
  border-radius: 9px;
  padding: 8px 10px;
  background: var(--surface);
  color: var(--ink);
  text-align: left;
  cursor: pointer;
}
.rubric-class-tabs button.active {
  border-color: var(--blue);
  background: var(--blue-soft);
}
.rubric-class-tabs strong { font-size: var(--cp-fs-0_76rem, .76rem); }
.rubric-class-tabs small { color: var(--muted); font-size: var(--cp-fs-0_64rem, .64rem); }
.rubric-browser .rubric-tabs {
  margin: 0;
}

/* Cabeçalho e alinhamento dos documentos de avaliação. */
.assessment-document-heading {
  display: flex;
  align-items: center;
  gap: 20px;
  min-width: 0;
}
.assessment-school-logo {
  width: 245px;
  max-height: 74px;
  object-fit: contain;
  object-position: left center;
}
.assessment-document-heading h2,
.assessment-document-heading p,
.assessment-document-heading small {
  margin: 0;
}
.assessment-document-heading p { margin-top: 5px; }
.assessment-document-heading small { display: block; margin-top: 4px; color: var(--muted); }
.assessment-matrix .grade-cell,
.assessment-matrix .result-cell,
.assessment-matrix tbody td:nth-last-child(2) {
  text-align: center;
}
.assessment-matrix .grade-select {
  text-align: center;
  text-align-last: center;
  margin: 0 auto;
}
.assessment-matrix .criterion-row th > span {
  display: grid;
  place-items: center;
  gap: 4px;
}
.assessment-matrix .criterion-row th small {
  display: block;
  text-align: center;
}
.assessment-matrix .criterion-row th b {
  display: block;
  color: var(--blue-dark);
  font-size: var(--cp-fs-0_68rem, .68rem);
}

.score-summary {
  justify-content: flex-start;
}
.score-summary > div {
  gap: 10px;
}
.score-level {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.score-level .level {
  margin: 0;
}

@media (max-width: 900px) {
  .modal-form .form-grid.three { grid-template-columns: 1fr 1fr; }
  .rubric-browser { grid-template-columns: 155px minmax(0, 1fr); }
  .assessment-school-logo { width: 190px; }
}
@media (max-width: 700px) {
  .modal-form .form-grid.three { grid-template-columns: 1fr; }
  .rubric-browser { display: block; }
  .rubric-class-tabs { display: flex; overflow-x: auto; margin-bottom: 9px; }
  .rubric-class-tabs button { min-width: 145px; }
  .assessment-document-heading { align-items: flex-start; flex-direction: column; }
  .assessment-school-logo { width: 210px; }
}

@media print {
  body[data-print-section="assessment"] #print-assessment {
    zoom: .68;
  }
  body[data-print-section="assessment"] .assessment-header {
    align-items: center !important;
    padding: 7px 9px !important;
  }
  body[data-print-section="assessment"] .assessment-school-logo {
    width: 190px !important;
    max-height: 54px !important;
  }
  body[data-print-section="assessment"] .assessment-document-heading {
    gap: 12px !important;
  }
  body[data-print-section="assessment"] .assessment-document-heading h2 {
    font-size: 10pt !important;
  }
  body[data-print-section="assessment"] .assessment-document-heading p,
  body[data-print-section="assessment"] .assessment-document-heading small {
    font-size: 6pt !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .grade-cell,
  body[data-print-section="assessment"] .assessment-matrix .result-cell,
  body[data-print-section="assessment"] .assessment-matrix td {
    text-align: center !important;
    vertical-align: middle !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .sticky-student {
    text-align: left !important;
  }
}


/* Revisão 13 — pontos ajustáveis e documentos personalizáveis */
.print-only { display: none; }
.document-layout-panel { padding: 24px 28px 28px; }
.document-layout-panel > header { margin-bottom: 18px; }
.document-layout-fields { gap: 14px 18px; }
.document-logo-toggle { display: flex; align-items: center; margin-bottom: 16px; }
.document-logo-toggle > span { display: inline-flex; gap: 9px; align-items: center; }
.document-logo-toggle input { width: 18px; height: 18px; }
.document-token-help { margin: 14px 0 0; color: var(--muted); font-size: var(--cp-fs-0_76rem, .76rem); line-height: 1.5; }

.assessment-matrix th,
.assessment-matrix td { min-width: 84px; }
.grade-entry { display: grid; justify-items: center; gap: 4px; min-width: 78px; }
.grade-points { display: inline-flex; align-items: center; justify-content: center; gap: 3px; white-space: nowrap; }
.grade-points input,
.score-point-editor input {
  width: 48px;
  min-height: 27px;
  padding: 3px 4px;
  border: 1px solid var(--line);
  border-radius: 7px;
  text-align: right;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}
.grade-points small { font-size: var(--cp-fs-0_62rem, .62rem); color: var(--muted); }
.custom-points-marker { color: #c56828; font-style: normal; font-size: var(--cp-fs-1_2rem, 1.2rem); line-height: .7; }
.score-point-editor { display: inline-flex; align-items: center; justify-content: flex-end; gap: 4px; min-width: 105px; }
.score-point-editor b { white-space: nowrap; }
.score-row { grid-template-columns: minmax(0,1fr) 150px 128px; }

.document-print-footer {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 16px;
  align-items: center;
  border-top: 1px solid #bfc7d3;
  margin: 14px 20px 0;
  padding: 8px 0 0;
  color: #667085;
  font-size: var(--cp-fs-0_72rem, .72rem);
}
.document-print-footer span:nth-child(2) { text-align: center; }
.document-print-footer span:nth-child(3) { text-align: right; }
.document-context-line { color: var(--blue-dark) !important; font-weight: 650; }

@media print {
  .print-only { display: flex !important; }
  body[data-print-section="schedule"] #print-schedule {
    display: block !important;
    width: 100% !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
  }
  body[data-print-section="schedule"] .schedule-document-header {
    width: 252mm;
    margin: 0 auto 6mm;
    padding-bottom: 4mm;
    border-bottom: 1px solid #9da8b8;
    align-items: center;
    gap: 10mm;
  }
  body[data-print-section="schedule"] .schedule-document-header img {
    width: 58mm;
    max-height: 19mm;
    object-fit: contain;
    object-position: left center;
  }
  body[data-print-section="schedule"] .schedule-document-header h1 {
    margin: 0 0 1.5mm;
    font: 700 16pt Arial, sans-serif;
    color: #1f2937;
  }
  body[data-print-section="schedule"] .schedule-document-header p,
  body[data-print-section="schedule"] .schedule-document-header small {
    display: block;
    margin: .7mm 0 0;
    font: 8pt Arial, sans-serif;
    color: #596579;
  }
  body[data-print-section="schedule"] .schedule-print-body {
    width: 244mm;
    margin: 0 auto;
  }
  body[data-print-section="schedule"] .schedule-grid,
  body[data-print-section="schedule"] .schedule-row {
    width: 244mm !important;
    grid-template-columns: 13mm repeat(5, minmax(0, 1fr)) !important;
  }
  body[data-print-section="schedule"] .schedule-grid > .schedule-row {
    min-height: 13mm !important;
  }
  body[data-print-section="schedule"] .schedule-cell { min-height: 13mm !important; padding: 1mm !important; }
  body[data-print-section="schedule"] .schedule-card { padding: 1.2mm 1.5mm !important; min-height: 10.5mm !important; }
  body[data-print-section="schedule"] .schedule-card strong { font-size: 7pt !important; }
  body[data-print-section="schedule"] .schedule-card span { font-size: 5.8pt !important; }
  body[data-print-section="schedule"] .schedule-card small { font-size: 5.3pt !important; }
  body[data-print-section="schedule"] .schedule-document-footer {
    display: grid !important;
    width: 252mm;
    margin: 7mm auto 0;
    font: 7pt Arial, sans-serif;
  }
  body[data-print-section="assessment"] .document-print-footer {
    display: grid !important;
    margin: 5mm 8mm 0 !important;
    font-size: 6pt !important;
  }
  body[data-print-section="assessment"] .grade-entry { gap: 0 !important; }
  body[data-print-section="assessment"] .grade-points input {
    appearance: none !important;
    border: 0 !important;
    width: 24px !important;
    padding: 0 !important;
    font-size: 5pt !important;
    background: transparent !important;
  }
  body[data-print-section="assessment"] .grade-points small { font-size: 4.8pt !important; }
  .custom-points-marker { display: none !important; }
}

/* Impressão do horário: manter visível o conteúdo dos blocos, apesar da regra global que oculta botões. */
@media print {
  body[data-print-section="schedule"] .schedule-card-main {
    display: block !important;
    width: 100% !important;
    color: #1f2937 !important;
    text-align: left !important;
  }
  body[data-print-section="schedule"] .schedule-card-main strong,
  body[data-print-section="schedule"] .schedule-card-main span,
  body[data-print-section="schedule"] .schedule-card-main small {
    display: block !important;
    visibility: visible !important;
  }
}


/* Revisão 14 — sincronização estável, avaliação compacta e documentos institucionais */
.rubric-browser { display: grid; grid-template-columns: 1fr; gap: 8px; }
.rubric-compact-row { display: grid; grid-template-columns: 92px minmax(0,1fr); align-items: center; gap: 9px; padding: 6px 0; border-bottom: 1px solid var(--line); }
.rubric-row-label { color: var(--muted); text-transform: uppercase; font-size: var(--cp-fs-0_62rem, .62rem); font-weight: 850; letter-spacing: .06em; }
.rubric-class-tabs, .rubric-browser .rubric-tabs { display: flex; flex-wrap: wrap; gap: 6px; overflow: visible; }
.rubric-class-tabs button { min-width: 0; width: auto; padding: 6px 10px; border-radius: 9px; font-size: var(--cp-fs-0_68rem, .68rem); line-height: 1; }
.rubric-browser .rubric-tabs button { min-width: 0; width: auto; padding: 7px 10px; border-radius: 9px; gap: 2px; }
.rubric-browser .rubric-tabs button strong { font-size: var(--cp-fs-0_72rem, .72rem); }
.rubric-browser .rubric-tabs button small { font-size: var(--cp-fs-0_59rem, .59rem); }
.rubric-browser .rubric-tabs button.general { border-style: dashed; }
.general-rubric-row { border-bottom: 0; }

.assessment-matrix col.col-number { width: 3.5%; }
.assessment-matrix col.col-student { width: 17%; }
.assessment-matrix col.col-result { width: 6%; }
.assessment-matrix col.col-level { width: 4.5%; }
.assessment-matrix col.col-actions { width: 5%; }
.assessment-matrix col.col-criterion { width: auto; }
.assessment-matrix .result-heading,
.assessment-matrix .level-heading,
.assessment-matrix .result-cell,
.assessment-matrix .level-cell { text-align: center !important; vertical-align: middle !important; }
.assessment-matrix .level-cell .level { margin-inline: auto; }
.grade-entry { display: inline-flex; align-items: center; justify-content: center; gap: 2px; min-width: 76px; white-space: nowrap; }
.grade-entry .grade-select { width: 43px; min-width: 43px; min-height: 27px; padding: 2px 1px; }
.grade-points.compact-points { gap: 1px; font-size: var(--cp-fs-0_67rem, .67rem); font-weight: 750; color: var(--text); }
.grade-points.compact-points input { width: 31px; min-height: 24px; padding: 1px 2px; text-align: center; border-radius: 5px; }
.assessment-matrix tbody td { padding-top: 3px; padding-bottom: 3px; }

.score-row { grid-template-columns: minmax(0,1fr) auto; gap: 8px 12px; padding: 13px 18px; }
.score-choice-line { display: inline-flex; align-items: center; justify-content: flex-end; gap: 8px; white-space: nowrap; }
.score-choice-line select { width: 86px; min-width: 86px; }
.score-point-editor { min-width: 82px; gap: 2px; }
.score-point-editor input { width: 42px; text-align: center; }
.score-row > p { grid-column: 1 / -1; margin-top: 0; }

.assessment-document-heading,
.schedule-document-header { display: block; width: 100%; }
.document-brand-row { display: flex; align-items: center; justify-content: space-between; width: 100%; gap: 24px; }
.document-brand-row .ministry-logo { width: 330px; max-height: 72px; object-fit: contain; object-position: left center; }
.document-brand-row .assessment-school-logo { width: 255px; max-height: 72px; object-fit: contain; object-position: right center; }
.document-title-block { text-align: center; margin-top: 8px; }
.document-title-block h1,
.document-title-block h2 { margin: 0; font-size: var(--cp-fs-1_32rem, 1.32rem); }
.document-title-block p,
.document-title-block small { display: block; margin: 3px 0 0; }

.institutional-footer { grid-template-columns: 1fr 1.5fr 1fr; align-items: end; }
.institutional-footer .footer-side { display: flex; align-items: end; gap: 8px; min-width: 0; }
.institutional-footer .footer-left { justify-content: flex-start; }
.institutional-footer .footer-right { justify-content: flex-end; text-align: right; }
.institutional-footer .footer-center { text-align: center; }
.institutional-footer img { width: 46px; height: 46px; object-fit: contain; flex: none; }

@media (max-width: 700px) {
  .rubric-compact-row { grid-template-columns: 1fr; gap: 5px; }
  .rubric-class-tabs { overflow: visible; flex-wrap: wrap; }
  .rubric-class-tabs button { min-width: 0; }
  .score-row { grid-template-columns: 1fr; }
  .score-choice-line { justify-content: flex-start; }
}

@page assessmentLandscape { size: A4 landscape; margin: 5mm; }
@page assessmentPortrait { size: A4 portrait; margin: 5mm; }
@page scheduleLandscape { size: A4 landscape; margin: 8mm; }

@media print {
  body[data-print-section="assessment"] { background:#fff !important; }
  body[data-print-section="assessment"] #print-assessment.assessment-landscape { page: assessmentLandscape; }
  body[data-print-section="assessment"] #print-assessment.assessment-portrait { page: assessmentPortrait; }
  body[data-print-section="assessment"] #print-assessment {
    zoom: .92 !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
    background: #fff !important;
    overflow: visible !important;
  }
  body[data-print-section="assessment"] .assessment-header {
    display: block !important;
    padding: 0 4mm 2mm !important;
    border-bottom: 1px solid #5b6472 !important;
  }
  body[data-print-section="assessment"] .assessment-document-heading { display:block !important; }
  body[data-print-section="assessment"] .document-brand-row { display:flex !important; }
  body[data-print-section="assessment"] .document-brand-row .ministry-logo { width: 58mm !important; max-height: 16mm !important; }
  body[data-print-section="assessment"] .document-brand-row .assessment-school-logo { width: 46mm !important; max-height: 16mm !important; }
  body[data-print-section="assessment"] .document-title-block { margin-top: 1.4mm !important; text-align:center !important; }
  body[data-print-section="assessment"] .document-title-block h2 { font-size: 13pt !important; line-height:1.05 !important; }
  body[data-print-section="assessment"] .document-title-block p { font-size: 7.2pt !important; margin-top:.7mm !important; }
  body[data-print-section="assessment"] .document-title-block small { font-size: 6.6pt !important; margin-top:.5mm !important; }
  body[data-print-section="assessment"] .assessment-scroll { overflow:visible !important; background:#fff !important; max-height:none !important; }
  body[data-print-section="assessment"] .assessment-matrix {
    width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    font-size: 6.2pt !important;
    line-height: 1 !important;
    background:#fff !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .category-row > th { height: 17px !important; min-height:17px !important; max-height:17px !important; padding:1px !important; }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th { height: 34px !important; min-height:34px !important; max-height:34px !important; padding:1px !important; vertical-align:middle !important; }
  body[data-print-section="assessment"] .assessment-matrix .rubric-group,
  body[data-print-section="assessment"] .assessment-matrix .rubric-group > span { font-size: 5.4pt !important; line-height:1 !important; text-align:center !important; }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row th small { font-size: 5.4pt !important; line-height:1 !important; max-height:2.9em !important; text-align:center !important; }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row th b { font-size: 6.4pt !important; margin-top:1px !important; text-align:center !important; }
  body[data-print-section="assessment"] .assessment-matrix tbody tr { height: 16px !important; min-height:16px !important; max-height:16px !important; }
  body[data-print-section="assessment"] .assessment-matrix tbody td { height:16px !important; min-height:16px !important; max-height:16px !important; padding:0 1px !important; vertical-align:middle !important; background-clip:padding-box !important; }
  body[data-print-section="assessment"] .assessment-matrix .student-name { gap:3px !important; }
  body[data-print-section="assessment"] .assessment-matrix .student-name > img,
  body[data-print-section="assessment"] .assessment-matrix .student-name > span { width:11px !important; height:11px !important; }
  body[data-print-section="assessment"] .assessment-matrix .student-name strong { font-size:5.6pt !important; }
  body[data-print-section="assessment"] .grade-entry { display:inline-flex !important; gap:1px !important; min-width:0 !important; }
  body[data-print-section="assessment"] .grade-select { width:22px !important; min-width:22px !important; min-height:12px !important; font-size:5.4pt !important; }
  body[data-print-section="assessment"] .grade-points.compact-points { font-size:5.2pt !important; }
  body[data-print-section="assessment"] .grade-points.compact-points input { width:16px !important; min-height:11px !important; font-size:5.2pt !important; }
  body[data-print-section="assessment"] .level { min-width:14px !important; min-height:14px !important; padding:1px 3px !important; font-size:6pt !important; }
  body[data-print-section="assessment"] .no-print { display:none !important; width:0 !important; }
  body[data-print-section="assessment"] .document-print-footer {
    display:grid !important;
    margin: 2.5mm 4mm 0 !important;
    padding-top:1.5mm !important;
    font-size:5.8pt !important;
    background:#fff !important;
  }
  body[data-print-section="assessment"] .institutional-footer img { width:12mm !important; height:12mm !important; }

  body[data-print-section="schedule"] #print-schedule { page: scheduleLandscape; }
  body[data-print-section="schedule"] .schedule-document-header { display:block !important; width:252mm !important; margin:0 auto 4mm !important; padding-bottom:2.5mm !important; }
  body[data-print-section="schedule"] .schedule-document-header .document-brand-row { display:flex !important; }
  body[data-print-section="schedule"] .schedule-document-header .ministry-logo { width:60mm !important; max-height:16mm !important; }
  body[data-print-section="schedule"] .schedule-document-header .assessment-school-logo { width:46mm !important; max-height:16mm !important; }
  body[data-print-section="schedule"] .schedule-document-header .document-title-block { text-align:center !important; margin-top:1.5mm !important; }
  body[data-print-section="schedule"] .schedule-document-header h1 { font-size:15pt !important; }
  body[data-print-section="schedule"] .schedule-document-footer.institutional-footer { display:grid !important; }
  body[data-print-section="schedule"] .schedule-document-footer img { width:13mm !important; height:13mm !important; }
}

/* Ajuste fino da largura dos critérios: apenas o necessário para MB (20). */
.assessment-matrix .criterion-row th,
.assessment-matrix .grade-cell { min-width: 98px; width: 98px; }
.grade-entry { min-width: 92px; }
.grade-entry .grade-select { width: 48px; min-width: 48px; }
.grade-entry .grade-select { appearance: none; background-image: none; padding-inline: 2px; }
.grade-points.compact-points input { appearance: textfield; -moz-appearance: textfield; }
.grade-points.compact-points input::-webkit-outer-spin-button,
.grade-points.compact-points input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.score-row { grid-template-columns: minmax(0,1fr) 190px; }
.score-choice-line { min-width: 188px; flex-wrap: nowrap; }
.score-choice-line select { width: 78px; min-width: 78px; }
.score-point-editor { min-width: 96px; }
.score-row > .score-choice-line { flex-direction: row; }

/* Revisão 14 — horário institucional numa única página, mesmo com identificação completa. */
@media print {
  body[data-print-section="schedule"] #print-schedule {
    break-inside: auto !important;
    page-break-inside: auto !important;
    min-height: 0 !important;
    height: auto !important;
  }
  body[data-print-section="schedule"] .schedule-document-header,
  body[data-print-section="schedule"] .schedule-print-body,
  body[data-print-section="schedule"] .schedule-document-footer {
    break-inside: avoid !important;
    page-break-inside: avoid !important;
  }
  body[data-print-section="schedule"] .schedule-document-header {
    margin-bottom: 2.5mm !important;
    padding-bottom: 2mm !important;
  }
  body[data-print-section="schedule"] .schedule-document-header .ministry-logo {
    max-height: 14mm !important;
  }
  body[data-print-section="schedule"] .schedule-document-header .assessment-school-logo {
    max-height: 14mm !important;
  }
  body[data-print-section="schedule"] .schedule-document-header h1 {
    margin-bottom: .8mm !important;
    font-size: 14pt !important;
    line-height: 1 !important;
  }
  body[data-print-section="schedule"] .schedule-document-header p,
  body[data-print-section="schedule"] .schedule-document-header small {
    margin-top: .35mm !important;
    font-size: 7pt !important;
    line-height: 1.05 !important;
  }
  body[data-print-section="schedule"] .schedule-print-body,
  body[data-print-section="schedule"] .schedule-grid,
  body[data-print-section="schedule"] .schedule-row {
    width: 238mm !important;
  }
  body[data-print-section="schedule"] .schedule-grid,
  body[data-print-section="schedule"] .schedule-row {
    grid-template-columns: 12mm repeat(5, minmax(0, 1fr)) !important;
  }
  body[data-print-section="schedule"] .schedule-corner,
  body[data-print-section="schedule"] .schedule-day {
    padding: 1.5mm !important;
    font-size: 6.3pt !important;
  }
  body[data-print-section="schedule"] .schedule-grid > .schedule-row,
  body[data-print-section="schedule"] .schedule-cell {
    min-height: 11.2mm !important;
  }
  body[data-print-section="schedule"] .schedule-time {
    padding: 1.5mm .5mm !important;
    font-size: 6.2pt !important;
  }
  body[data-print-section="schedule"] .schedule-card {
    min-height: 8.9mm !important;
    padding: .8mm 1.1mm !important;
  }
  body[data-print-section="schedule"] .schedule-card strong { font-size: 6.5pt !important; }
  body[data-print-section="schedule"] .schedule-card span { font-size: 5.4pt !important; }
  body[data-print-section="schedule"] .schedule-card small { margin-top: .5mm !important; font-size: 4.9pt !important; }
  body[data-print-section="schedule"] .schedule-document-footer {
    width: 252mm !important;
    margin-top: 3mm !important;
    padding-top: 1.2mm !important;
    font-size: 6.2pt !important;
  }
  body[data-print-section="schedule"] .schedule-document-footer img {
    width: 10mm !important;
    height: 10mm !important;
  }
}

/* Revisão 16 — documentos institucionais apenas na impressão. */
@media screen {
  /* Na grelha de avaliação, o cabeçalho institucional não ocupa espaço na aplicação. */
  .assessment-document-heading { display: none !important; }
  .assessment-header { justify-content: flex-end; min-height: 0; }

  /* No horário mantém-se a identificação textual, mas sem os logótipos. */
  .schedule-document-header.print-only { display: block !important; width: 100% !important; }
  .schedule-document-header .document-brand-row { display: none !important; }
  .schedule-document-header .document-title-block { margin-top: 0 !important; }

  /* Rodapés institucionais são exclusivamente elementos de impressão/PDF. */
  .document-print-footer,
  .schedule-document-footer,
  .institutional-footer { display: none !important; }
}

/* Revisão 17 — margem de segurança uniforme para botões nas janelas da aplicação. */
/*
   Os rodapés dos formulários ocupam toda a largura útil do modal, mas os botões
   ficam alinhados com o conteúdo do formulário em vez de encostados ao limite.
   Estas regras têm especificidade suficiente para prevalecer sobre os estilos
   antigos de .modal-form .modal-footer, que anulavam o padding horizontal.
*/
.modal-footer {
  padding-left: 30px !important;
  padding-right: 30px !important;
}
.modal-form > .modal-footer,
.modal-body > .modal-footer {
  margin-left: -30px !important;
  margin-right: -30px !important;
  padding-left: 30px !important;
  padding-right: 30px !important;
}

/* Em ecrãs estreitos mantém-se a mesma margem visual usada pelo conteúdo. */
@media (width <= 580px) {
  .modal-header,
  .modal-body,
  .modal-form {
    padding-left: 18px !important;
    padding-right: 18px !important;
  }
  .modal-footer,
  .modal-form > .modal-footer,
  .modal-body > .modal-footer,
  .modal-footer.sticky {
    margin-left: -18px !important;
    margin-right: -18px !important;
    padding-left: 18px !important;
    padding-right: 18px !important;
  }
  .modal > .modal-footer {
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}


/* Revisão 18 — acessibilidade: controlo discreto do tamanho da tipografia.
   O tamanho original (100%) é sempre o mínimo. Os botões A− / A+ permitem
   aumentar gradualmente a tipografia até 140%, sem alterar os documentos impressos. */
:root, html[data-cp-font-size="0"] {
  --cp-fs-0_51rem: .51rem;
  --cp-fs-0_53rem: .53rem;
  --cp-fs-0_56rem: .56rem;
  --cp-fs-0_57rem: .57rem;
  --cp-fs-0_58rem: .58rem;
  --cp-fs-0_59rem: .59rem;
  --cp-fs-0_61rem: .61rem;
  --cp-fs-0_62rem: .62rem;
  --cp-fs-0_64rem: .64rem;
  --cp-fs-0_65rem: .65rem;
  --cp-fs-0_66rem: .66rem;
  --cp-fs-0_67rem: .67rem;
  --cp-fs-0_68rem: .68rem;
  --cp-fs-0_69rem: .69rem;
  --cp-fs-0_72rem: .72rem;
  --cp-fs-0_73rem: .73rem;
  --cp-fs-0_76rem: .76rem;
  --cp-fs-0_77rem: .77rem;
  --cp-fs-0_78rem: .78rem;
  --cp-fs-0_7rem: .7rem;
  --cp-fs-0_82rem: .82rem;
  --cp-fs-0_84rem: .84rem;
  --cp-fs-0_86rem: .86rem;
  --cp-fs-0_87rem: .87rem;
  --cp-fs-0_88rem: .88rem;
  --cp-fs-0_8rem: .8rem;
  --cp-fs-0_95rem: .95rem;
  --cp-fs-0_96rem: .96rem;
  --cp-fs-0_9rem: .9rem;
  --cp-fs-10px: 10px;
  --cp-fs-11px: 11px;
  --cp-fs-12px: 12px;
  --cp-fs-13px: 13px;
  --cp-fs-14px: 14px;
  --cp-fs-15px: 15px;
  --cp-fs-16px: 16px;
  --cp-fs-17px: 17px;
  --cp-fs-18px: 18px;
  --cp-fs-19px: 19px;
  --cp-fs-1_05rem: 1.05rem;
  --cp-fs-1_15rem: 1.15rem;
  --cp-fs-1_2rem: 1.2rem;
  --cp-fs-1_32rem: 1.32rem;
  --cp-fs-1_45rem: 1.45rem;
  --cp-fs-1_4rem: 1.4rem;
  --cp-fs-1_65rem: 1.65rem;
  --cp-fs-1_6rem: 1.6rem;
  --cp-fs-20px: 20px;
  --cp-fs-22px: 22px;
  --cp-fs-23px: 23px;
  --cp-fs-24px: 24px;
  --cp-fs-25px: 25px;
  --cp-fs-28px: 28px;
  --cp-fs-29px: 29px;
  --cp-fs-6_8px: 6.8px;
  --cp-fs-7_5px: 7.5px;
  --cp-fs-7px: 7px;
  --cp-fs-8_5px: 8.5px;
  --cp-fs-8px: 8px;
  --cp-fs-9px: 9px;
}
html[data-cp-font-size="1"] {
  --cp-fs-0_51rem: .561rem;
  --cp-fs-0_53rem: .583rem;
  --cp-fs-0_56rem: .616rem;
  --cp-fs-0_57rem: .627rem;
  --cp-fs-0_58rem: .638rem;
  --cp-fs-0_59rem: .649rem;
  --cp-fs-0_61rem: .671rem;
  --cp-fs-0_62rem: .682rem;
  --cp-fs-0_64rem: .704rem;
  --cp-fs-0_65rem: .715rem;
  --cp-fs-0_66rem: .726rem;
  --cp-fs-0_67rem: .737rem;
  --cp-fs-0_68rem: .748rem;
  --cp-fs-0_69rem: .759rem;
  --cp-fs-0_72rem: .792rem;
  --cp-fs-0_73rem: .803rem;
  --cp-fs-0_76rem: .836rem;
  --cp-fs-0_77rem: .847rem;
  --cp-fs-0_78rem: .858rem;
  --cp-fs-0_7rem: .77rem;
  --cp-fs-0_82rem: .902rem;
  --cp-fs-0_84rem: .924rem;
  --cp-fs-0_86rem: .946rem;
  --cp-fs-0_87rem: .957rem;
  --cp-fs-0_88rem: .968rem;
  --cp-fs-0_8rem: .88rem;
  --cp-fs-0_95rem: 1.045rem;
  --cp-fs-0_96rem: 1.056rem;
  --cp-fs-0_9rem: .99rem;
  --cp-fs-10px: 11px;
  --cp-fs-11px: 12.1px;
  --cp-fs-12px: 13.2px;
  --cp-fs-13px: 14.3px;
  --cp-fs-14px: 15.4px;
  --cp-fs-15px: 16.5px;
  --cp-fs-16px: 17.6px;
  --cp-fs-17px: 18.7px;
  --cp-fs-18px: 19.8px;
  --cp-fs-19px: 20.9px;
  --cp-fs-1_05rem: 1.155rem;
  --cp-fs-1_15rem: 1.265rem;
  --cp-fs-1_2rem: 1.32rem;
  --cp-fs-1_32rem: 1.452rem;
  --cp-fs-1_45rem: 1.595rem;
  --cp-fs-1_4rem: 1.54rem;
  --cp-fs-1_65rem: 1.815rem;
  --cp-fs-1_6rem: 1.76rem;
  --cp-fs-20px: 22px;
  --cp-fs-22px: 24.2px;
  --cp-fs-23px: 25.3px;
  --cp-fs-24px: 26.4px;
  --cp-fs-25px: 27.5px;
  --cp-fs-28px: 30.8px;
  --cp-fs-29px: 31.9px;
  --cp-fs-6_8px: 7.48px;
  --cp-fs-7_5px: 8.25px;
  --cp-fs-7px: 7.7px;
  --cp-fs-8_5px: 9.35px;
  --cp-fs-8px: 8.8px;
  --cp-fs-9px: 9.9px;
}
html[data-cp-font-size="2"] {
  --cp-fs-0_51rem: .612rem;
  --cp-fs-0_53rem: .636rem;
  --cp-fs-0_56rem: .672rem;
  --cp-fs-0_57rem: .684rem;
  --cp-fs-0_58rem: .696rem;
  --cp-fs-0_59rem: .708rem;
  --cp-fs-0_61rem: .732rem;
  --cp-fs-0_62rem: .744rem;
  --cp-fs-0_64rem: .768rem;
  --cp-fs-0_65rem: .78rem;
  --cp-fs-0_66rem: .792rem;
  --cp-fs-0_67rem: .804rem;
  --cp-fs-0_68rem: .816rem;
  --cp-fs-0_69rem: .828rem;
  --cp-fs-0_72rem: .864rem;
  --cp-fs-0_73rem: .876rem;
  --cp-fs-0_76rem: .912rem;
  --cp-fs-0_77rem: .924rem;
  --cp-fs-0_78rem: .936rem;
  --cp-fs-0_7rem: .84rem;
  --cp-fs-0_82rem: .984rem;
  --cp-fs-0_84rem: 1.008rem;
  --cp-fs-0_86rem: 1.032rem;
  --cp-fs-0_87rem: 1.044rem;
  --cp-fs-0_88rem: 1.056rem;
  --cp-fs-0_8rem: .96rem;
  --cp-fs-0_95rem: 1.14rem;
  --cp-fs-0_96rem: 1.152rem;
  --cp-fs-0_9rem: 1.08rem;
  --cp-fs-10px: 12px;
  --cp-fs-11px: 13.2px;
  --cp-fs-12px: 14.4px;
  --cp-fs-13px: 15.6px;
  --cp-fs-14px: 16.8px;
  --cp-fs-15px: 18px;
  --cp-fs-16px: 19.2px;
  --cp-fs-17px: 20.4px;
  --cp-fs-18px: 21.6px;
  --cp-fs-19px: 22.8px;
  --cp-fs-1_05rem: 1.26rem;
  --cp-fs-1_15rem: 1.38rem;
  --cp-fs-1_2rem: 1.44rem;
  --cp-fs-1_32rem: 1.584rem;
  --cp-fs-1_45rem: 1.74rem;
  --cp-fs-1_4rem: 1.68rem;
  --cp-fs-1_65rem: 1.98rem;
  --cp-fs-1_6rem: 1.92rem;
  --cp-fs-20px: 24px;
  --cp-fs-22px: 26.4px;
  --cp-fs-23px: 27.6px;
  --cp-fs-24px: 28.8px;
  --cp-fs-25px: 30px;
  --cp-fs-28px: 33.6px;
  --cp-fs-29px: 34.8px;
  --cp-fs-6_8px: 8.16px;
  --cp-fs-7_5px: 9px;
  --cp-fs-7px: 8.4px;
  --cp-fs-8_5px: 10.2px;
  --cp-fs-8px: 9.6px;
  --cp-fs-9px: 10.8px;
}
html[data-cp-font-size="3"] {
  --cp-fs-0_51rem: .663rem;
  --cp-fs-0_53rem: .689rem;
  --cp-fs-0_56rem: .728rem;
  --cp-fs-0_57rem: .741rem;
  --cp-fs-0_58rem: .754rem;
  --cp-fs-0_59rem: .767rem;
  --cp-fs-0_61rem: .793rem;
  --cp-fs-0_62rem: .806rem;
  --cp-fs-0_64rem: .832rem;
  --cp-fs-0_65rem: .845rem;
  --cp-fs-0_66rem: .858rem;
  --cp-fs-0_67rem: .871rem;
  --cp-fs-0_68rem: .884rem;
  --cp-fs-0_69rem: .897rem;
  --cp-fs-0_72rem: .936rem;
  --cp-fs-0_73rem: .949rem;
  --cp-fs-0_76rem: .988rem;
  --cp-fs-0_77rem: 1.001rem;
  --cp-fs-0_78rem: 1.014rem;
  --cp-fs-0_7rem: .91rem;
  --cp-fs-0_82rem: 1.066rem;
  --cp-fs-0_84rem: 1.092rem;
  --cp-fs-0_86rem: 1.118rem;
  --cp-fs-0_87rem: 1.131rem;
  --cp-fs-0_88rem: 1.144rem;
  --cp-fs-0_8rem: 1.04rem;
  --cp-fs-0_95rem: 1.235rem;
  --cp-fs-0_96rem: 1.248rem;
  --cp-fs-0_9rem: 1.17rem;
  --cp-fs-10px: 13px;
  --cp-fs-11px: 14.3px;
  --cp-fs-12px: 15.6px;
  --cp-fs-13px: 16.9px;
  --cp-fs-14px: 18.2px;
  --cp-fs-15px: 19.5px;
  --cp-fs-16px: 20.8px;
  --cp-fs-17px: 22.1px;
  --cp-fs-18px: 23.4px;
  --cp-fs-19px: 24.7px;
  --cp-fs-1_05rem: 1.365rem;
  --cp-fs-1_15rem: 1.495rem;
  --cp-fs-1_2rem: 1.56rem;
  --cp-fs-1_32rem: 1.716rem;
  --cp-fs-1_45rem: 1.885rem;
  --cp-fs-1_4rem: 1.82rem;
  --cp-fs-1_65rem: 2.145rem;
  --cp-fs-1_6rem: 2.08rem;
  --cp-fs-20px: 26px;
  --cp-fs-22px: 28.6px;
  --cp-fs-23px: 29.9px;
  --cp-fs-24px: 31.2px;
  --cp-fs-25px: 32.5px;
  --cp-fs-28px: 36.4px;
  --cp-fs-29px: 37.7px;
  --cp-fs-6_8px: 8.84px;
  --cp-fs-7_5px: 9.75px;
  --cp-fs-7px: 9.1px;
  --cp-fs-8_5px: 11.05px;
  --cp-fs-8px: 10.4px;
  --cp-fs-9px: 11.7px;
}
html[data-cp-font-size="4"] {
  --cp-fs-0_51rem: .714rem;
  --cp-fs-0_53rem: .742rem;
  --cp-fs-0_56rem: .784rem;
  --cp-fs-0_57rem: .798rem;
  --cp-fs-0_58rem: .812rem;
  --cp-fs-0_59rem: .826rem;
  --cp-fs-0_61rem: .854rem;
  --cp-fs-0_62rem: .868rem;
  --cp-fs-0_64rem: .896rem;
  --cp-fs-0_65rem: .91rem;
  --cp-fs-0_66rem: .924rem;
  --cp-fs-0_67rem: .938rem;
  --cp-fs-0_68rem: .952rem;
  --cp-fs-0_69rem: .966rem;
  --cp-fs-0_72rem: 1.008rem;
  --cp-fs-0_73rem: 1.022rem;
  --cp-fs-0_76rem: 1.064rem;
  --cp-fs-0_77rem: 1.078rem;
  --cp-fs-0_78rem: 1.092rem;
  --cp-fs-0_7rem: .98rem;
  --cp-fs-0_82rem: 1.148rem;
  --cp-fs-0_84rem: 1.176rem;
  --cp-fs-0_86rem: 1.204rem;
  --cp-fs-0_87rem: 1.218rem;
  --cp-fs-0_88rem: 1.232rem;
  --cp-fs-0_8rem: 1.12rem;
  --cp-fs-0_95rem: 1.33rem;
  --cp-fs-0_96rem: 1.344rem;
  --cp-fs-0_9rem: 1.26rem;
  --cp-fs-10px: 14px;
  --cp-fs-11px: 15.4px;
  --cp-fs-12px: 16.8px;
  --cp-fs-13px: 18.2px;
  --cp-fs-14px: 19.6px;
  --cp-fs-15px: 21px;
  --cp-fs-16px: 22.4px;
  --cp-fs-17px: 23.8px;
  --cp-fs-18px: 25.2px;
  --cp-fs-19px: 26.6px;
  --cp-fs-1_05rem: 1.47rem;
  --cp-fs-1_15rem: 1.61rem;
  --cp-fs-1_2rem: 1.68rem;
  --cp-fs-1_32rem: 1.848rem;
  --cp-fs-1_45rem: 2.03rem;
  --cp-fs-1_4rem: 1.96rem;
  --cp-fs-1_65rem: 2.31rem;
  --cp-fs-1_6rem: 2.24rem;
  --cp-fs-20px: 28px;
  --cp-fs-22px: 30.8px;
  --cp-fs-23px: 32.2px;
  --cp-fs-24px: 33.6px;
  --cp-fs-25px: 35px;
  --cp-fs-28px: 39.2px;
  --cp-fs-29px: 40.6px;
  --cp-fs-6_8px: 9.52px;
  --cp-fs-7_5px: 10.5px;
  --cp-fs-7px: 9.8px;
  --cp-fs-8_5px: 11.9px;
  --cp-fs-8px: 11.2px;
  --cp-fs-9px: 12.6px;
}
@media print {
  html[data-cp-font-size] {
  --cp-fs-0_51rem: .51rem !important;
  --cp-fs-0_53rem: .53rem !important;
  --cp-fs-0_56rem: .56rem !important;
  --cp-fs-0_57rem: .57rem !important;
  --cp-fs-0_58rem: .58rem !important;
  --cp-fs-0_59rem: .59rem !important;
  --cp-fs-0_61rem: .61rem !important;
  --cp-fs-0_62rem: .62rem !important;
  --cp-fs-0_64rem: .64rem !important;
  --cp-fs-0_65rem: .65rem !important;
  --cp-fs-0_66rem: .66rem !important;
  --cp-fs-0_67rem: .67rem !important;
  --cp-fs-0_68rem: .68rem !important;
  --cp-fs-0_69rem: .69rem !important;
  --cp-fs-0_72rem: .72rem !important;
  --cp-fs-0_73rem: .73rem !important;
  --cp-fs-0_76rem: .76rem !important;
  --cp-fs-0_77rem: .77rem !important;
  --cp-fs-0_78rem: .78rem !important;
  --cp-fs-0_7rem: .7rem !important;
  --cp-fs-0_82rem: .82rem !important;
  --cp-fs-0_84rem: .84rem !important;
  --cp-fs-0_86rem: .86rem !important;
  --cp-fs-0_87rem: .87rem !important;
  --cp-fs-0_88rem: .88rem !important;
  --cp-fs-0_8rem: .8rem !important;
  --cp-fs-0_95rem: .95rem !important;
  --cp-fs-0_96rem: .96rem !important;
  --cp-fs-0_9rem: .9rem !important;
  --cp-fs-10px: 10px !important;
  --cp-fs-11px: 11px !important;
  --cp-fs-12px: 12px !important;
  --cp-fs-13px: 13px !important;
  --cp-fs-14px: 14px !important;
  --cp-fs-15px: 15px !important;
  --cp-fs-16px: 16px !important;
  --cp-fs-17px: 17px !important;
  --cp-fs-18px: 18px !important;
  --cp-fs-19px: 19px !important;
  --cp-fs-1_05rem: 1.05rem !important;
  --cp-fs-1_15rem: 1.15rem !important;
  --cp-fs-1_2rem: 1.2rem !important;
  --cp-fs-1_32rem: 1.32rem !important;
  --cp-fs-1_45rem: 1.45rem !important;
  --cp-fs-1_4rem: 1.4rem !important;
  --cp-fs-1_65rem: 1.65rem !important;
  --cp-fs-1_6rem: 1.6rem !important;
  --cp-fs-20px: 20px !important;
  --cp-fs-22px: 22px !important;
  --cp-fs-23px: 23px !important;
  --cp-fs-24px: 24px !important;
  --cp-fs-25px: 25px !important;
  --cp-fs-28px: 28px !important;
  --cp-fs-29px: 29px !important;
  --cp-fs-6_8px: 6.8px !important;
  --cp-fs-7_5px: 7.5px !important;
  --cp-fs-7px: 7px !important;
  --cp-fs-8_5px: 8.5px !important;
  --cp-fs-8px: 8px !important;
  --cp-fs-9px: 9px !important;
  }
}

.sidebar-version-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: 14px 8px 0 10px;
}
.sidebar-version-row > p {
  color: #667289;
  margin: 0;
  font-size: var(--cp-fs-10px, 10px);
}
.font-size-controls {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  flex: none;
}
.font-size-button {
  appearance: none;
  border: 1px solid #33415d;
  background: #151f34;
  color: #aeb9ce;
  border-radius: 6px;
  width: 25px;
  height: 23px;
  padding: 0;
  display: inline-grid;
  place-items: center;
  line-height: 1;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s, opacity .15s;
}
.font-size-button-small { font-size: 10px; }
.font-size-button-large { font-size: 15px; font-weight: 700; }
.font-size-button:hover:not(:disabled) {
  color: #fff;
  background: #24345a;
  border-color: #52648c;
}
.font-size-button:focus-visible {
  outline: 2px solid #9db0ff;
  outline-offset: 2px;
}
.font-size-button:disabled {
  opacity: .34;
  cursor: default;
}
@media (width <= 580px) {
  .sidebar-version-row { margin-right: 6px; }
}

/* v23 — edição direta dos pesos de projetos e critérios */
.assessment-project-wrap > button {
  padding-right: 84px !important;
}
.assessment-project-actions {
  gap: 5px;
}
.quick-project-weight {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px 5px;
  border: 1px solid rgba(82,111,147,.22);
  border-radius: 7px;
  background: rgba(255,255,255,.92);
  color: var(--muted);
  font-size: var(--cp-fs-8px, 8px);
  font-weight: 700;
  cursor: text;
}
.quick-project-weight span { opacity: .82; }
.quick-project-weight input {
  width: 34px;
  min-width: 34px;
  padding: 1px 2px;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-weight: 800;
  text-align: right;
}
.quick-project-weight input:focus {
  background: var(--surface);
  box-shadow: 0 0 0 2px rgba(82,111,147,.16);
  border-radius: 4px;
}
.quick-project-weight b { font-size: inherit; color: inherit; }


.criterion-weight-inline {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 1px !important;
  min-width: 42px;
  padding: 2px 4px;
  border-radius: 999px;
  background: rgba(49,87,213,.09);
  color: var(--blue-dark);
  cursor: text;
}
.criterion-weight-inline.pending {
  background: #fff0d9;
  color: #966117;
}
.criterion-weight-inline input {
  width: 25px;
  min-width: 25px;
  padding: 0;
  border: 0;
  outline: 0;
  background: transparent;
  color: inherit;
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 800;
  text-align: right;
  appearance: textfield;
}
.criterion-weight-inline input::-webkit-outer-spin-button,
.criterion-weight-inline input::-webkit-inner-spin-button { margin: 0; -webkit-appearance: none; }
.assessment-matrix .criterion-row th .criterion-weight-inline b {
  display: inline;
  color: inherit;
  font-size: var(--cp-fs-0_68rem, .68rem);
}
.quick-rubric-weight-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 7px;
  border-radius: 8px;
  font-size: var(--cp-fs-0_66rem, .66rem);
  font-weight: 700;
}
.quick-rubric-weight-status.pending { background:#fff0d9; color:#8a5a16; }
.quick-rubric-weight-status.valid { background:#e4f3eb; color:#28734d; }
.quick-rubric-weight-status button {
  min-height: 0 !important;
  padding: 2px 5px !important;
  border: 0 !important;
  background: rgba(255,255,255,.7) !important;
  color: inherit !important;
  font-size: inherit !important;
}
.assessment-project-actions > button { min-height: 0 !important; }

/* Versão 24 — evitar repetição visual do peso do critério no ecrã.
   O valor simples continua disponível apenas para a impressão/PDF,
   porque o controlo editável é ocultado no modo de impressão. */
.assessment-matrix .criterion-row th .print-only {
  display: none !important;
}
@media print {
  body[data-print-section="assessment"] .assessment-matrix .criterion-row th .print-only {
    display: block !important;
  }
}

/* v26 — pesos editáveis diretamente na área Peso total */
.period-weight-direct {
  display: inline-flex !important;
  align-items: center;
  gap: 3px;
  cursor: text;
  white-space: nowrap;
}
.period-weight-direct > span:first-child,
.period-weight-summary {
  font-weight: 800;
}
.period-weight-direct input,
.period-project-weight-inline input {
  width: 34px;
  min-width: 34px;
  padding: 0 2px;
  border: 0;
  outline: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 900;
  text-align: right;
}
.period-weight-direct input:focus,
.period-project-weight-inline input:focus {
  background: rgba(255,255,255,.78);
  box-shadow: 0 0 0 2px rgba(82,111,147,.15);
  border-radius: 4px;
}
.period-weight-direct b,
.period-project-weight-inline b {
  font: inherit;
  font-weight: 800;
}
.period-weight-direct em {
  margin-left: 3px;
  font-style: normal;
  font-weight: 700;
  opacity: .82;
}
.period-weight-multiple {
  flex-wrap: wrap;
  white-space: normal;
  gap: 5px 8px;
  max-width: 100%;
}
.period-project-weight-inline {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding-left: 7px;
  border-left: 1px solid currentColor;
}
.period-project-weight-inline > span {
  max-width: 90px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 700;
}

/* v27 — Gestão e escala de classificação configurável */
.grading-scale-panel {
  display: grid;
  gap: 16px;
}
.grading-preset-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.grading-preset-row > span {
  margin-right: 2px;
  color: var(--muted);
  font-size: var(--cp-fs-0_78rem, .78rem);
  font-weight: 700;
}
.grading-scale-name { max-width: 560px; }
.grading-scale-editor {
  max-height: 460px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}
.grading-scale-row {
  display: grid;
  grid-template-columns: 92px 92px minmax(115px, .7fr) minmax(180px, 1.5fr) 38px;
  gap: 8px;
  align-items: center;
  min-width: 650px;
  padding: 7px 9px;
  border-top: 1px solid var(--line);
}
.grading-scale-row:first-child { border-top: 0; }
.grading-scale-head {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--soft);
  color: var(--muted);
  font-size: var(--cp-fs-0_72rem, .72rem);
  font-weight: 800;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.grading-scale-row input {
  width: 100%;
  min-width: 0;
  padding: 7px 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  font: inherit;
}
.grading-scale-row input:focus {
  outline: 0;
  border-color: var(--blue);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--blue) 16%, transparent);
}
.remove-grade-band {
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid rgba(190,53,73,.22);
  border-radius: 8px;
  background: rgba(190,53,73,.06);
  color: #b62f48;
  font-weight: 800;
}
.grading-scale-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
}
.grading-scale-footer > div {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.grading-scale-save {
  margin-left: auto;
  justify-content: flex-end;
}
.grading-scale-save small {
  max-width: 480px;
  text-align: right;
}
.scale-valid { color: #28734d; }
.scale-invalid { color: #a34b22; }
.grading-scale-note {
  margin: 0;
  padding: 10px 12px;
  border-radius: 10px;
  background: var(--soft);
  color: var(--muted);
  font-size: var(--cp-fs-0_78rem, .78rem);
}
@media (width <= 760px) {
  .grading-scale-footer { align-items: stretch; }
  .grading-scale-save {
    width: 100%;
    margin-left: 0;
    justify-content: space-between;
  }
  .grading-scale-save small { text-align: left; }
}
.grading-profile-controls {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto minmax(220px, 1fr);
  gap: 12px;
  align-items: end;
}
.grading-profile-controls > button { margin-bottom: 1px; }
.grading-class-section {
  display: grid;
  gap: 10px;
  padding-top: 4px;
  border-top: 1px solid var(--line);
}
.grading-class-section h3,
.grading-class-section p { margin: 0; }
.grading-class-section > p {
  color: var(--muted);
  font-size: var(--cp-fs-0_8rem, .8rem);
}
.grading-class-assignments {
  display: grid;
  gap: 6px;
}
.grading-class-row {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(240px, 360px);
  gap: 12px;
  align-items: center;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface) 94%, var(--soft));
}
.grading-class-row > span {
  display: grid;
  gap: 2px;
}
.grading-class-row small { color: var(--muted); }
.grading-class-row select {
  width: 100%;
  min-width: 0;
}
@media (width <= 820px) {
  .grading-profile-controls { grid-template-columns: 1fr; }
  .grading-profile-controls > button { width: max-content; }
  .grading-class-row { grid-template-columns: 1fr; }
}

/* v28 — cálculo do período: média simples por defeito e ponderação em popover */
.assessment-period-header {
  position: relative;
}
.period-calculation-status {
  display: inline-flex;
  align-items: center;
  width: max-content;
  max-width: 100%;
  padding: 4px 8px;
  border-radius: 999px;
  background: #e4f3eb;
  color: #28734d;
  font-size: var(--cp-fs-0_66rem, .66rem);
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}
.period-calculation-status.simple {
  cursor: default;
}
.period-calculation-trigger {
  border: 0;
  cursor: pointer;
  text-align: left;
}
.period-calculation-trigger:hover,
.period-calculation-trigger:focus-visible {
  box-shadow: 0 0 0 2px rgba(82,111,147,.16);
}
.period-calculation-trigger.warning {
  background: #fff0d9;
  color: #966117;
}
.period-calculation-popover {
  position: absolute;
  z-index: 60;
  left: 0;
  top: calc(100% + 6px);
  width: min(340px, calc(100vw - 48px));
  padding: 12px;
  border: 1px solid rgba(82,111,147,.2);
  border-radius: 14px;
  background: var(--surface, #fff);
  box-shadow: 0 14px 38px rgba(31,41,55,.18);
  color: var(--ink);
}
.period-calculation-popover-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.period-calculation-popover-head strong {
  font-size: var(--cp-fs-0_82rem, .82rem);
}
.period-popover-close {
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: var(--cp-fs-1rem, 1rem);
  line-height: 1;
  padding: 3px 6px;
  border-radius: 6px;
  cursor: pointer;
}
.period-popover-close:hover { background: rgba(82,111,147,.08); }
.period-calculation-option {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: 8px;
  padding: 7px 4px;
  cursor: pointer;
}
.period-calculation-option input { margin-top: 3px; }
.period-calculation-option span {
  display: grid;
  gap: 2px;
}
.period-calculation-option b {
  font-size: var(--cp-fs-0_78rem, .78rem);
}
.period-calculation-option small {
  color: var(--muted);
  font-size: var(--cp-fs-0_68rem, .68rem);
  line-height: 1.3;
}
.period-weight-fields {
  display: grid;
  gap: 7px;
  margin: 6px 0 4px 25px;
  padding: 9px 10px;
  border-radius: 10px;
  background: rgba(82,111,147,.06);
}
.period-weight-fields > label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.period-weight-fields > label > span {
  min-width: 0;
  max-width: 190px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--cp-fs-0_72rem, .72rem);
  font-weight: 700;
}
.period-weight-fields > label > div {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.period-weight-fields input[type="number"] {
  width: 48px;
  min-width: 48px;
  padding: 4px 5px;
  border: 1px solid rgba(82,111,147,.22);
  border-radius: 7px;
  background: var(--surface, #fff);
  color: var(--ink);
  font: inherit;
  font-weight: 800;
  text-align: right;
}
.period-weight-fields input[type="number"]:focus {
  outline: 0;
  box-shadow: 0 0 0 2px rgba(82,111,147,.15);
}
.period-weight-draft-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 6px;
  border-top: 1px solid rgba(82,111,147,.14);
  font-size: var(--cp-fs-0_72rem, .72rem);
}
.period-weight-draft-total.valid { color: #28734d; }
.period-weight-draft-total.invalid { color: #966117; }
.period-distribute-button { justify-self: start; }
.period-calculation-actions {
  display: flex;
  justify-content: flex-end;
  gap: 7px;
  margin-top: 10px;
}
.project-weight-management-note {
  grid-column: 1 / -1;
  margin: -2px 0 2px;
  color: var(--muted);
  font-size: var(--cp-fs-0_72rem, .72rem);
}
@media (width <= 720px) {
  .period-calculation-popover {
    left: 0;
    width: min(320px, calc(100vw - 28px));
  }
}
@media (width > 720px) {
  .assessment-period-section {
    grid-template-columns: 150px minmax(0, 1fr);
  }
}

/* v29 — seleção simples de modelos por ciclo de ensino */
.grading-model-application {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface) 96%, var(--soft));
}
.grading-model-application h3,
.grading-model-application p { margin: 0; }
.grading-model-application > p {
  color: var(--muted);
  font-size: var(--cp-fs-0_8rem, .8rem);
}
.grading-model-checks {
  display: grid;
  grid-template-columns: repeat(3, minmax(190px, 1fr));
  gap: 8px;
}
.grading-model-check {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  min-height: 62px;
  padding: 10px 11px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  cursor: pointer;
}
.grading-model-check.selected {
  border-color: color-mix(in srgb, var(--blue) 42%, var(--line));
  background: color-mix(in srgb, var(--blue) 7%, var(--surface));
}
.grading-model-check input {
  margin-top: 3px;
  flex: 0 0 auto;
}
.grading-model-check > span {
  display: grid;
  gap: 3px;
}
.grading-model-check strong { color: var(--ink); }
.grading-model-check small {
  color: var(--muted);
  line-height: 1.3;
}
.grading-auto-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.grading-auto-summary span {
  display: inline-flex;
  width: max-content;
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--soft);
  color: var(--muted);
  font-size: var(--cp-fs-0_72rem, .72rem);
  font-weight: 700;
}
.grading-profile-controls {
  grid-template-columns: minmax(240px, 520px);
}
@media (width <= 900px) {
  .grading-model-checks { grid-template-columns: 1fr; }
}


/* Revisão 30 — margem de segurança visual consistente em todas as janelas. */
.modal {
  --cp-modal-gutter: 30px;
  overflow-x: hidden;
}
.modal > .modal-header,
.modal-header {
  padding-left: var(--cp-modal-gutter) !important;
  padding-right: var(--cp-modal-gutter) !important;
}
.modal > .modal-body,
.modal > .modal-form,
.modal-body,
.modal-form {
  padding-left: var(--cp-modal-gutter) !important;
  padding-right: var(--cp-modal-gutter) !important;
}
.modal > .modal-footer,
.modal-footer {
  padding-left: var(--cp-modal-gutter) !important;
  padding-right: var(--cp-modal-gutter) !important;
}
.modal-form > .modal-footer,
.modal-body > .modal-footer {
  margin-left: calc(-1 * var(--cp-modal-gutter)) !important;
  margin-right: calc(-1 * var(--cp-modal-gutter)) !important;
  padding-left: var(--cp-modal-gutter) !important;
  padding-right: var(--cp-modal-gutter) !important;
}
/* Conteúdo direto de modais antigos que não usa modal-body/modal-form também recebe margem. */
.modal > :not(.modal-header):not(.modal-footer):not(.modal-body):not(.modal-form) {
  margin-left: var(--cp-modal-gutter);
  margin-right: var(--cp-modal-gutter);
}
.modal > .modal-header + .modal-body,
.modal > .modal-header + .modal-form {
  margin-left: 0;
  margin-right: 0;
}
@media (width <= 580px) {
  .modal { --cp-modal-gutter: 18px; }
}


/* Revisão 31 — margens internas consistentes na área Gestão. */
.grading-scale-panel {
  padding: 24px 28px 28px !important;
  gap: 18px !important;
}
.grading-scale-panel > header {
  margin: 0 !important;
  padding: 0 !important;
}
.grading-scale-panel > header h2,
.grading-scale-panel > header p {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.grading-scale-panel > header h2 {
  margin-top: 0 !important;
}
.grading-model-application,
.grading-profile-controls,
.grading-scale-editor,
.grading-scale-footer,
.grading-scale-note {
  margin-left: 0 !important;
  margin-right: 0 !important;
}
.grading-scale-footer {
  padding-top: 2px;
}
@media (width <= 720px) {
  .grading-scale-panel {
    padding: 18px !important;
  }
}

/* Versão 34 — Reuniões, calendário e biblioteca reutilizável de rubricas */
.calendar-item.type-interruption {
  background: rgba(193, 121, 43, .095);
}
.calendar-item.type-holiday .calendar-main p {
  font-weight: 700;
  color: var(--ink);
}

.meeting-browser {
  margin-bottom: 16px;
  padding: 14px 16px;
}
.meeting-filter-row {
  display: grid;
  grid-template-columns: 84px minmax(0,1fr);
  align-items: center;
  gap: 10px;
}
.meeting-filter-row + .meeting-filter-row {
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid var(--line);
}
.meeting-filter-label {
  color: var(--muted);
  text-transform: uppercase;
  font-size: var(--cp-fs-0_62rem, .62rem);
  font-weight: 850;
  letter-spacing: .06em;
}
.meeting-filter-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.meeting-filter-buttons button {
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink);
  border-radius: 999px;
  padding: 7px 12px;
  font: inherit;
  font-size: var(--cp-fs-0_76rem, .76rem);
  font-weight: 750;
  cursor: pointer;
}
.meeting-filter-buttons.compact button {
  padding: 5px 10px;
  font-size: var(--cp-fs-0_69rem, .69rem);
}
.meeting-filter-buttons button:hover,
.meeting-filter-buttons button.active {
  border-color: var(--blue);
  background: var(--blue-soft);
  color: var(--blue-dark);
}
.meeting-grid {
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 14px;
}
.meeting-card {
  display: grid;
  grid-template-columns: 64px minmax(0,1fr);
  gap: 15px;
  padding: 16px;
  min-width: 0;
  overflow: hidden;
}
.meeting-card > * { min-width: 0; }
.meeting-date {
  width: 64px;
  height: 76px;
  align-self: start;
  background: var(--blue-soft);
  color: var(--blue-dark);
  border: 1px solid color-mix(in srgb, var(--blue) 18%, transparent);
  border-radius: 14px;
}
.meeting-date b { line-height: 1; }
.meeting-date small {
  margin-top: 2px;
  color: var(--muted);
  font-size: var(--cp-fs-0_62rem, .62rem);
}
.meeting-content {
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.meeting-top {
  min-width: 0;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
}
.meeting-top .meeting-tag {
  max-width: 100%;
  background: var(--blue-soft);
  color: var(--blue-dark);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.meeting-top .meeting-tag.class-tag {
  color: #fff;
}
.meeting-card h2 {
  margin: 9px 0 6px;
  min-width: 0;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: break-word;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  line-clamp: 2;
}
.meeting-card .meeting-preview {
  min-width: 0;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: break-word;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  line-clamp: 4;
  min-height: calc(1.55em * 2);
}
.meeting-actions {
  margin-top: 12px;
  justify-content: flex-end;
}

.rubric-associations {
  margin: 0 0 18px;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: color-mix(in srgb, var(--blue-soft) 55%, var(--surface));
}
.rubric-association-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 10px;
}
.rubric-association-heading h3,
.rubric-association-heading p { margin: 0; }
.rubric-association-heading p {
  margin-top: 3px;
  color: var(--muted);
  font-size: var(--cp-fs-0_76rem, .76rem);
}
.rubric-association-heading > span {
  flex: none;
  border-radius: 999px;
  padding: 5px 9px;
  background: var(--surface);
  color: var(--muted);
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 800;
}
.rubric-association-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.rubric-association-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  max-width: 240px;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 7px 9px;
  background: var(--surface);
  color: var(--ink);
  text-align: left;
  cursor: pointer;
}
.rubric-association-chip:hover { border-color: var(--blue); }
.rubric-association-chip.active {
  border-color: var(--blue);
  background: var(--blue-soft);
}
.rubric-association-chip.used { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--blue) 22%, transparent); }
.rubric-association-chip > span:last-child {
  min-width: 0;
  display: grid;
}
.rubric-association-chip b,
.rubric-association-chip small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rubric-association-chip b { font-size: var(--cp-fs-0_72rem, .72rem); }
.rubric-association-chip small { color: var(--muted); font-size: var(--cp-fs-0_61rem, .61rem); }
.rubric-association-check {
  display: grid;
  place-items: center;
  width: 20px;
  height: 20px;
  flex: none;
  border-radius: 50%;
  background: var(--soft);
  color: var(--muted);
  font-weight: 900;
}
.rubric-association-chip.active .rubric-association-check {
  background: var(--blue);
  color: #fff;
}
.rubric-modal-associations {
  padding: 10px 0 2px;
}
.rubric-modal-associations > span {
  display: block;
  margin-bottom: 7px;
  font-weight: 750;
}
.rubric-association-chips.compact .rubric-association-chip {
  padding: 6px 8px;
}
.field-help {
  display: block;
  margin-top: 7px;
  color: var(--muted);
  font-size: var(--cp-fs-0_7rem, .7rem);
}

@media (max-width: 850px) {
  .meeting-grid { grid-template-columns: 1fr; }
  .meeting-filter-row { grid-template-columns: 1fr; }
  .rubric-association-heading { flex-direction: column; gap: 8px; }
}
@media (max-width: 560px) {
  .meeting-card { grid-template-columns: 54px minmax(0,1fr); gap: 11px; padding: 13px; }
  .meeting-date { width: 54px; height: 68px; }
}
.meeting-filter-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}
.meeting-sort {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  flex: none;
  color: var(--muted);
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 750;
}
.meeting-sort select {
  min-width: 124px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface);
  color: var(--ink);
  padding: 6px 8px;
}
@media (max-width: 760px) {
  .meeting-filter-main { align-items: flex-start; flex-direction: column; }
}

/* ========================================================================== */
/* CADPROF — IDENTIDADE VISUAL V35                                             */
/* A geometria do logótipo é fixa; as cores adaptam-se à paleta selecionada.  */
/* ========================================================================== */

.cadprof-startup {
  min-height: 100vh;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 18px;
  padding: 32px;
  font-family: "Segoe UI", Arial, sans-serif;
  color: #6f7f82;
  background:
    radial-gradient(circle at 18% 22%, rgba(72,194,181,.10), transparent 28%),
    radial-gradient(circle at 82% 78%, rgba(252,199,86,.08), transparent 24%),
    #fbfdfd;
}
.cadprof-startup img { width: min(310px, 72vw); height: auto; display: block; }
.cadprof-startup p { margin: 0; font-size: 14px; letter-spacing: .01em; }

/* O logótipo passa a ser o elemento principal da cabeça da barra lateral. */
.brand.cadprof-brand-panel {
  margin: 0 4px 24px;
  padding: 11px 12px;
  min-height: 64px;
  border-radius: 16px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 8px 28px rgba(0,0,0,.12);
  overflow: hidden;
}
.cadprof-brand-logo {
  display: block;
  width: 100%;
  height: auto;
  max-height: 50px;
  object-fit: contain;
  object-position: left center;
}
.brand.cadprof-brand-panel .brand-mark,
.brand.cadprof-brand-panel > div:not(.brand-mark) { display: none; }

.mobile-brand { display: none; align-items: center; }
.mobile-brand img { display: block; width: 145px; max-height: 38px; object-fit: contain; object-position: left center; }

/* Grafismos de fundo muito leves: acompanham a paleta sem competir com o conteúdo. */
.workspace {
  position: relative;
  isolation: isolate;
  overflow-x: clip;
}
.workspace::before,
.workspace::after {
  content: "";
  position: fixed;
  pointer-events: none;
  z-index: -1;
  opacity: .55;
}
.workspace::before {
  width: 430px;
  height: 430px;
  right: -155px;
  top: 92px;
  border-radius: 46% 54% 62% 38% / 44% 38% 62% 56%;
  background:
    radial-gradient(circle at 35% 38%, color-mix(in srgb, var(--brand-primary, #48C2B5) 10%, transparent) 0 22%, transparent 23%),
    radial-gradient(circle at 58% 48%, color-mix(in srgb, var(--brand-accent, #FCC756) 7%, transparent) 0 17%, transparent 18%),
    radial-gradient(circle at 48% 55%, color-mix(in srgb, var(--brand-primary, #48C2B5) 5%, transparent) 0 42%, transparent 43%);
}
.workspace::after {
  width: 360px;
  height: 260px;
  left: 225px;
  bottom: -120px;
  transform: rotate(-8deg);
  background:
    repeating-radial-gradient(ellipse at center,
      transparent 0 26px,
      color-mix(in srgb, var(--brand-primary, #48C2B5) 9%, transparent) 27px 28px,
      transparent 29px 42px);
  mask-image: linear-gradient(90deg, transparent, #000 28%, #000 70%, transparent);
}
.workspace > * { position: relative; z-index: 1; }

/* Pequenos ecos da marca em cartões sem transformar a UI num padrão decorativo. */
.page-heading::after,
.section-heading::after {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 8px;
  border-radius: 50%;
  background: var(--brand-accent, #FCC756);
  vertical-align: .25em;
  opacity: .78;
}

/* A identidade é cromaticamente adaptativa, mas os documentos impressos mantêm-se institucionais. */
@media print {
  .workspace::before, .workspace::after { display: none !important; }
}

@media (max-width: 920px) {
  .mobile-brand { display: flex; }
  .workspace::before { width: 300px; height: 300px; right: -150px; top: 74px; }
  .workspace::after { display: none; }
}

/* ========================================================================== */
/* CADPROF V36 — DASHBOARD, SÍNTESE PERIÓDICA E ESTATÍSTICAS PAAT             */
/* ========================================================================== */

.dashboard-brand-row {
  display: grid;
  grid-template-columns: minmax(0, 1.8fr) minmax(220px, .7fr);
  gap: 16px;
  margin: 0 0 18px;
}
.dashboard-brand-card,
.dashboard-student-reference {
  min-height: 128px;
}
.dashboard-brand-card {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: 26px;
  padding: 22px 28px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background:
    radial-gradient(circle at 82% 24%, color-mix(in srgb, var(--brand-primary) 10%, transparent) 0 12%, transparent 13%),
    radial-gradient(circle at 91% 64%, color-mix(in srgb, var(--brand-accent) 8%, transparent) 0 9%, transparent 10%),
    var(--surface);
  box-shadow: var(--shadow-sm, 0 8px 24px rgba(17,24,39,.06));
}
.dashboard-brand-card img {
  width: min(240px, 34%);
  max-height: 78px;
  object-fit: contain;
  object-position: left center;
  flex: none;
}
.dashboard-brand-card strong {
  display: block;
  margin-bottom: 6px;
  color: var(--ink);
  font-size: 1.18rem;
  letter-spacing: -.01em;
}
.dashboard-brand-card p { margin: 0; color: var(--muted); }
.dashboard-student-reference { margin: 0; }

.period-summary-trigger {
  width: 28px;
  height: 28px;
  padding: 0;
  margin-left: 2px;
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface);
  color: var(--blue-dark);
  font-size: 1.3rem;
  line-height: 1;
  font-weight: 700;
  cursor: pointer;
}
.period-summary-trigger:hover {
  border-color: var(--blue);
  background: var(--blue-soft);
}

.period-summary-modal { min-width: 0; }
.period-summary-actions {
  display: flex;
  justify-content: flex-end;
  gap: 9px;
  margin-bottom: 14px;
}
.period-summary-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.period-summary-stats article {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--blue-soft) 44%, var(--surface));
}
.period-summary-stats small { display: block; color: var(--muted); margin-bottom: 4px; }
.period-summary-stats strong { font-size: 1.18rem; }
.period-summary-scroll {
  max-height: min(58vh, 610px);
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}
.period-summary-table {
  width: max-content;
  min-width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  font-size: .76rem;
}
.period-summary-table th,
.period-summary-table td {
  padding: 7px 6px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  text-align: center;
  vertical-align: middle;
  white-space: nowrap;
}
.period-summary-table thead th {
  position: sticky;
  top: 0;
  z-index: 4;
  background: color-mix(in srgb, var(--blue-soft) 72%, var(--surface));
  color: var(--muted-strong, var(--ink));
  font-weight: 800;
}
.period-summary-table .summary-student-col {
  position: sticky;
  left: 0;
  z-index: 3;
  min-width: 178px;
  max-width: 210px;
  text-align: left;
  background: var(--surface);
}
.period-summary-table thead .summary-student-col { z-index: 5; background: color-mix(in srgb, var(--blue-soft) 72%, var(--surface)); }
.period-summary-table .summary-student-col b { display: block; overflow: hidden; text-overflow: ellipsis; }
.period-summary-table .summary-student-col small { display: block; margin-top: 2px; color: var(--muted); }
.summary-grade-cell { min-width: 55px; }
.summary-grade-cell > div { display: inline-flex; align-items: flex-start; justify-content: center; gap: 2px; }
.summary-grade-cell input {
  width: 42px;
  height: 34px;
  padding: 4px 3px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  text-align: center;
  font: inherit;
  font-weight: 800;
  appearance: textfield;
}
.summary-grade-cell input::-webkit-inner-spin-button,
.summary-grade-cell input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.summary-grade-cell.provisional input {
  color: #8e96a3;
  background: #f3f4f6;
  border-color: #e1e4e8;
  font-weight: 650;
}
.summary-grade-cell.auto input {
  background: color-mix(in srgb, var(--blue-soft) 58%, var(--surface));
  border-color: color-mix(in srgb, var(--blue) 26%, var(--line));
}
.summary-grade-cell.confirmed input { background: var(--surface); }
.trend {
  display: inline-block;
  margin-top: 1px;
  font-size: .58rem;
  line-height: 1;
  font-weight: 900;
}
.trend-up { color: #3f8d68; }
.trend-same { color: #8b94a3; }
.trend-down { color: #b56b5c; }
.summary-mean-cell { min-width: 64px; font-weight: 800; }
.summary-mean-cell.has-provisional { color: #8e96a3; }
.summary-negative-count { min-width: 42px; font-weight: 800; }
.summary-negative-count.has-negative { color: #b54747; background: #fff3f2; }
.period-summary-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  padding: 12px 2px 0;
  color: var(--muted);
  font-size: .7rem;
}
.period-summary-legend span { display: inline-flex; align-items: center; gap: 6px; }
.period-summary-legend i { width: 9px; height: 9px; border-radius: 50%; border: 1px solid var(--line); }
.period-summary-legend i.auto { background: var(--blue-soft); border-color: color-mix(in srgb, var(--blue) 28%, var(--line)); }
.period-summary-legend i.confirmed { background: var(--surface); }
.period-summary-legend i.provisional { background: #eef0f2; }

.stats-page-heading { align-items: end; }
.stats-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 0 0 14px;
}
.stats-period-tabs,
.stats-view-tabs {
  display: inline-flex;
  gap: 5px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface) 86%, var(--canvas));
}
.stats-period-tabs button,
.stats-view-tabs button {
  border: 0;
  border-radius: 8px;
  padding: 7px 11px;
  background: transparent;
  color: var(--muted);
  font-weight: 750;
  cursor: pointer;
}
.stats-period-tabs button.active,
.stats-view-tabs button.active {
  background: var(--surface);
  color: var(--blue-dark);
  box-shadow: 0 2px 8px rgba(17,24,39,.08);
}
.stats-intro-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 14px;
  padding: 15px 18px;
}
.stats-intro-panel p { margin: 3px 0 0; color: var(--muted); }
.stats-legend { display: flex; flex-wrap: wrap; gap: 9px 16px; color: var(--muted); font-size: .72rem; }
.stats-legend span { display: inline-flex; align-items: center; gap: 6px; }
.stats-legend i { width: 11px; height: 11px; border-radius: 3px; }
.stats-legend i.red { background: #efc2c2; }
.stats-legend i.yellow { background: #fff06a; }
.stats-table-panel { padding: 0; overflow: hidden; }
.stats-table { width: 100%; min-width: 900px; border-collapse: collapse; font-size: .76rem; }
.stats-table th { padding: 10px 9px; text-align: left; background: color-mix(in srgb, var(--blue-soft) 65%, var(--surface)); color: var(--muted); font-weight: 800; border-bottom: 1px solid var(--line); }
.stats-table td { padding: 10px 9px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.stats-table tbody tr:last-child td { border-bottom: 0; }

/* PAAT: hierarquia visual Eficácia Interna -> Qualidade Interna e cores por indicador. */
.stats-paat-table thead th { text-align: center; vertical-align: middle; }
.stats-paat-table thead th:first-child,
.stats-paat-table thead th:nth-child(2) { text-align: left; }
.stats-paat-table .stats-paat-groups th {
  padding-top: 8px;
  padding-bottom: 8px;
  color: var(--ink);
  font-size: .7rem;
  letter-spacing: .035em;
  text-transform: uppercase;
}
.stats-paat-table .stats-paat-groups .stats-paat-ei {
  background: color-mix(in srgb, #dcecf5 72%, var(--surface));
  border-left: 2px solid color-mix(in srgb, #8eb7cf 62%, var(--line));
}
.stats-paat-table .stats-paat-groups .stats-paat-qi {
  background: linear-gradient(90deg,
    color-mix(in srgb, #f4e6df 72%, var(--surface)) 0 50%,
    color-mix(in srgb, #e7f1e7 72%, var(--surface)) 50% 100%);
  border-left: 2px solid color-mix(in srgb, #d7bfb4 55%, var(--line));
}
.stats-paat-table th.stats-col-success,
.stats-paat-table td.stats-col-success { background: color-mix(in srgb, #dcecf5 48%, var(--surface)); }
.stats-paat-table th.stats-col-mean,
.stats-paat-table td.stats-col-mean { background: color-mix(in srgb, #f4e6df 48%, var(--surface)); }
.stats-paat-table th.stats-col-quality,
.stats-paat-table td.stats-col-quality { background: color-mix(in srgb, #e7f1e7 48%, var(--surface)); }
.stats-paat-table .stats-col-success.stats-group-start { border-left: 2px solid color-mix(in srgb, #8eb7cf 45%, var(--line)); }
.stats-paat-table .stats-col-mean.stats-group-start { border-left: 2px solid color-mix(in srgb, #d7bfb4 45%, var(--line)); }
.stats-paat-table .stats-col-quality.stats-group-start { border-left: 2px solid color-mix(in srgb, #adc6ad 45%, var(--line)); }
.stats-paat-table td.stats-col-success,
.stats-paat-table td.stats-col-mean,
.stats-paat-table td.stats-col-quality { text-align: center; }
.stats-paat-key {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  padding: 9px 13px 10px;
  border-top: 1px solid var(--line);
  background: color-mix(in srgb, var(--surface) 92%, var(--canvas));
  color: var(--muted);
  font-size: .68rem;
}
.stats-paat-key b { color: var(--ink); }
.stats-full-success-year .full-success-grid article {
  background: color-mix(in srgb, #e7f1e7 36%, var(--surface));
}
.metric-value { font-weight: 850; border-radius: 6px; }
.stats-table td.metric-value.red,
.full-success-grid strong.metric-value.red { background: #f6d3d3; color: #8c3434; }
.stats-table td.metric-value.yellow,
.full-success-grid strong.metric-value.yellow { background: #fff5a9; color: #705d00; }
.stats-target-input {
  width: 74px;
  padding: 6px 7px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
}
.full-success-panel { margin-top: 14px; }
.full-success-panel .panel-header { align-items: end; }
.full-success-panel .panel-header > small { max-width: 450px; text-align: right; color: var(--muted); }
.full-success-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 10px; }
.full-success-grid article {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 8px 12px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--surface) 90%, var(--blue-soft));
}
.full-success-grid article div b,
.full-success-grid article div small { display: block; }
.full-success-grid article div small { margin-top: 3px; color: var(--muted); }
.full-success-grid article > strong { padding: 6px 8px; font-size: 1.15rem; }
.full-success-grid article > span,
.full-success-grid article > label { grid-column: 1 / -1; color: var(--muted); font-size: .7rem; }
.full-success-grid article > label { display: flex; align-items: center; gap: 8px; }

@media (max-width: 900px) {
  .dashboard-brand-row { grid-template-columns: 1fr; }
  .dashboard-brand-card { gap: 16px; }
  .dashboard-brand-card img { width: 190px; }
  .period-summary-stats { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .stats-controls, .stats-intro-panel { align-items: flex-start; flex-direction: column; }
  .full-success-panel .panel-header > small { text-align: left; }
}
@media (max-width: 560px) {
  .dashboard-brand-card { align-items: flex-start; flex-direction: column; padding: 18px; }
  .dashboard-brand-card img { width: min(220px, 78vw); }
  .period-summary-actions { justify-content: flex-start; flex-wrap: wrap; }
  .period-summary-stats { grid-template-columns: 1fr 1fr; }
}


/* CADPROF V37 — IDADE DINÂMICA DOS ALUNOS */
input.age-auto[readonly] {
  background: color-mix(in srgb, var(--panel, #fff) 82%, var(--soft, #eef4f3));
  color: var(--muted, #697776);
  cursor: default;
}

/* v38 — Turmas compactas: até 9 cartões visíveis sem scroll horizontal em ecrãs desktop */
@media (min-width: 1180px) {
  .class-selection-area .class-tabs {
    gap: 7px;
    overflow-x: hidden;
    padding-right: 0;
  }
  .class-selection-area .class-tab-wrap {
    flex: 1 1 0;
    min-width: 0;
    max-width: 150px;
  }
  .class-selection-area .class-tab-wrap > button {
    min-width: 0;
    padding: 9px 9px 9px 31px;
    gap: 6px;
  }
  .class-selection-area .class-select-box {
    left: 9px;
  }
  .class-selection-area .class-tabs i {
    width: 7px;
    height: 7px;
    flex: 0 0 7px;
  }
  .class-selection-area .class-tabs small {
    font-size: var(--cp-fs-10px, 10px);
  }
}

/* Em larguras intermédias continua a caber um conjunto amplo de turmas,
   mas mantém-se o scroll como salvaguarda quando o espaço já não é suficiente. */
@media (min-width: 900px) and (max-width: 1179px) {
  .class-selection-area .class-tabs { gap: 7px; }
  .class-selection-area .class-tab-wrap { min-width: 128px; }
  .class-selection-area .class-tab-wrap > button { padding: 9px 9px 9px 31px; }
  .class-selection-area .class-select-box { left: 9px; }
}


/* V40 — percentagens e pesos compactos nas rubricas */
.grouped-selected .selected-group summary {
  grid-template-columns: minmax(0, 1fr) 68px 28px;
  gap: 8px;
}
.grouped-selected .criterion-weight {
  justify-content: flex-end;
  min-width: 0;
  width: 68px;
  gap: 3px;
  white-space: nowrap;
}
.grouped-selected .criterion-weight input,
.criterion-weight input {
  width: 46px;
  min-width: 46px;
  max-width: 46px;
  padding: 5px 4px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.grouped-selected .criterion-weight {
  font-size: var(--cp-fs-0_72rem, .72rem);
}


/* CADPROF V41 — editor de rubricas, grelhas e síntese global */
/* A edição de rubrica ganha mais largura apenas em desktop. */
@media (min-width: 1100px) {
  .modal:has(.rubric-builder) { width: min(1240px, calc(100vw - 56px)); }
  .modal:has(.period-summary-modal) { width: min(1320px, calc(100vw - 48px)); }
}

/* Editor de critérios sem acordeões: seleção estável + descritores sempre legíveis. */
.rubric-editor-workspace { display:grid; gap:14px; }
.rubric-criterion-nav { gap:10px; }
.rubric-criterion-card-list { display:grid; gap:0; }
.rubric-criterion-card {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto 26px;
  align-items:center;
  gap:7px;
  padding:7px 9px;
  border-top:1px solid var(--line);
  background:var(--surface);
}
.rubric-criterion-card.active {
  background:color-mix(in srgb, var(--blue-soft) 62%, var(--surface));
  box-shadow:inset 3px 0 0 var(--blue);
}
.rubric-criterion-select {
  min-width:0; padding:0; border:0; background:transparent; text-align:left; cursor:pointer;
}
.rubric-criterion-select strong,.rubric-criterion-select small { display:block; }
.rubric-criterion-select strong { font-size:var(--cp-fs-0_72rem,.72rem); line-height:1.22; }
.rubric-criterion-select small { margin-top:2px; color:var(--muted); font-size:var(--cp-fs-0_60rem,.60rem); }
.rubric-weight-compact {
  display:inline-grid !important;
  grid-template-columns:34px auto;
  align-items:center;
  gap:2px !important;
  width:auto !important;
  min-width:45px !important;
  white-space:nowrap !important;
  line-height:1 !important;
}
.rubric-weight-compact input,
.grouped-selected .rubric-weight-compact input {
  width:34px !important; min-width:34px !important; max-width:34px !important;
  height:27px; padding:3px 2px !important; text-align:right; appearance:textfield;
}
.rubric-weight-compact input::-webkit-inner-spin-button,.rubric-weight-compact input::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.rubric-weight-compact span { display:inline !important; width:auto !important; height:auto !important; background:none !important; color:inherit !important; font-size:var(--cp-fs-0_70rem,.70rem) !important; }
.rubric-criterion-card .remove-criterion { padding:0; line-height:1; }

.rubric-descriptor-focus {
  overflow:hidden; border:1px solid var(--line); border-radius:14px; background:var(--surface);
}
.rubric-descriptor-focus-header {
  display:flex; align-items:center; justify-content:space-between; gap:14px; padding:10px 14px;
  border-left:5px solid; background:color-mix(in srgb, var(--blue-soft) 38%, var(--surface));
}
.rubric-descriptor-focus.saber .rubric-descriptor-focus-header { background:rgba(239,232,168,.26); border-color:#9c8a32; }
.rubric-descriptor-focus.informacao .rubric-descriptor-focus-header { background:rgba(247,239,132,.23); border-color:#a99a2e; }
.rubric-descriptor-focus.pensamento .rubric-descriptor-focus-header { background:rgba(141,174,211,.20); border-color:#5d7fa7; }
.rubric-descriptor-focus.desenvolvimento .rubric-descriptor-focus-header { background:rgba(116,158,204,.20); border-color:#4f759f; }
.rubric-descriptor-focus.sensibilidade .rubric-descriptor-focus-header { background:rgba(152,126,178,.20); border-color:#7a6095; }
.rubric-descriptor-focus.saude .rubric-descriptor-focus-header { background:rgba(191,209,151,.22); border-color:#758b45; }
.rubric-descriptor-focus-header small { display:block; color:var(--muted); font-size:var(--cp-fs-0_62rem,.62rem); }
.rubric-descriptor-focus-header h3 { margin:2px 0 0; font-size:var(--cp-fs-0_86rem,.86rem); }
.rubric-active-weight { flex:none; padding:5px 8px; border-radius:999px; background:var(--surface); font-size:var(--cp-fs-0_70rem,.70rem); font-weight:850; }
.descriptor-editor-focused { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; padding:10px 12px 12px; background:var(--surface); }
.descriptor-editor-focused label { min-width:0; }
.descriptor-editor-focused label > span { display:block; margin-bottom:4px; font-size:var(--cp-fs-0_66rem,.66rem); line-height:1.15; }
.descriptor-editor-focused textarea {
  width:100%; min-height:48px; height:auto; padding:7px 8px; border:1px solid var(--line); border-radius:8px;
  overflow-y:hidden; resize:none; field-sizing:content; color:var(--ink); background:var(--surface);
  font-size:var(--cp-fs-0_68rem,.68rem); line-height:1.28;
}
.rubric-criterion-pager { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px 11px; border-top:1px solid var(--line); }
.rubric-criterion-pager > span { color:var(--muted); font-size:var(--cp-fs-0_67rem,.67rem); font-weight:750; }
.rubric-descriptor-empty { padding:18px; border:1px dashed var(--line); border-radius:12px; color:var(--muted); text-align:center; font-size:.78rem; }

/* Cada critério da grelha tem uma assinatura cromática subtil.
   As cores de MB/B/SUF/INS continuam visíveis porque o tom é aplicado como camada. */
.assessment-matrix .criterion-heading { border-left:2px solid var(--criterion-accent, var(--line)); border-right:1px solid color-mix(in srgb,var(--criterion-accent,var(--line)) 35%,var(--line)); }
.assessment-matrix .criterion-heading.criterion-tone-0 { --criterion-accent:#7d8fc8; background:#eef1fa; }
.assessment-matrix .criterion-heading.criterion-tone-1 { --criterion-accent:#75a99c; background:#edf7f3; }
.assessment-matrix .criterion-heading.criterion-tone-2 { --criterion-accent:#b39a62; background:#faf5e9; }
.assessment-matrix .criterion-heading.criterion-tone-3 { --criterion-accent:#a989b4; background:#f6eff8; }
.assessment-matrix .criterion-heading.criterion-tone-4 { --criterion-accent:#c28d82; background:#faefed; }
.assessment-matrix .criterion-heading.criterion-tone-5 { --criterion-accent:#8fa56b; background:#f2f6e9; }
.assessment-matrix .grade-cell.criterion-tone-0 { background-image:linear-gradient(rgba(125,143,200,.055),rgba(125,143,200,.055)); border-left:2px solid rgba(125,143,200,.42); }
.assessment-matrix .grade-cell.criterion-tone-1 { background-image:linear-gradient(rgba(117,169,156,.055),rgba(117,169,156,.055)); border-left:2px solid rgba(117,169,156,.42); }
.assessment-matrix .grade-cell.criterion-tone-2 { background-image:linear-gradient(rgba(179,154,98,.055),rgba(179,154,98,.055)); border-left:2px solid rgba(179,154,98,.42); }
.assessment-matrix .grade-cell.criterion-tone-3 { background-image:linear-gradient(rgba(169,137,180,.055),rgba(169,137,180,.055)); border-left:2px solid rgba(169,137,180,.42); }
.assessment-matrix .grade-cell.criterion-tone-4 { background-image:linear-gradient(rgba(194,141,130,.055),rgba(194,141,130,.055)); border-left:2px solid rgba(194,141,130,.42); }
.assessment-matrix .grade-cell.criterion-tone-5 { background-image:linear-gradient(rgba(143,165,107,.055),rgba(143,165,107,.055)); border-left:2px solid rgba(143,165,107,.42); }
.assessment-class-context { display:flex; align-items:center; gap:8px; margin-left:auto; }
.assessment-class-context small { color:var(--muted); font-size:.72rem; }
.assessment-class-badge,.period-summary-class-badge {
  display:inline-flex; align-items:center; justify-content:center; min-width:58px; padding:7px 11px; border-radius:9px;
  color:#fff; font-weight:850; letter-spacing:.01em; box-shadow:inset 0 0 0 1px rgba(255,255,255,.24);
}

/* Sucesso pleno: explicita quais as disciplinas que entram no cálculo. */
.full-success-subjects { grid-column:1/-1; display:flex; flex-wrap:wrap; gap:5px; }
.full-success-subjects span { padding:3px 6px; border-radius:6px; background:color-mix(in srgb,var(--blue-soft) 64%,var(--surface)); color:var(--blue-dark); font-size:.63rem; font-weight:750; }

/* Síntese do período: turma em destaque e 12/15 disciplinas visíveis sem scroll horizontal em desktop. */
.period-summary-class-context { display:flex; align-items:center; gap:11px; margin:0 0 10px; }
.period-summary-class-context b,.period-summary-class-context small { display:block; }
.period-summary-class-context small { margin-top:2px; color:var(--muted); font-size:.68rem; }
.period-summary-scroll { overflow-x:hidden; }
.period-summary-table { width:100%; min-width:0; table-layout:fixed; font-size:.69rem; }
.period-summary-table th,.period-summary-table td { padding:5px 3px; }
.period-summary-table .summary-student-col { width:158px; min-width:158px; max-width:158px; }
.summary-grade-cell { min-width:0; width:auto; }
.summary-grade-cell input { width:30px; height:29px; padding:2px 1px; border-radius:6px; }
.summary-grade-cell > div { gap:1px; }
.summary-mean-cell { width:54px; min-width:54px; }
.summary-negative-count { width:34px; min-width:34px; }
.summary-grade-cell.not-enrolled { background:#f0f1f3; color:#9aa0aa; }
.summary-not-enrolled { display:inline-grid; place-items:center; width:30px; height:29px; border-radius:6px; background:#e7e9ec; color:#9ca3ad; font-weight:800; }
.period-summary-table thead th:not(.summary-student-col) { overflow:hidden; text-overflow:clip; }

@media (max-width: 1099px) {
  .descriptor-editor-focused { grid-template-columns:1fr; }
  .period-summary-scroll { overflow-x:auto; }
  .period-summary-table { width:max-content; min-width:100%; table-layout:auto; }
  .summary-grade-cell { min-width:42px; }
}

.period-summary-legend i.not-enrolled { background:#e7e9ec; border-color:#cfd3d9; }


/* CADPROF V42 — impressão de projetos, síntese e acesso rápido às rubricas */
.period-summary-class-context {
  min-height: 38px;
  margin-bottom: 8px;
}
.period-summary-actions {
  align-items: center;
}
.period-summary-actions .danger-button {
  margin-left: auto;
}
.rubric-tabs button[title*="duplo clique"] {
  cursor: default;
}

/* A grelha impressa ocupa de forma equilibrada a altura útil da página.
   A altura é calculada no componente em função do número de alunos. */
@media print {
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th {
    height: 40px !important;
    min-height: 40px !important;
    max-height: 40px !important;
    padding: 2px 3px !important;
    text-align: center !important;
    vertical-align: middle !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row th > span {
    display: flex !important;
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 2px !important;
    text-align: center !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row th small {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 1px !important;
    overflow: visible !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-break: normal !important;
    text-align: center !important;
    text-wrap: balance;
    font-size: 5.6pt !important;
    line-height: 1.04 !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row th b.print-only {
    width: 100% !important;
    margin: 1px 0 0 !important;
    text-align: center !important;
    font-size: 6.5pt !important;
    line-height: 1 !important;
  }
  body[data-print-section="assessment"] .assessment-matrix tbody tr,
  body[data-print-section="assessment"] .assessment-matrix tbody td {
    height: var(--assessment-print-row-height, 4.4mm) !important;
    min-height: var(--assessment-print-row-height, 4.4mm) !important;
    max-height: var(--assessment-print-row-height, 4.4mm) !important;
  }
  body[data-print-section="assessment"] .assessment-matrix tbody td {
    padding: .55mm .45mm !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .student-name > img,
  body[data-print-section="assessment"] .assessment-matrix .student-name > span {
    width: 13px !important;
    height: 13px !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .student-name strong {
    font-size: 5.9pt !important;
  }
}


/* CADPROF V42 — refinamentos finais do editor de rubricas */
@media (min-width: 1180px) {
  .modal:has(.rubric-builder) { width: min(1360px, calc(100vw - 36px)); }
}
/* A lista dos critérios selecionados deixa de ter um segundo scroll interno:
   todos os critérios ficam visíveis e o scroll, se necessário, pertence à janela. */
.rubric-criterion-nav {
  max-height: none !important;
  overflow: visible !important;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.rubric-criterion-nav .selected-group > header {
  min-height: 30px;
  padding-top: 6px;
  padding-bottom: 6px;
}
.rubric-criterion-card { min-height: 36px; padding-top: 5px; padding-bottom: 5px; }

/* O editor ativo de descritores deve ser imediatamente distinguível da lista. */
.rubric-descriptor-focus {
  border: 2px solid color-mix(in srgb, var(--blue) 48%, var(--line)) !important;
  background: color-mix(in srgb, var(--blue-soft) 24%, var(--surface)) !important;
  box-shadow: 0 9px 24px rgba(31, 49, 74, .09), inset 0 0 0 1px rgba(255,255,255,.72);
}
.rubric-descriptor-focus-header {
  border-bottom: 1px solid color-mix(in srgb, var(--blue) 24%, var(--line));
}
.rubric-descriptor-kicker {
  display:block;
  margin-bottom:3px;
  color:var(--blue-dark);
  text-transform:uppercase;
  letter-spacing:.065em;
  font-size:var(--cp-fs-0_56rem,.56rem);
  font-weight:850;
}
.descriptor-editor-focused {
  background: color-mix(in srgb, var(--blue-soft) 18%, var(--surface)) !important;
}
.descriptor-editor-focused textarea {
  background: var(--surface) !important;
  font-size: var(--cp-fs-0_64rem,.64rem) !important;
  line-height: 1.22 !important;
  min-height: 43px !important;
}

/* Impressão/PDF: melhor utilização vertical e cabeçalhos dos critérios realmente centrados. */
@media print {
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading {
    padding: 1.2mm .7mm !important;
    text-align: center !important;
    vertical-align: middle !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading > span {
    display:flex !important;
    width:100% !important;
    height:100% !important;
    min-width:0 !important;
    margin:0 !important;
    padding:0 !important;
    flex-direction:column !important;
    align-items:center !important;
    justify-content:center !important;
    text-align:center !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading small {
    width:100% !important;
    max-width:100% !important;
    margin:0 auto !important;
    padding:0 !important;
    text-align:center !important;
    white-space:normal !important;
    overflow:visible !important;
    overflow-wrap:anywhere !important;
    hyphens:auto !important;
    font-size:5.8pt !important;
    line-height:1.07 !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading b.print-only {
    display:block !important;
    width:100% !important;
    margin:.6mm 0 0 !important;
    text-align:center !important;
  }
}


/* CADPROF V43 — cabeçalhos dos critérios na exportação/PDF
   - aproveitamento integral da largura da célula;
   - percentagem novamente num círculo;
   - todos os círculos alinhados à mesma altura. */
@media print {
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading {
    padding: 1.1mm .45mm !important;
    box-sizing: border-box !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading > span {
    display: grid !important;
    grid-template-rows: minmax(0, 1fr) 6.2mm !important;
    grid-template-columns: minmax(0, 1fr) !important;
    width: 100% !important;
    max-width: none !important;
    height: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    gap: .35mm !important;
    align-items: stretch !important;
    justify-items: stretch !important;
    text-align: center !important;
    box-sizing: border-box !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading small {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    max-width: none !important;
    height: 100% !important;
    min-width: 0 !important;
    margin: 0 !important;
    padding: 0 .25mm !important;
    box-sizing: border-box !important;
    text-align: center !important;
    white-space: normal !important;
    overflow: visible !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: auto !important;
    text-wrap: wrap !important;
    font-size: 5.8pt !important;
    line-height: 1.06 !important;
  }
  body[data-print-section="assessment"] .assessment-matrix .criterion-row > th.criterion-heading b.print-only {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    justify-self: center !important;
    align-self: end !important;
    width: 6.2mm !important;
    min-width: 6.2mm !important;
    max-width: 6.2mm !important;
    height: 6.2mm !important;
    min-height: 6.2mm !important;
    max-height: 6.2mm !important;
    margin: 0 !important;
    padding: 0 !important;
    border-radius: 50% !important;
    box-sizing: border-box !important;
    text-align: center !important;
    white-space: nowrap !important;
    font-size: 6.5pt !important;
    line-height: 1 !important;
  }
}

/* CADPROF V44 — navegação de critérios com scroll independente.
   Em rubricas extensas, a lista mantém uma altura controlada para que
   os descritores do critério ativo permaneçam visíveis logo abaixo. */
@media (min-width: 900px) {
  .rubric-editor-workspace {
    align-content: start;
  }

  .rubric-criterion-nav {
    max-height: clamp(245px, 34vh, 360px) !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
  }

  .rubric-criterion-nav .selected-group > header {
    position: sticky;
    top: 0;
    z-index: 3;
    box-shadow: 0 1px 0 var(--line);
  }

  .rubric-descriptor-focus {
    margin-top: 0;
  }
}

/* Em ecrãs de altura reduzida, reservamos ainda mais espaço para os descritores. */
@media (min-width: 900px) and (max-height: 800px) {
  .rubric-criterion-nav {
    max-height: clamp(210px, 29vh, 290px) !important;
  }
}

/* CADPROF V45 — diálogos de confirmação sempre acima das janelas de contexto.
   O diálogo global é renderizado antes de algumas janelas (ex.: Síntese da avaliação),
   por isso necessita de uma camada própria superior ao .modal-backdrop normal. */
.app-dialog-backdrop {
  z-index: 1000;
}
.app-dialog-backdrop .app-dialog {
  position: relative;
  z-index: 1;
}

/* CADPROF V46 — editor das percentagens na rubrica: controlo totalmente visível.
   O ajuste é colocado no fim do CSS para prevalecer sobre regras antigas de
   .criterion-weight e sobre a compactação introduzida nas versões anteriores. */
.rubric-criterion-card {
  grid-template-columns: minmax(0, 1fr) 72px 26px !important;
  min-height: 42px !important;
  padding-top: 5px !important;
  padding-bottom: 5px !important;
  overflow: visible !important;
}

.rubric-criterion-card .rubric-weight-compact,
.grouped-selected .rubric-criterion-card .rubric-weight-compact {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  align-self: center !important;
  width: 72px !important;
  min-width: 72px !important;
  max-width: 72px !important;
  height: 32px !important;
  min-height: 32px !important;
  margin: 0 !important;
  padding: 0 !important;
  gap: 3px !important;
  overflow: visible !important;
  white-space: nowrap !important;
  line-height: 32px !important;
  box-sizing: border-box !important;
}

.rubric-criterion-card .rubric-weight-compact input[type="number"],
.grouped-selected .rubric-criterion-card .rubric-weight-compact input[type="number"] {
  display: block !important;
  flex: 0 0 48px !important;
  width: 48px !important;
  min-width: 48px !important;
  max-width: 48px !important;
  height: 30px !important;
  min-height: 30px !important;
  max-height: 30px !important;
  margin: 0 !important;
  padding: 4px 5px !important;
  border: 1px solid var(--line) !important;
  border-radius: 7px !important;
  box-sizing: border-box !important;
  background: var(--surface) !important;
  color: var(--ink) !important;
  font: inherit !important;
  font-size: var(--cp-fs-0_72rem, .72rem) !important;
  font-weight: 750 !important;
  font-variant-numeric: tabular-nums !important;
  line-height: 20px !important;
  text-align: center !important;
  appearance: textfield !important;
  vertical-align: middle !important;
}

.rubric-criterion-card .rubric-weight-compact input[type="number"]::-webkit-inner-spin-button,
.rubric-criterion-card .rubric-weight-compact input[type="number"]::-webkit-outer-spin-button {
  -webkit-appearance: none !important;
  margin: 0 !important;
}

.rubric-criterion-card .rubric-weight-compact > span,
.grouped-selected .rubric-criterion-card .rubric-weight-compact > span {
  display: inline-flex !important;
  flex: 0 0 auto !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-width: 10px !important;
  height: 30px !important;
  min-height: 30px !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  color: var(--ink) !important;
  font-size: var(--cp-fs-0_72rem, .72rem) !important;
  font-weight: 750 !important;
  line-height: 30px !important;
  white-space: nowrap !important;
  vertical-align: middle !important;
}

/* Evita que o arredondamento/overflow do grupo volte a cortar o campo na margem
   inferior. O recorte continua apenas no contorno exterior do grupo. */
.rubric-criterion-card-list {
  overflow: visible !important;
}


/* CADPROF V48 — editor de rubricas: lista integral dos critérios + percentagens editáveis visíveis.
   A navegação da direita tem scroll próprio, mas cada grupo conserva a sua altura natural.
   Isto evita que o grid comprima os grupos e corte critérios/campos de percentagem. */
@media (min-width: 900px) {
  .rubric-editor-workspace {
    display: grid !important;
    grid-template-rows: minmax(0, auto) auto !important;
    gap: 14px !important;
    min-height: 0 !important;
  }

  .rubric-criterion-nav,
  .selected-criteria.grouped-selected.rubric-criterion-nav {
    display: block !important;
    height: clamp(300px, 38vh, 430px) !important;
    max-height: clamp(300px, 38vh, 430px) !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: 0 !important;
    scrollbar-gutter: stable;
    overscroll-behavior: contain;
  }

  /* Os grupos não podem encolher para caber na altura do scroll. */
  .rubric-criterion-nav .selected-group {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    min-height: max-content !important;
    max-height: none !important;
    margin: 0 0 10px !important;
    overflow: hidden !important;
    flex: none !important;
  }
  .rubric-criterion-nav .selected-group:last-child {
    margin-bottom: 0 !important;
  }

  /* Sem cabeçalhos sticky: evita que vários cabeçalhos se sobreponham durante o scroll. */
  .rubric-criterion-nav .selected-group > header {
    position: static !important;
    top: auto !important;
    z-index: auto !important;
    min-height: 36px !important;
    padding: 7px 14px !important;
  }

  .rubric-criterion-nav .rubric-criterion-card-list {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
  }

  .rubric-criterion-nav .rubric-criterion-card {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) 78px 28px !important;
    align-items: center !important;
    width: 100% !important;
    height: auto !important;
    min-height: 48px !important;
    padding: 6px 9px !important;
    gap: 8px !important;
    overflow: visible !important;
    box-sizing: border-box !important;
  }

  .rubric-criterion-nav .rubric-criterion-select {
    display: block !important;
    min-width: 0 !important;
    padding: 2px 0 !important;
    overflow: visible !important;
  }
  .rubric-criterion-nav .rubric-criterion-select strong {
    line-height: 1.25 !important;
  }

  .rubric-criterion-nav .rubric-weight-compact,
  .grouped-selected .rubric-criterion-nav .rubric-weight-compact {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    width: 78px !important;
    min-width: 78px !important;
    max-width: 78px !important;
    height: 34px !important;
    min-height: 34px !important;
    gap: 4px !important;
    line-height: 34px !important;
    overflow: visible !important;
    white-space: nowrap !important;
  }

  .rubric-criterion-nav .rubric-weight-compact input[type="number"],
  .grouped-selected .rubric-criterion-nav .rubric-weight-compact input[type="number"] {
    display: block !important;
    flex: 0 0 52px !important;
    width: 52px !important;
    min-width: 52px !important;
    max-width: 52px !important;
    height: 32px !important;
    min-height: 32px !important;
    max-height: 32px !important;
    margin: 0 !important;
    padding: 4px 6px !important;
    line-height: 22px !important;
    text-align: center !important;
    box-sizing: border-box !important;
  }

  .rubric-criterion-nav .rubric-weight-compact > span,
  .grouped-selected .rubric-criterion-nav .rubric-weight-compact > span {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 32px !important;
    min-height: 32px !important;
    line-height: 32px !important;
    white-space: nowrap !important;
  }

  /* A área dos descritores mantém-se imediatamente abaixo da lista com scroll. */
  .rubric-descriptor-focus {
    position: relative !important;
    margin-top: 0 !important;
  }
}

@media (min-width: 900px) and (max-height: 800px) {
  .rubric-criterion-nav,
  .selected-criteria.grouped-selected.rubric-criterion-nav {
    height: clamp(250px, 31vh, 320px) !important;
    max-height: clamp(250px, 31vh, 320px) !important;
  }
}

/* CADPROF V48 — leitura dos critérios selecionados.
   As linhas dos critérios usam um neutro cinza, mantendo os cabeçalhos de grupo
   com a cor do respetivo domínio. O texto fica preto para maximizar a legibilidade. */
.rubric-criterion-nav .rubric-criterion-card {
  background: #f2f3f5 !important;
  color: #111111 !important;
}
.rubric-criterion-nav .rubric-criterion-card.active {
  background: #e4e7eb !important;
  color: #111111 !important;
  box-shadow: inset 3px 0 0 var(--blue) !important;
}
.rubric-criterion-nav .rubric-criterion-select,
.rubric-criterion-nav .rubric-criterion-select strong,
.rubric-criterion-nav .rubric-criterion-select small,
.rubric-criterion-nav .rubric-weight-compact > span {
  color: #111111 !important;
}


/* CADPROF V49 — cabeçalhos PAAT neutros + correção de interpretação visual.
   O pedido de cinza com texto preto refere-se às DUAS LINHAS DE CABEÇALHO
   da tabela PAAT (EI/QI e indicadores), não às linhas de critérios da rubrica.
   As colunas de dados mantêm os tons suaves por indicador para facilitar a leitura. */
.stats-paat-table thead .stats-paat-groups th,
.stats-paat-table thead tr:not(.stats-paat-groups) th {
  background: #eceeef !important;
  color: #111111 !important;
  border-color: color-mix(in srgb, #8d949b 28%, var(--line)) !important;
}
.stats-paat-table thead .stats-paat-groups th {
  font-weight: 850 !important;
}
.stats-paat-table thead tr:not(.stats-paat-groups) th {
  background: #f3f4f5 !important;
  font-weight: 800 !important;
}
.stats-paat-table .stats-paat-groups .stats-paat-ei,
.stats-paat-table .stats-paat-groups .stats-paat-qi {
  background: #eceeef !important;
  color: #111111 !important;
  border-left-color: color-mix(in srgb, #6f7780 38%, var(--line)) !important;
}

/* V48 aplicou por engano o cinza às linhas dos critérios selecionados.
   Reposição da leitura prevista: critérios neutros/brancos; apenas o critério ativo
   recebe um realce discreto. Os cabeçalhos de grupo continuam a usar a sua cor. */
.rubric-criterion-nav .rubric-criterion-card {
  background: var(--surface) !important;
  color: var(--ink) !important;
}
.rubric-criterion-nav .rubric-criterion-card.active {
  background: color-mix(in srgb, var(--blue-soft) 62%, var(--surface)) !important;
  color: var(--ink) !important;
  box-shadow: inset 3px 0 0 var(--blue) !important;
}
.rubric-criterion-nav .rubric-criterion-select,
.rubric-criterion-nav .rubric-criterion-select strong,
.rubric-criterion-nav .rubric-weight-compact > span {
  color: var(--ink) !important;
}
.rubric-criterion-nav .rubric-criterion-select small {
  color: var(--muted) !important;
}

/* CADPROF V50 — maior contraste entre critérios gerais consecutivos das rubricas.
   A sequência cromática alterna famílias de cor para evitar pares contíguos
   visualmente semelhantes (antes: 1/2 amarelos e 3/4 azuis). */
.rubric-group.saber,
.rubric-category.saber > header,
.selected-group.saber > header,
.score-group.saber > header,
.picker-group.saber h4 {
  background: rgba(239, 232, 168, .34) !important;
  border-color: #9c8a32 !important;
}
.rubric-group.informacao,
.rubric-category.informacao > header,
.selected-group.informacao > header,
.score-group.informacao > header,
.picker-group.informacao h4 {
  background: rgba(176, 219, 205, .32) !important;
  border-color: #4f8d7a !important;
}
.rubric-group.pensamento,
.rubric-category.pensamento > header,
.selected-group.pensamento > header,
.score-group.pensamento > header,
.picker-group.pensamento h4 {
  background: rgba(141, 174, 211, .25) !important;
  border-color: #5d7fa7 !important;
}
.rubric-group.desenvolvimento,
.rubric-category.desenvolvimento > header,
.selected-group.desenvolvimento > header,
.score-group.desenvolvimento > header,
.picker-group.desenvolvimento h4 {
  background: rgba(230, 173, 184, .28) !important;
  border-color: #a55e6d !important;
}
.rubric-group.sensibilidade,
.rubric-category.sensibilidade > header,
.selected-group.sensibilidade > header,
.score-group.sensibilidade > header,
.picker-group.sensibilidade h4 {
  background: rgba(188, 169, 208, .28) !important;
  border-color: #7a6095 !important;
}
.rubric-group.saude,
.rubric-category.saude > header,
.selected-group.saude > header,
.score-group.saude > header,
.picker-group.saude h4 {
  background: rgba(191, 209, 151, .28) !important;
  border-color: #758b45 !important;
}

/* A área de descritores segue a mesma identidade cromática do critério geral ativo. */
.rubric-descriptor-focus.saber .rubric-descriptor-focus-header {
  background: rgba(239, 232, 168, .26) !important;
  border-color: #9c8a32 !important;
}
.rubric-descriptor-focus.informacao .rubric-descriptor-focus-header {
  background: rgba(176, 219, 205, .26) !important;
  border-color: #4f8d7a !important;
}
.rubric-descriptor-focus.pensamento .rubric-descriptor-focus-header {
  background: rgba(141, 174, 211, .20) !important;
  border-color: #5d7fa7 !important;
}
.rubric-descriptor-focus.desenvolvimento .rubric-descriptor-focus-header {
  background: rgba(230, 173, 184, .22) !important;
  border-color: #a55e6d !important;
}
.rubric-descriptor-focus.sensibilidade .rubric-descriptor-focus-header {
  background: rgba(188, 169, 208, .22) !important;
  border-color: #7a6095 !important;
}
.rubric-descriptor-focus.saude .rubric-descriptor-focus-header {
  background: rgba(191, 209, 151, .22) !important;
  border-color: #758b45 !important;
}

/* CADPROF V51 — decomposição de projetos em tarefas ponderadas */
.project-task-toggle {
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:color-mix(in srgb, var(--soft) 42%, var(--surface));
}
.project-task-toggle > input { margin-top:3px; }
.project-task-toggle > span { display:grid; gap:3px; }
.project-task-toggle small { color:var(--muted); line-height:1.35; }
.project-task-builder {
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px;
  background:var(--surface);
  display:grid;
  gap:12px;
}
.project-task-builder > header {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
}
.project-task-builder > header > div { display:grid; gap:3px; }
.project-task-builder > header small { color:var(--muted); }
.project-task-total {
  white-space:nowrap;
  border-radius:999px;
  padding:6px 10px;
  font-weight:800;
  font-size:.78rem;
  background:#f2f4f7;
  color:#475467;
}
.project-task-total.valid { background:#e9f8f1; color:#08765c; }
.project-task-total.invalid { background:#fff0f0; color:#a6333f; }
.project-task-rows { display:grid; gap:7px; }
.project-task-row {
  display:grid;
  grid-template-columns:32px minmax(0,1fr) 132px 92px 34px;
  gap:8px;
  align-items:center;
}
.project-task-index {
  width:28px;
  height:28px;
  border-radius:8px;
  display:grid;
  place-items:center;
  background:var(--soft);
  color:var(--muted);
  font-size:.72rem;
  font-weight:800;
}
.project-task-row > input,
.project-task-weight input {
  min-width:0;
  height:38px;
}
.project-task-weight {
  display:flex;
  align-items:center;
  gap:4px;
}
.project-task-weight input { width:64px; text-align:center; }
.project-task-weight b { font-size:.78rem; }
.project-task-actions { display:flex; gap:7px; flex-wrap:wrap; }

.assessment-task-tabs {
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  padding:10px 12px 0;
  border-top:1px solid var(--line);
}
.assessment-task-tabs button {
  border:1px solid var(--line);
  background:var(--surface);
  border-radius:10px;
  padding:7px 11px;
  min-width:128px;
  text-align:left;
  color:var(--ink);
}
.assessment-task-tabs button strong,
.assessment-task-tabs button small { display:block; }
.assessment-task-tabs button small { margin-top:2px; color:var(--muted); font-size:.66rem; }
.assessment-task-tabs button.active {
  border-color:color-mix(in srgb, var(--blue) 65%, var(--line));
  box-shadow:0 0 0 2px color-mix(in srgb, var(--blue) 12%, transparent);
  background:color-mix(in srgb, var(--blue-soft) 52%, var(--surface));
}
.assessment-task-tabs button.final { margin-left:auto; }
.assessment-task-tabs button.final.active { background:color-mix(in srgb, var(--brand-accent) 10%, var(--surface)); }
.assessment-task-help {
  margin:7px 12px 10px;
  padding:7px 10px;
  border-radius:9px;
  background:color-mix(in srgb, var(--soft) 48%, var(--surface));
  color:var(--muted);
  font-size:.7rem;
  line-height:1.35;
}
.assessment-task-print-label {
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:.68rem;
  font-weight:650;
}
.task-final-entry {
  display:grid;
  place-items:center;
  gap:2px;
  min-height:38px;
}
.task-final-entry strong { font-size:.75rem; }
.task-final-entry span { font-size:.62rem; color:var(--muted); white-space:nowrap; }
.task-coverage {
  display:inline-flex;
  justify-content:center;
  align-items:center;
  min-width:38px;
  padding:4px 6px;
  border-radius:999px;
  background:var(--soft);
  color:var(--muted);
  font-size:.65rem;
  font-weight:800;
}
@media (max-width: 900px) {
  .project-task-row { grid-template-columns:30px minmax(0,1fr) 118px 78px 32px; }
  .assessment-task-tabs button.final { margin-left:0; }
}
@media print {
  .assessment-task-print-label { color:#667085 !important; }
}

/* CADPROF V52 — fases da metodologia projetual */
.project-task-mode-selector {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.project-task-mode-selector button {
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  color:var(--ink);
  padding:11px 13px;
  text-align:left;
  display:grid;
  gap:3px;
}
.project-task-mode-selector button small { color:var(--muted); line-height:1.35; }
.project-task-mode-selector button.active {
  border-color:color-mix(in srgb,var(--blue) 58%,var(--line));
  background:color-mix(in srgb,var(--blue-soft) 48%,var(--surface));
  box-shadow:0 0 0 2px color-mix(in srgb,var(--blue) 9%,transparent);
}
.project-phase-builder {
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px;
  background:var(--surface);
  display:grid;
  gap:12px;
}
.project-phase-builder > header {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
}
.project-phase-builder > header > div { display:grid; gap:3px; }
.project-phase-builder > header small { color:var(--muted); }
.project-phase-coverage {
  white-space:nowrap;
  border-radius:999px;
  padding:6px 10px;
  font-weight:800;
  font-size:.75rem;
  background:#f2f4f7;
  color:#667085;
}
.project-phase-coverage.valid { background:#e9f8f1; color:#08765c; }
.project-phase-coverage.pending { background:#fff7e7; color:#8a5a00; }
.project-phase-rows { display:grid; gap:7px; }
.project-phase-row {
  display:grid;
  grid-template-columns:32px minmax(0,1fr) 132px 105px 34px;
  gap:8px;
  align-items:center;
}
.project-phase-row > input { min-width:0; height:38px; }
.project-phase-optional {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  font-size:.72rem;
  color:var(--muted);
  white-space:nowrap;
}
.project-phase-optional input { width:15px; height:15px; }
.phase-criteria-config {
  display:grid;
  gap:9px;
  border-top:1px solid var(--line);
  padding-top:12px;
}
.phase-criteria-heading {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:14px;
}
.phase-criteria-heading > div { display:grid; gap:3px; }
.phase-criteria-heading small,
.phase-criteria-heading > span { color:var(--muted); font-size:.7rem; }
.phase-criteria-scroll {
  max-height:430px;
  overflow:auto;
  border:1px solid var(--line);
  border-radius:11px;
}
.phase-criteria-table {
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  table-layout:fixed;
  min-width:760px;
  font-size:.72rem;
}
.phase-criteria-table th,
.phase-criteria-table td {
  border-right:1px solid var(--line);
  border-bottom:1px solid var(--line);
  padding:8px;
  vertical-align:middle;
  background:var(--surface);
}
.phase-criteria-table th:last-child,
.phase-criteria-table td:last-child { border-right:0; }
.phase-criteria-table tbody tr:last-child td { border-bottom:0; }
.phase-criteria-table thead th {
  position:sticky;
  top:0;
  z-index:2;
  background:#f2f4f7;
  color:#1f2937;
  text-align:center;
}
.phase-criteria-table thead th:first-child {
  width:30%;
  text-align:left;
  left:0;
  z-index:3;
}
.phase-criteria-table thead th strong,
.phase-criteria-table thead th small { display:block; }
.phase-criteria-table thead th small { margin-top:2px; color:#667085; font-size:.62rem; }
.phase-criterion-label {
  position:sticky;
  left:0;
  z-index:1;
  background:var(--surface) !important;
}
.phase-criterion-label > strong,
.phase-criterion-label > small { display:block; }
.phase-criterion-label > strong { line-height:1.25; }
.phase-criterion-label > small { color:var(--muted); margin-top:3px; font-size:.64rem; }
.phase-criterion-cell {
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
}
.phase-criteria-table td.selected { background:color-mix(in srgb,var(--blue-soft) 33%,var(--surface)); }
.phase-criterion-cell > input[type="checkbox"] { width:16px; height:16px; flex:0 0 auto; }
.phase-share-input {
  display:inline-flex;
  align-items:center;
  gap:3px;
}
.phase-share-input input {
  width:58px;
  min-width:58px;
  height:31px;
  padding:4px 6px;
  text-align:center;
  font-size:.7rem;
}
.phase-share-input b,
.phase-share-single { font-size:.67rem; }
.phase-share-single {
  border-radius:999px;
  padding:4px 7px;
  background:#eef2f6;
  color:#475467;
  font-weight:800;
}
.phase-share-summary {
  margin-top:6px;
  display:flex;
  align-items:center;
  gap:6px;
  font-size:.62rem;
}
.phase-share-summary span { font-weight:750; }
.phase-share-summary.valid span { color:#08765c; }
.phase-share-summary.invalid span { color:#a6333f; }
.phase-share-summary button {
  border:0;
  background:transparent;
  color:var(--blue);
  padding:0;
  font-size:.62rem;
  text-decoration:underline;
}
.phase-impact-strip {
  margin:-3px 12px 10px;
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.phase-impact-strip > span {
  display:grid;
  gap:1px;
  padding:6px 8px;
  border:1px solid var(--line);
  border-radius:9px;
  background:var(--surface);
  max-width:260px;
}
.phase-impact-strip b { font-size:.66rem; line-height:1.2; }
.phase-impact-strip small { color:var(--muted); font-size:.6rem; line-height:1.25; }
@media (max-width: 900px) {
  .project-task-mode-selector { grid-template-columns:1fr; }
  .project-phase-row { grid-template-columns:30px minmax(0,1fr) 118px 90px 32px; }
  .phase-criteria-scroll { max-height:360px; }
}
.project-phase-flags {
  display:grid;
  gap:3px;
  justify-items:start;
}
.project-phase-active {
  display:flex;
  align-items:center;
  gap:6px;
  font-size:.7rem;
  color:var(--ink);
  white-space:nowrap;
}
.project-phase-active input { width:15px; height:15px; }
.phase-criteria-table .phase-disabled {
  background:#f3f4f6 !important;
  color:#98a2b3 !important;
}
.phase-criteria-table td.phase-disabled .phase-criterion-cell { opacity:.55; }

/* CADPROF V53 — projetos por fases, identificação estável e nível 0 */
.level-0 {
  color:#667085;
  background:#eef2f6;
}

/* A identificação da turma não se desloca com o nome/contexto do projeto. */
@media screen {
  .assessment-header {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) auto !important;
    align-items:center !important;
    justify-content:stretch !important;
    gap:10px 16px !important;
  }
  .assessment-screen-context {
    grid-column:1 / -1;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:18px;
    width:100%;
    min-width:0;
  }
  .assessment-class-context {
    flex:0 0 auto;
    margin-left:0 !important;
    justify-content:flex-start;
  }
  .assessment-project-context {
    min-width:0;
    max-width:min(58%,720px);
    margin-left:auto;
    display:grid;
    justify-items:end;
    gap:2px;
    text-align:right;
  }
  .assessment-project-context strong {
    display:block;
    width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    color:var(--ink);
    font-size:.76rem;
  }
  .assessment-project-context .assessment-task-print-label {
    display:block;
    width:100%;
    margin:0;
    text-align:right;
  }
  .assessment-toolbar {
    grid-column:1 / -1;
    justify-self:end;
    justify-content:flex-end;
  }
}

/* O texto dos critérios usa toda a célula e fica geometricamente centrado. */
.assessment-matrix .criterion-row > th.criterion-heading > span {
  width:100% !important;
  max-width:none !important;
  min-width:0 !important;
  padding-inline:3px !important;
  box-sizing:border-box;
  align-items:center !important;
  justify-content:center !important;
}
.assessment-matrix .criterion-row > th.criterion-heading small {
  width:100% !important;
  max-width:none !important;
  margin-inline:auto !important;
  padding-inline:0 !important;
  text-align:center !important;
  overflow-wrap:anywhere;
}
/* A percentagem já vive num retângulo arredondado; o símbolo % não cria um segundo círculo. */
.criterion-weight-inline {
  border-radius:8px !important;
  min-width:46px;
  padding:3px 6px;
}
.assessment-matrix .criterion-row th .criterion-weight-inline b {
  display:inline !important;
  width:auto !important;
  min-width:0 !important;
  height:auto !important;
  min-height:0 !important;
  margin:0 !important;
  padding:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  line-height:1 !important;
}

/* Matriz de fases transposta: fases nas linhas e critérios nas colunas. */
.phase-criteria-table-transposed {
  width:max-content;
  min-width:100%;
  table-layout:auto;
}
.phase-criteria-table-transposed thead th {
  min-width:132px;
  max-width:168px;
  padding:8px 7px;
  white-space:normal;
  overflow-wrap:anywhere;
}
.phase-criteria-table-transposed thead th.phase-row-heading {
  position:sticky;
  left:0;
  z-index:5;
  width:205px;
  min-width:205px;
  max-width:205px;
  text-align:left;
}
.phase-criteria-table-transposed .phase-criterion-heading > strong,
.phase-criteria-table-transposed .phase-criterion-heading > small {
  display:block;
  text-align:center;
}
.phase-criteria-table-transposed .phase-criterion-heading > strong {
  font-size:.67rem;
  line-height:1.18;
}
.phase-criteria-table-transposed .phase-criterion-heading > small {
  margin-top:3px;
  color:var(--muted);
  font-size:.59rem;
  line-height:1.18;
}
.phase-criteria-table-transposed .phase-criterion-heading .phase-share-summary {
  justify-content:center;
  flex-wrap:wrap;
  margin-top:5px;
}
.phase-criteria-table-transposed .phase-row-label {
  position:sticky;
  left:0;
  z-index:3;
  width:205px;
  min-width:205px;
  max-width:205px;
  background:var(--surface) !important;
}
.phase-criteria-table-transposed .phase-row-label > div {
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.phase-criteria-table-transposed .phase-row-label > div > span:last-child {
  min-width:0;
  display:grid;
  gap:2px;
}
.phase-criteria-table-transposed .phase-row-label strong {
  overflow-wrap:anywhere;
  line-height:1.2;
}
.phase-criteria-table-transposed .phase-row-label small {
  color:var(--muted);
  font-size:.62rem;
}
.phase-criteria-table-transposed td {
  min-width:132px;
  text-align:center;
}
.phase-criteria-table-transposed tr.phase-disabled-row .phase-row-label {
  background:#f3f4f6 !important;
  color:#98a2b3;
}

/* Resumo da avaliação: nível e descrição na mesma linha, com maior legibilidade. */
.score-summary > div {
  flex-wrap:wrap;
  row-gap:7px;
}
.score-level {
  display:inline-flex;
  align-items:center;
  gap:7px;
  white-space:normal;
}
.score-level-label {
  color:var(--muted);
  font-size:.72rem;
}
.score-level-value {
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:5px 9px;
  border-radius:8px;
  font-size:.88rem;
  line-height:1.2;
  font-weight:850;
}
.score-level-value.level-5 { color:#08795a; background:#e4f6ef; }
.score-level-value.level-4 { color:var(--blue); background:#edf1ff; }
.score-level-value.level-3 { color:#997018; background:#fff5d9; }
.score-level-value.level-2,
.score-level-value.level-1 { color:var(--red); background:#ffeaed; }
.score-level-value.level-0 { color:#667085; background:#eef2f6; }

@media (max-width:900px) {
  .assessment-screen-context { align-items:flex-start; }
  .assessment-project-context { max-width:52%; }
  .phase-criteria-table-transposed thead th.phase-row-heading,
  .phase-criteria-table-transposed .phase-row-label { width:165px; min-width:165px; max-width:165px; }
  .phase-criteria-table-transposed thead th,
  .phase-criteria-table-transposed td { min-width:118px; }
}

/* CADPROF V54 — área Projetos e ficha de trabalho */
.project-workspace {
  display: grid;
  grid-template-columns: minmax(220px, 290px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.project-library { padding: 0; overflow: hidden; position: sticky; top: 16px; max-height: calc(100vh - 150px); }
.project-library-header { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:18px 18px 14px; border-bottom:1px solid var(--line); }
.project-library-header h2 { margin:0; font-size:var(--cp-fs-1_08rem,1.08rem); }
.project-library-header span { color:var(--muted); font-size:var(--cp-fs-0_72rem,.72rem); }
.project-library-list { display:grid; gap:8px; padding:10px; max-height:calc(100vh - 220px); overflow-y:auto; }
.project-library-item { display:grid; grid-template-columns:64px minmax(0,1fr); align-items:center; text-align:left; gap:10px; width:100%; padding:9px 10px; border:1px solid var(--line); border-radius:12px; background:var(--surface); cursor:pointer; color:var(--text); }
.project-library-item:hover { border-color:color-mix(in srgb,var(--blue) 48%,var(--line)); }
.project-library-item.active { border-color:var(--blue); box-shadow:inset 3px 0 0 var(--blue); background:color-mix(in srgb,var(--blue) 5%,var(--surface)); }
.project-library-thumb { width:64px; aspect-ratio:4/3; object-fit:cover; display:block; border-radius:8px; border:1px solid var(--line); background:var(--soft); }
.project-library-thumb-empty { display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:var(--cp-fs-1_05rem,1.05rem); font-weight:700; }
.project-library-copy { min-width:0; display:grid; gap:4px; }
.project-library-item-top { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.project-library-copy > strong { font-size:var(--cp-fs-0_78rem,.78rem); line-height:1.25; overflow:hidden; text-overflow:ellipsis; }
.project-library-copy > span,.project-library-copy small { color:var(--muted); font-size:var(--cp-fs-0_68rem,.68rem); }
.project-class-mini { display:inline-flex; align-items:center; justify-content:center; min-width:48px; min-height:27px; padding:3px 8px; border-radius:8px; color:#fff; font-weight:850; font-size:var(--cp-fs-0_7rem,.7rem); }
.project-sheet-panel { padding:0; overflow:hidden; }
.project-sheet-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:14px 18px; border-bottom:1px solid var(--line); background:var(--surface); }
.project-sheet-toolbar > div:first-child { display:flex; align-items:center; gap:10px; min-width:0; }
.project-sheet-toolbar > div:first-child > div { min-width:0; display:grid; gap:2px; }
.project-sheet-toolbar > div:first-child b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.project-sheet-toolbar > div:first-child small { color:var(--muted); }
.project-sheet-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
.project-class-badge { display:inline-flex; align-items:center; justify-content:center; min-width:64px; min-height:40px; padding:6px 11px; border-radius:10px; color:#fff; font-weight:900; white-space:nowrap; }
.project-student-sheet { padding:30px 34px 38px; background:var(--surface); }
.project-sheet-hero { display:grid; grid-template-columns:auto minmax(0,1fr); gap:16px; align-items:center; padding-bottom:20px; border-bottom:1px solid var(--line); }
.project-sheet-hero.has-cover { grid-template-columns:minmax(120px,190px) auto minmax(0,1fr); }
.project-sheet-cover { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; border:1px solid var(--line); border-radius:12px; background:var(--soft); }
.project-sheet-hero h2 { margin:2px 0 3px; font-size:var(--cp-fs-1_72rem,1.72rem); line-height:1.1; }
.project-sheet-hero p { margin:0; color:var(--muted); }
.project-sheet-hero .eyebrow { margin:0 0 2px; }
.project-sheet-section { padding:22px 0; border-bottom:1px solid var(--line); break-inside:avoid; }
.project-sheet-section:last-child { border-bottom:0; }
.project-sheet-section h3 { margin:0 0 11px; font-size:var(--cp-fs-1_02rem,1.02rem); }
.project-rich-text { white-space:pre-wrap; line-height:1.62; margin:0; }
.project-sheet-instructions { padding:22px; margin:20px 0 0; border:1px solid color-mix(in srgb,var(--blue) 25%,var(--line)); border-radius:14px; background:color-mix(in srgb,var(--blue) 4%,var(--surface)); }
.project-sheet-instructions + .project-sheet-section { margin-top:0; }
.project-reference-gallery { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.project-reference-gallery figure { margin:0; border:1px solid var(--line); border-radius:12px; overflow:hidden; background:var(--soft); break-inside:avoid; }
.project-reference-gallery img { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.project-reference-gallery figcaption { padding:8px 10px; font-size:var(--cp-fs-0_72rem,.72rem); color:var(--muted); line-height:1.35; }
.project-phase-sheet-list { display:grid; gap:10px; }
.project-phase-sheet-list > article { border:1px solid var(--line); border-radius:13px; padding:13px 14px; break-inside:avoid; }
.project-phase-sheet-list > article.inactive { opacity:.55; }
.project-phase-sheet-list article > header { display:flex; align-items:center; gap:11px; margin-bottom:7px; }
.project-phase-sheet-list article > header > span { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:9px; background:var(--soft); color:var(--blue-dark); font-weight:900; }
.project-phase-sheet-list h4 { margin:0; font-size:var(--cp-fs-0_92rem,.92rem); }
.project-phase-sheet-list small { color:var(--muted); }
.project-phase-criteria-chips { display:flex; flex-wrap:wrap; gap:5px; margin-top:9px; }
.project-phase-criteria-chips span { padding:5px 8px; border-radius:999px; background:var(--soft); font-size:var(--cp-fs-0_64rem,.64rem); font-weight:700; }
.project-resource-list { display:grid; gap:8px; }
.project-resource-list a { display:grid; gap:2px; padding:10px 12px; border:1px solid var(--line); border-radius:10px; text-decoration:none; color:var(--text); }
.project-resource-list a:hover { border-color:var(--blue); }
.project-resource-list small { color:var(--muted); overflow-wrap:anywhere; }
.project-attachment-list,.project-attachment-editor-list { display:grid; gap:7px; }
.project-attachment-list > div,.project-attachment-editor-list > div { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 11px; border:1px solid var(--line); border-radius:10px; }
.project-attachment-list span,.project-attachment-editor-list span { display:grid; gap:2px; min-width:0; }
.project-attachment-list b,.project-attachment-editor-list b { overflow-wrap:anywhere; }
.project-attachment-list small,.project-attachment-editor-list small { color:var(--muted); }
.project-section-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.project-section-heading span { color:var(--muted); font-size:var(--cp-fs-0_7rem,.7rem); font-weight:800; }
.project-criteria-sheet { display:grid; gap:12px; }
.project-criteria-group { border:1px solid var(--line); border-left:4px solid var(--blue); border-radius:13px; overflow:hidden; break-inside:avoid; }
.project-criteria-group.saber { border-left-color:#b89c22; }
.project-criteria-group.informacao { border-left-color:#2e9c87; }
.project-criteria-group.pensamento { border-left-color:#4c7eb4; }
.project-criteria-group.desenvolvimento { border-left-color:#bd667a; }
.project-criteria-group.sensibilidade { border-left-color:#8466a7; }
.project-criteria-group.saude { border-left-color:#78974a; }
.project-criteria-group > h4 { margin:0; padding:10px 13px; background:var(--soft); font-size:var(--cp-fs-0_82rem,.82rem); }
.project-criteria-group > article { padding:10px 13px; border-top:1px solid var(--line); }
.project-criteria-group article header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.project-criteria-group article header b { white-space:nowrap; }
.project-criteria-group article small { display:block; margin-top:4px; color:var(--muted); }
.project-criterion-context { margin:6px 0 0; line-height:1.48; }
.project-descriptor-compact { margin-top:8px; padding:8px 10px; border-radius:9px; background:var(--soft); }
.project-descriptor-compact p { margin:4px 0; font-size:var(--cp-fs-0_68rem,.68rem); line-height:1.42; }
.project-print-brand { margin-bottom:16px; }

.project-brief-editor { display:grid; gap:16px; }
.project-editor-section { border:1px solid var(--line); border-radius:14px; padding:16px; background:var(--surface); }
.project-editor-section > h3,.project-editor-section-heading h3 { margin:0 0 11px; font-size:var(--cp-fs-1rem,1rem); }
.project-editor-section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin-bottom:10px; }
.project-editor-section-heading h3 { margin-bottom:3px; }
.project-editor-section-heading p { margin:0; color:var(--muted); font-size:var(--cp-fs-0_72rem,.72rem); line-height:1.4; }
.project-editor-two { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:13px; }
.project-cover-editor { display:grid; grid-template-columns:150px minmax(0,1fr); gap:14px; align-items:center; margin:0 0 14px; padding:11px; border:1px solid var(--line); border-radius:12px; background:var(--soft); }
.project-cover-editor > img,.project-cover-placeholder { width:150px; aspect-ratio:4/3; object-fit:cover; border-radius:9px; border:1px solid var(--line); background:var(--surface); }
.project-cover-placeholder { display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:var(--cp-fs-0_72rem,.72rem); font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.project-cover-editor-copy { display:grid; gap:5px; min-width:0; }
.project-cover-editor-copy > p { margin:0; color:var(--muted); font-size:var(--cp-fs-0_72rem,.72rem); line-height:1.45; }
.project-cover-editor-actions { display:flex; gap:9px; align-items:center; flex-wrap:wrap; margin-top:3px; }
.project-brief-editor textarea { resize:vertical; min-height:74px; line-height:1.45; }
.project-phase-note-editor { display:grid; gap:10px; }
.project-phase-note-editor label { display:grid; grid-template-columns:minmax(170px,240px) minmax(0,1fr); gap:12px; align-items:start; padding:10px; border:1px solid var(--line); border-radius:11px; }
.project-phase-note-editor label > span { display:grid; gap:3px; }
.project-phase-note-editor small { color:var(--muted); }
.file-button { position:relative; overflow:hidden; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; white-space:nowrap; }
.file-button input { position:absolute; inset:0; opacity:0; cursor:pointer; }
.project-image-editor-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.project-image-editor-grid article { display:grid; gap:7px; padding:8px; border:1px solid var(--line); border-radius:11px; }
.project-image-editor-grid img { width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:7px; }
.project-image-editor-grid input { min-width:0; }
.project-image-editor-grid button { justify-self:start; }
.project-link-editor-list { display:grid; gap:8px; }
.project-link-editor-list > div { display:grid; grid-template-columns:minmax(150px,.75fr) minmax(220px,1.4fr) auto; gap:8px; align-items:center; }
.project-criterion-note-list { display:grid; gap:10px; max-height:430px; overflow-y:auto; padding-right:4px; }
.project-criterion-note-list > section { border:1px solid var(--line); border-radius:11px; overflow:hidden; }
.project-criterion-note-list h4 { margin:0; padding:8px 11px; background:var(--soft); }
.project-criterion-note-list label { display:grid; grid-template-columns:minmax(210px,.7fr) minmax(0,1.3fr); gap:12px; padding:9px 11px; border-top:1px solid var(--line); align-items:start; }
.project-criterion-note-list label > span { display:flex; align-items:flex-start; justify-content:space-between; gap:8px; }
.project-criterion-note-list label small { color:var(--muted); white-space:nowrap; }
.project-criterion-note-list textarea { min-height:58px; }
.project-rubric-weight-sync{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;border:1px solid var(--line);border-radius:11px;padding:9px 11px;margin-bottom:9px;background:var(--surface)}
.project-rubric-weight-sync>div:first-child{display:grid;gap:2px}
.project-rubric-weight-sync small{color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem)}
.project-rubric-weight-sync.valid{border-color:color-mix(in srgb,#4f8a68 45%,var(--line));background:color-mix(in srgb,#eaf4ef 68%,var(--surface))}
.project-rubric-weight-sync.pending{border-color:color-mix(in srgb,#b77a3e 50%,var(--line));background:color-mix(in srgb,#fff3e8 72%,var(--surface))}
.project-rubric-weight-sync>p{flex-basis:100%;margin:0;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem)}
.project-rubric-weight-sync-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.project-rubric-weight-sync-actions>span{white-space:nowrap;color:var(--muted);font-size:var(--cp-fs-0_72rem,.72rem)}
.project-criterion-weight-inline{display:inline-flex!important;align-items:center!important;gap:3px!important;flex:0 0 auto}
.project-criterion-weight-inline input{width:58px;padding:5px 6px;text-align:right;font-weight:800}
.project-criterion-weight-inline>b{color:var(--muted);font-size:var(--cp-fs-0_72rem,.72rem)}
.project-criterion-weight-inline.editing input{border-color:color-mix(in srgb,var(--primary) 42%,var(--line));background:color-mix(in srgb,var(--primary) 4%,var(--surface))}
.project-descriptor-toggle { margin-top:2px; font-size:var(--cp-fs-0_72rem,.72rem); }

.learning-state-plenary { color:#16765b !important; }
.learning-state-consolidated { color:#256f83 !important; }
.learning-state-progress { color:#a06b16 !important; }
.learning-state-pending { color:#b04455 !important; }
.learning-state-na { color:#7a8493 !important; }

@media (max-width: 1050px) {
  .project-workspace { grid-template-columns:1fr; }
  .project-library { position:static; max-height:none; }
  .project-library-list { grid-template-columns:repeat(2,minmax(0,1fr)); max-height:320px; }
  .project-sheet-toolbar { align-items:flex-start; flex-direction:column; }
  .project-sheet-actions { justify-content:flex-start; }
}
@media (max-width: 760px) {
  .project-student-sheet { padding:20px; }
  .project-library-list,.project-reference-gallery,.project-image-editor-grid,.project-editor-two { grid-template-columns:1fr; }
  .project-sheet-hero.has-cover { grid-template-columns:88px auto minmax(0,1fr); gap:10px; }
  .project-cover-editor { grid-template-columns:110px minmax(0,1fr); }
  .project-cover-editor > img,.project-cover-placeholder { width:110px; }
  .project-phase-note-editor label,.project-criterion-note-list label { grid-template-columns:1fr; }
  .project-link-editor-list > div { grid-template-columns:1fr; }
  .project-editor-section-heading { flex-direction:column; }
}

@page projectPortrait { size:A4 portrait; margin:10mm; }
@media print {
  body[data-print-section="project-sheet"] { background:#fff !important; }
  body[data-print-section="project-sheet"] .project-workspace { display:block !important; }
  body[data-print-section="project-sheet"] #print-project-sheet { display:block !important; width:100% !important; max-width:none !important; margin:0 !important; padding:0 !important; border:0 !important; box-shadow:none !important; page:projectPortrait; }
  body[data-print-section="project-sheet"] .project-student-sheet { padding:0 !important; color:#111827 !important; }
  body[data-print-section="project-sheet"] .project-print-brand { display:block !important; padding-bottom:4mm; border-bottom:1px solid #9da8b8; }
  body[data-print-section="project-sheet"] .project-print-brand .document-brand-row { display:flex !important; }
  body[data-print-section="project-sheet"] .project-print-brand .ministry-logo { width:58mm !important; max-height:16mm !important; }
  body[data-print-section="project-sheet"] .project-print-brand .assessment-school-logo { width:46mm !important; max-height:16mm !important; }
  body[data-print-section="project-sheet"] .project-sheet-hero { padding:4mm 0 5mm !important; }
  body[data-print-section="project-sheet"] .project-sheet-hero h2 { font-size:19pt !important; }
  body[data-print-section="project-sheet"] .project-class-badge { min-width:16mm !important; min-height:10mm !important; padding:1.5mm 2.5mm !important; font-size:9pt !important; }
  body[data-print-section="project-sheet"] .project-sheet-section { padding:4mm 0 !important; }
  body[data-print-section="project-sheet"] .project-sheet-section h3 { font-size:11pt !important; margin-bottom:2mm !important; }
  body[data-print-section="project-sheet"] .project-rich-text { font-size:9pt !important; line-height:1.45 !important; }
  body[data-print-section="project-sheet"] .project-sheet-instructions { margin:3mm 0 0 !important; padding:4mm !important; }
  body[data-print-section="project-sheet"] .project-sheet-hero.has-cover { grid-template-columns:38mm auto minmax(0,1fr) !important; }
  body[data-print-section="project-sheet"] .project-sheet-cover { max-height:28mm; }
  body[data-print-section="project-sheet"] .project-reference-gallery { grid-template-columns:repeat(3,1fr) !important; gap:2.5mm !important; }
  body[data-print-section="project-sheet"] .project-reference-gallery img { max-height:52mm; }
  body[data-print-section="project-sheet"] .project-phase-sheet-list { gap:2mm !important; }
  body[data-print-section="project-sheet"] .project-phase-sheet-list > article { padding:2.5mm 3mm !important; }
  body[data-print-section="project-sheet"] .project-phase-criteria-chips span { font-size:6.8pt !important; padding:1mm 1.5mm !important; }
  body[data-print-section="project-sheet"] .project-resource-list a { padding:2mm 2.5mm !important; }
  body[data-print-section="project-sheet"] .project-criteria-sheet { gap:2.5mm !important; }
  body[data-print-section="project-sheet"] .project-criteria-group > h4 { padding:2mm 2.5mm !important; font-size:8.5pt !important; }
  body[data-print-section="project-sheet"] .project-criteria-group > article { padding:2mm 2.5mm !important; }
  body[data-print-section="project-sheet"] .project-criteria-group article header { font-size:8.5pt !important; }
  body[data-print-section="project-sheet"] .project-criteria-group article small,
  body[data-print-section="project-sheet"] .project-criterion-context { font-size:7.4pt !important; }
  body[data-print-section="project-sheet"] .project-descriptor-compact p { font-size:6.8pt !important; }
  body[data-print-section="project-sheet"] a { color:#111827 !important; }
}


/* CADPROF V55 — grelha final do projeto em PDF numa única folha A4 horizontal */
@media print {
  /* Na rubrica final, o valor do critério já é autoexplicativo; elimina a linha redundante “de X%”. */
  body[data-print-section="assessment"] .task-final-entry span {
    display: none !important;
  }
  body[data-print-section="assessment"] .task-final-entry {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 0 !important;
    height: 100% !important;
    gap: 0 !important;
  }
  body[data-print-section="assessment"] .task-final-entry strong {
    font-size: 6.5pt !important;
    line-height: 1 !important;
  }
  /* A altura útil do corpo é distribuída dinamicamente pelas linhas através de
     --assessment-print-row-height, calculada no componente em função do número de alunos. */
  body[data-print-section="assessment"] .assessment-matrix tbody tr,
  body[data-print-section="assessment"] .assessment-matrix tbody td {
    break-inside: avoid !important;
    page-break-inside: avoid !important;
  }
  body[data-print-section="assessment"] #print-assessment.assessment-landscape {
    break-after: avoid !important;
    page-break-after: avoid !important;
  }
}

/* ===== CadProf v56 · Projetos por turma, semestres e sínteses descritivas ===== */
.project-class-selector {
  display: grid;
  gap: 8px;
  margin: 0 0 14px;
}
.project-class-selector-label {
  color: var(--muted);
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.project-class-tabs,
.descriptive-class-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.project-class-tabs button,
.descriptive-class-tabs button {
  display: grid;
  grid-template-columns: 5px minmax(0,1fr) auto;
  align-items: center;
  gap: 7px;
  min-width: 145px;
  max-width: 205px;
  min-height: 42px;
  padding: 6px 9px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}
.project-class-tabs button > i,
.descriptive-class-tabs button > i {
  width: 5px;
  height: 28px;
  border-radius: 999px;
}
.project-class-tabs button span,
.descriptive-class-tabs button span { min-width: 0; }
.project-class-tabs button strong,
.descriptive-class-tabs button strong {
  display: block;
  font-size: var(--cp-fs-0_72rem, .72rem);
  line-height: 1.15;
}
.project-class-tabs button small,
.descriptive-class-tabs button small {
  display: block;
  overflow: hidden;
  margin-top: 2px;
  color: var(--muted);
  font-size: var(--cp-fs-0_60rem, .60rem);
  line-height: 1.15;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.project-class-tabs button em,
.descriptive-class-tabs button em {
  color: var(--muted);
  font-size: var(--cp-fs-0_62rem, .62rem);
  font-style: normal;
  font-weight: 800;
  white-space: nowrap;
}
.project-class-tabs button.active,
.descriptive-class-tabs button.active {
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--blue) 10%, transparent), var(--shadow-soft);
}
.project-number-mini {
  color: var(--blue-dark);
  font-size: var(--cp-fs-0_64rem, .64rem);
  font-weight: 850;
  letter-spacing: .02em;
}

.field-help {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: var(--cp-fs-0_64rem, .64rem);
  font-weight: 500;
  line-height: 1.35;
}
.calendar-item.type-semester {
  border-left-color: #6b5dd3;
  background: color-mix(in srgb, #6b5dd3 6%, var(--surface));
}
.semester-calendar-note {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 12px;
  padding: 9px 12px;
  border: 1px solid color-mix(in srgb, #6b5dd3 28%, var(--line));
  border-radius: 10px;
  background: color-mix(in srgb, #6b5dd3 5%, var(--surface));
}
.semester-calendar-note b {
  color: #5141b2;
  font-size: var(--cp-fs-0_72rem, .72rem);
  white-space: nowrap;
}
.semester-calendar-note span {
  color: var(--muted);
  font-size: var(--cp-fs-0_68rem, .68rem);
}

.descriptive-page-heading { margin-bottom: 12px; }
.descriptive-class-tabs { margin-bottom: 10px; }
.descriptive-context {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
}
.descriptive-context-title {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 235px;
}
.descriptive-context-title b,
.descriptive-context-title small { display: block; }
.descriptive-context-title small {
  margin-top: 2px;
  color: var(--muted);
  font-size: var(--cp-fs-0_64rem, .64rem);
}
.descriptive-semester-note {
  color: var(--muted);
  font-size: var(--cp-fs-0_65rem, .65rem);
}
.descriptive-period-tabs {
  display: flex;
  gap: 5px;
  margin-left: auto;
}
.descriptive-period-tabs button {
  padding: 6px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--muted);
  font-size: var(--cp-fs-0_66rem, .66rem);
  font-weight: 800;
  cursor: pointer;
}
.descriptive-period-tabs button.active {
  border-color: var(--blue);
  background: var(--blue-soft);
  color: var(--blue-dark);
}
.descriptive-workspace {
  display: grid;
  grid-template-columns: minmax(210px, 270px) minmax(0,1fr);
  gap: 14px;
  align-items: start;
}
.descriptive-student-list { padding: 0; overflow: hidden; }
.descriptive-student-list > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 13px 14px 10px;
  border-bottom: 1px solid var(--line);
}
.descriptive-student-list > header h2 { margin: 0; font-size: var(--cp-fs-0_96rem, .96rem); }
.descriptive-student-list > header span { color: var(--muted); font-size: var(--cp-fs-0_68rem, .68rem); }
.descriptive-student-list > div {
  display: grid;
  gap: 3px;
  max-height: calc(100vh - 315px);
  overflow-y: auto;
  padding: 7px;
}
.descriptive-student-list button {
  display: grid;
  grid-template-columns: 29px minmax(0,1fr) 18px;
  align-items: center;
  gap: 7px;
  width: 100%;
  padding: 7px 8px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text);
  text-align: left;
  cursor: pointer;
}
.descriptive-student-list button:hover:not(:disabled) { background: color-mix(in srgb, var(--blue) 4%, var(--surface)); }
.descriptive-student-list button.active {
  border-color: color-mix(in srgb, var(--blue) 35%, var(--line));
  background: var(--blue-soft);
}
.descriptive-student-list button.inactive { opacity: .52; cursor: default; }
.descriptive-student-list button strong,
.descriptive-student-list button small { display: block; }
.descriptive-student-list button strong {
  overflow: hidden;
  font-size: var(--cp-fs-0_70rem, .70rem);
  line-height: 1.2;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.descriptive-student-list button small {
  margin-top: 1px;
  color: var(--muted);
  font-size: var(--cp-fs-0_59rem, .59rem);
}
.descriptive-student-list button > i {
  color: #168967;
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-style: normal;
  font-weight: 900;
}
.student-list-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 27px;
  height: 27px;
  border-radius: 50%;
  background: color-mix(in srgb, var(--blue) 9%, var(--surface));
  color: var(--blue-dark);
  font-size: var(--cp-fs-0_64rem, .64rem);
  font-weight: 850;
}
.descriptive-editor { padding: 16px 18px 18px; }
.descriptive-student-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
  padding-bottom: 11px;
  border-bottom: 1px solid var(--line);
}
.descriptive-student-header > div {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.descriptive-student-header img,
.descriptive-avatar {
  width: 39px;
  height: 39px;
  border-radius: 50%;
  object-fit: cover;
}
.descriptive-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--blue-soft);
  color: var(--blue-dark);
  font-weight: 850;
}
.descriptive-student-header h2 { margin: 0; font-size: var(--cp-fs-1_05rem, 1.05rem); }
.descriptive-student-header small { color: var(--muted); font-size: var(--cp-fs-0_65rem, .65rem); }
.descriptive-help {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: var(--cp-fs-0_70rem, .70rem);
  line-height: 1.45;
}
.descriptive-dimension-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 9px 12px;
}
.descriptive-dimension-grid label > span,
.descriptive-text-field > span {
  display: block;
  margin-bottom: 4px;
  color: var(--text);
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 800;
}
.descriptive-dimension-grid select {
  width: 100%;
  min-height: 38px;
  font-size: var(--cp-fs-0_68rem, .68rem);
}
.descriptive-generate-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 13px 0;
}
.descriptive-generate-row small {
  color: var(--muted);
  font-size: var(--cp-fs-0_64rem, .64rem);
}
.descriptive-text-field textarea {
  width: 100%;
  min-height: 145px;
  resize: vertical;
  line-height: 1.55;
}
.descriptive-text-field > small {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: var(--cp-fs-0_61rem, .61rem);
}

@media (max-width: 980px) {
  .descriptive-workspace { grid-template-columns: 1fr; }
  .descriptive-student-list > div { max-height: 250px; }
  .descriptive-context { align-items: flex-start; flex-wrap: wrap; }
  .descriptive-period-tabs { margin-left: 0; }
}
@media (max-width: 650px) {
  .project-class-tabs,
  .descriptive-class-tabs { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 3px; }
  .project-class-tabs button,
  .descriptive-class-tabs button { min-width: 155px; }
  .descriptive-dimension-grid { grid-template-columns: 1fr; }
  .descriptive-generate-row { align-items: flex-start; flex-direction: column; }
  .semester-calendar-note { align-items: flex-start; flex-direction: column; gap: 4px; }
}


/* ===== CadProf v57 · Modo claro / modo escuro ===== */
:root[data-color-mode="dark"] {
  --green: #4bc79d;
  --amber: #e6a26e;
  --red: #ef7b89;
  --shadow: 0 14px 38px rgba(0,0,0,.34);
  --shadow-soft: 0 7px 22px rgba(0,0,0,.22);
  --muted-strong: #c7d0db;
}
:root[data-color-mode="dark"] html,
:root[data-color-mode="dark"] body { background: var(--canvas); color: var(--ink); }
:root[data-color-mode="dark"] .topbar {
  background: color-mix(in srgb, var(--surface) 92%, transparent);
  border-color: var(--line);
}
:root[data-color-mode="dark"] .panel,
:root[data-color-mode="dark"] .modal,
:root[data-color-mode="dark"] .stat-card,
:root[data-color-mode="dark"] .agenda-item > button,
:root[data-color-mode="dark"] .project-card,
:root[data-color-mode="dark"] .quick-list button,
:root[data-color-mode="dark"] .class-tabs button,
:root[data-color-mode="dark"] .class-summary,
:root[data-color-mode="dark"] .row-button,
:root[data-color-mode="dark"] .rubric-tabs button,
:root[data-color-mode="dark"] .descriptor,
:root[data-color-mode="dark"] .sync-feedback span,
:root[data-color-mode="dark"] .backup-actions button,
:root[data-color-mode="dark"] .icon-button,
:root[data-color-mode="dark"] .import-method-tabs button,
:root[data-color-mode="dark"] .import-file,
:root[data-color-mode="dark"] .table-input,
:root[data-color-mode="dark"] .attendance-legend span,
:root[data-color-mode="dark"] .attendance-person button,
:root[data-color-mode="dark"] .level-buttons button,
:root[data-color-mode="dark"] .sync-pill,
:root[data-color-mode="dark"] .theme-option,
:root[data-color-mode="dark"] .session-closed > div {
  background: var(--surface);
  color: var(--ink);
  border-color: var(--line);
}
:root[data-color-mode="dark"] .modal-header,
:root[data-color-mode="dark"] .modal-footer.sticky {
  background: color-mix(in srgb, var(--surface) 96%, transparent);
  border-color: var(--line);
}
:root[data-color-mode="dark"] input:not([type="color"]):not([type="checkbox"]):not([type="radio"]),
:root[data-color-mode="dark"] select,
:root[data-color-mode="dark"] textarea,
:root[data-color-mode="dark"] .field textarea,
:root[data-color-mode="dark"] .modal-form textarea,
:root[data-color-mode="dark"] .search {
  background: color-mix(in srgb, var(--surface) 92%, #0b1016);
  color: var(--ink);
  border-color: var(--line);
}
:root[data-color-mode="dark"] input::placeholder,
:root[data-color-mode="dark"] textarea::placeholder { color: #7f8c9b; }
:root[data-color-mode="dark"] option { background: #19212b; color: #edf2f7; }
:root[data-color-mode="dark"] .secondary {
  background: color-mix(in srgb, var(--surface) 94%, #0b1016);
  color: var(--ink);
  border-color: var(--line);
}
:root[data-color-mode="dark"] .secondary:hover {
  background: color-mix(in srgb, var(--blue) 10%, var(--surface));
  border-color: color-mix(in srgb, var(--blue) 48%, var(--line));
}
:root[data-color-mode="dark"] .secondary.active,
:root[data-color-mode="dark"] .appearance-mode-buttons .secondary.active {
  background: var(--blue-soft);
  color: var(--blue-dark);
  border-color: var(--blue);
}
:root[data-color-mode="dark"] .demo-banner,
:root[data-color-mode="dark"] .date-tile,
:root[data-color-mode="dark"] .quick-list button span,
:root[data-color-mode="dark"] th,
:root[data-color-mode="dark"] .lesson-date,
:root[data-color-mode="dark"] .rubric-domain-list > section > header > span,
:root[data-color-mode="dark"] .descriptor-grid,
:root[data-color-mode="dark"] .schedule-day,
:root[data-color-mode="dark"] .schedule-time,
:root[data-color-mode="dark"] .status-badge,
:root[data-color-mode="dark"] .security-note,
:root[data-color-mode="dark"] .import-source-panel,
:root[data-color-mode="dark"] .import-preview > header,
:root[data-color-mode="dark"] .attendance-editor > header,
:root[data-color-mode="dark"] .rubric-total,
:root[data-color-mode="dark"] .descriptor-editor,
:root[data-color-mode="dark"] .score-summary,
:root[data-color-mode="dark"] .score-list > article > header,
:root[data-color-mode="dark"] .attendance-grid,
:root[data-color-mode="dark"] .lesson-date-lock output,
:root[data-color-mode="dark"] .project-task-total,
:root[data-color-mode="dark"] .project-phase-coverage,
:root[data-color-mode="dark"] .phase-criteria-table thead th,
:root[data-color-mode="dark"] .phase-share-single,
:root[data-color-mode="dark"] .level-0 {
  background: color-mix(in srgb, var(--surface) 84%, var(--canvas));
  color: var(--ink);
  border-color: var(--line);
}
:root[data-color-mode="dark"] tbody tr:hover,
:root[data-color-mode="dark"] .assessment-matrix tbody tr:hover td.sticky-student {
  background: color-mix(in srgb, var(--blue) 5%, var(--surface));
}
:root[data-color-mode="dark"] .demo-banner p,
:root[data-color-mode="dark"] .secondary,
:root[data-color-mode="dark"] .session-closed p { color: var(--ink); }
:root[data-color-mode="dark"] .danger-button,
:root[data-color-mode="dark"] .not-delivered-action,
:root[data-color-mode="dark"] .teacher-absence-toggle {
  background: color-mix(in srgb, var(--red) 11%, var(--surface));
  border-color: color-mix(in srgb, var(--red) 35%, var(--line));
}
:root[data-color-mode="dark"] .stat-card.violet > span { background: color-mix(in srgb, var(--violet) 16%, var(--surface)); }
:root[data-color-mode="dark"] .stat-card.amber > span { background: color-mix(in srgb, var(--amber) 15%, var(--surface)); }
:root[data-color-mode="dark"] .stat-card.green > span { background: color-mix(in srgb, var(--green) 14%, var(--surface)); }
:root[data-color-mode="dark"] .assessment-matrix .rubric-group.saber,
:root[data-color-mode="dark"] .assessment-matrix .rubric-group.informacao,
:root[data-color-mode="dark"] .assessment-matrix .rubric-group.pensamento,
:root[data-color-mode="dark"] .assessment-matrix .rubric-group.desenvolvimento,
:root[data-color-mode="dark"] .assessment-matrix .rubric-group.sensibilidade,
:root[data-color-mode="dark"] .assessment-matrix .rubric-group.saude {
  color: var(--ink);
  filter: saturate(.72) brightness(.64);
}
:root[data-color-mode="dark"] .assessment-matrix .criterion-heading.criterion-tone-0,
:root[data-color-mode="dark"] .assessment-matrix .criterion-heading.criterion-tone-1,
:root[data-color-mode="dark"] .assessment-matrix .criterion-heading.criterion-tone-2,
:root[data-color-mode="dark"] .assessment-matrix .criterion-heading.criterion-tone-3,
:root[data-color-mode="dark"] .assessment-matrix .criterion-heading.criterion-tone-4,
:root[data-color-mode="dark"] .assessment-matrix .criterion-heading.criterion-tone-5 {
  background: color-mix(in srgb, var(--criterion-accent) 18%, var(--surface));
  color: var(--ink);
}
:root[data-color-mode="dark"] .summary-grade-cell.not-enrolled,
:root[data-color-mode="dark"] .student-inactive,
:root[data-color-mode="dark"] .phase-criteria-table .phase-disabled,
:root[data-color-mode="dark"] .phase-criteria-table-transposed tr.phase-disabled-row .phase-row-label,
:root[data-color-mode="dark"] .rubric-criterion-nav .rubric-criterion-card {
  background: color-mix(in srgb, var(--surface) 72%, #697585) !important;
  color: #c3ccd7;
}
:root[data-color-mode="dark"] .rubric-criterion-nav .rubric-criterion-card.active {
  background: color-mix(in srgb, var(--blue) 13%, var(--surface)) !important;
  color: var(--ink);
}
:root[data-color-mode="dark"] .stats-paat-table thead tr:not(.stats-paat-groups) th,
:root[data-color-mode="dark"] .stats-paat-table .stats-paat-groups th {
  background: color-mix(in srgb, var(--surface) 74%, #5f6875) !important;
  color: var(--ink) !important;
}
:root[data-color-mode="dark"] .brand.cadprof-brand-panel {
  background: color-mix(in srgb, var(--sidebar) 82%, var(--surface));
  border: 1px solid color-mix(in srgb, var(--blue) 18%, var(--line));
}
:root[data-color-mode="dark"] .mobile-brand {
  padding: 5px 8px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--surface) 92%, var(--canvas));
}
:root[data-color-mode="dark"] .cadprof-startup {
  color: #aab5c3;
  background:
    radial-gradient(circle at 18% 22%, rgba(72,194,181,.10), transparent 28%),
    radial-gradient(circle at 82% 78%, rgba(252,199,86,.06), transparent 24%),
    #11171e;
}

.sidebar-utility-controls {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  flex: none;
}
.appearance-toggle-button {
  appearance: none;
  width: 25px;
  height: 23px;
  padding: 0;
  display: inline-grid;
  place-items: center;
  border: 1px solid #33415d;
  border-radius: 6px;
  background: #151f34;
  color: #aeb9ce;
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.appearance-toggle-button:hover { color:#fff; background:#24345a; border-color:#52648c; }
.appearance-toggle-button:focus-visible { outline:2px solid #9db0ff; outline-offset:2px; }
.appearance-mode-picker {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-bottom:17px;
  padding:13px 14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:color-mix(in srgb,var(--surface) 92%,var(--canvas));
}
.appearance-mode-picker h3,
.appearance-mode-picker p { margin:0; }
.appearance-mode-picker h3 { font-size:var(--cp-fs-0_84rem,.84rem); }
.appearance-mode-picker p { margin-top:3px; color:var(--muted); font-size:var(--cp-fs-0_70rem,.70rem); line-height:1.4; }
.appearance-mode-buttons { display:inline-flex; align-items:center; gap:6px; flex:none; }
.appearance-mode-buttons .secondary { padding:8px 11px; }
.appearance-mode-buttons .secondary.active { border-color:var(--blue); background:var(--blue-soft); color:var(--blue-dark); }

@media (max-width: 680px) {
  .appearance-mode-picker { align-items:flex-start; flex-direction:column; }
}

/* Os documentos impressos/PDF mantêm sempre a apresentação clara, independentemente do modo da app. */
@media print {
  :root,
  :root[data-color-mode="dark"] {
    --canvas:#ffffff !important;
    --surface:#ffffff !important;
    --white:#ffffff !important;
    --ink:#111827 !important;
    --muted:#667085 !important;
    --line:#d8dde6 !important;
    color-scheme: light !important;
  }
}

/* ===== CadProf v58 · Maior destaque da transição semestral no Calendário Escolar ===== */
.semester-calendar-note {
  position: relative;
  gap: 14px;
  margin-bottom: 14px;
  padding: 12px 15px;
  border: 2px solid color-mix(in srgb, #6b5dd3 42%, var(--line));
  border-left-width: 7px;
  border-radius: 12px;
  background: linear-gradient(90deg,
    color-mix(in srgb, #6b5dd3 12%, var(--surface)),
    color-mix(in srgb, #6b5dd3 5%, var(--surface)));
  box-shadow: 0 5px 16px color-mix(in srgb, #6b5dd3 10%, transparent);
}
.semester-calendar-note b {
  color: color-mix(in srgb, #5141b2 88%, var(--ink));
  font-size: var(--cp-fs-0_76rem, .76rem);
  font-weight: 900;
  letter-spacing: .025em;
  text-transform: uppercase;
}
.semester-calendar-note span {
  color: var(--ink);
  font-size: var(--cp-fs-0_72rem, .72rem);
  font-weight: 700;
}

.calendar-item.type-semester.semester-boundary-highlight {
  position: relative;
  margin: 7px 8px;
  padding-top: 11px;
  padding-bottom: 11px;
  border: 2px solid color-mix(in srgb, #6b5dd3 48%, var(--line));
  border-left: 8px solid #6b5dd3;
  border-radius: 12px;
  background: linear-gradient(90deg,
    color-mix(in srgb, #6b5dd3 16%, var(--surface)),
    color-mix(in srgb, #6b5dd3 7%, var(--surface)));
  box-shadow: 0 5px 16px color-mix(in srgb, #6b5dd3 12%, transparent);
}
.calendar-item.type-semester.semester-boundary-highlight .calendar-date {
  min-width: 44px;
  padding: 7px 5px 6px;
  border-radius: 10px;
  background: #6b5dd3;
  color: #fff;
}
.calendar-item.type-semester.semester-boundary-highlight .calendar-date b {
  color: #fff;
  font-size: var(--cp-fs-1_18rem, 1.18rem);
}
.calendar-item.type-semester.semester-boundary-highlight .calendar-date span {
  color: rgba(255,255,255,.86);
  font-weight: 800;
}
.calendar-item.type-semester.semester-boundary-highlight .calendar-main small {
  color: #5b4bc0;
  font-weight: 900;
  letter-spacing: .085em;
}
.calendar-item.type-semester.semester-boundary-highlight .calendar-main h3 {
  margin-top: 2px;
  color: var(--ink);
  font-size: var(--cp-fs-0_94rem, .94rem);
  font-weight: 900;
}
.calendar-item.type-semester.semester-boundary-highlight .calendar-main p {
  margin-top: 3px;
  color: var(--ink);
  font-weight: 650;
}

:root[data-color-mode="dark"] .semester-calendar-note,
:root[data-color-mode="dark"] .calendar-item.type-semester.semester-boundary-highlight {
  border-color: color-mix(in srgb, #9185ff 56%, var(--line));
  background: linear-gradient(90deg,
    color-mix(in srgb, #7567df 22%, var(--surface)),
    color-mix(in srgb, #7567df 10%, var(--surface)));
  box-shadow: 0 7px 20px rgba(0,0,0,.18);
}
:root[data-color-mode="dark"] .semester-calendar-note b,
:root[data-color-mode="dark"] .calendar-item.type-semester.semester-boundary-highlight .calendar-main small {
  color: #b9b1ff;
}
:root[data-color-mode="dark"] .calendar-item.type-semester.semester-boundary-highlight .calendar-date {
  background: #7567df;
}

@media (max-width: 680px) {
  .calendar-item.type-semester.semester-boundary-highlight { margin-left: 3px; margin-right: 3px; }
}

/* ===== CadProf v59 · Anos letivos, arquivo anual e backups ===== */
.academic-year-switcher {
  display:flex;
  align-items:center;
  gap:7px;
  padding:5px 7px 5px 10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
  white-space:nowrap;
}
.academic-year-switcher > span {
  color:var(--muted);
  font-size:var(--cp-fs-0_66rem,.66rem);
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.045em;
}
.academic-year-switcher select {
  width:auto;
  min-width:150px;
  padding:5px 26px 5px 7px;
  border:0;
  background:transparent;
  color:var(--ink);
  font-weight:800;
}
.archive-readonly-pill {
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:0 10px;
  border:1px solid color-mix(in srgb,#8b7aa5 40%,var(--line));
  border-radius:999px;
  background:color-mix(in srgb,#8b7aa5 11%,var(--surface));
  color:color-mix(in srgb,#6f5b90 80%,var(--ink));
  font-size:var(--cp-fs-0_67rem,.67rem);
  font-weight:850;
  white-space:nowrap;
}
.sync-pill:disabled { opacity:.5; cursor:not-allowed; }

.academic-year-panel { display:grid; gap:18px; }
.academic-year-panel-head,
.academic-year-history-head {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:18px;
}
.academic-year-panel-head h2,
.academic-year-panel-head p,
.academic-year-history-head h3 { margin:0; }
.academic-year-panel-head p:not(.eyebrow) { margin-top:4px; color:var(--muted); max-width:820px; line-height:1.48; }
.academic-year-actions-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}
.academic-year-action-card {
  display:grid;
  align-content:start;
  gap:11px;
  padding:15px;
  border:1px solid var(--line);
  border-radius:13px;
  background:color-mix(in srgb,var(--surface) 94%,var(--canvas));
}
.academic-year-action-card h3,
.academic-year-action-card p { margin:0; }
.academic-year-action-card h3 { color:var(--ink); font-size:var(--cp-fs-0_90rem,.90rem); }
.academic-year-action-card p,
.academic-year-action-card > small { color:var(--muted); font-size:var(--cp-fs-0_70rem,.70rem); line-height:1.5; }
.academic-year-action-card .toggle-row.compact { margin:0; padding:8px 0; background:transparent; border:0; }
.academic-year-history {
  display:grid;
  gap:10px;
  padding-top:15px;
  border-top:1px solid var(--line);
}
.academic-year-history-head small { max-width:620px; color:var(--muted); text-align:right; line-height:1.4; }
.academic-year-history-list { display:grid; gap:7px; }
.academic-year-history-row {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:14px;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
}
.academic-year-history-row > div:first-child { display:grid; gap:2px; }
.academic-year-history-row strong { color:var(--ink); }
.academic-year-history-row small { color:var(--muted); }

.local-backup-settings {
  display:grid;
  gap:9px;
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid var(--line);
}
.local-backup-settings > small { color:var(--muted); line-height:1.4; }
.project-template-picker {
  padding:10px 12px;
  border:1px solid color-mix(in srgb,var(--blue) 25%,var(--line));
  border-radius:10px;
  background:var(--blue-soft);
}

:root[data-color-mode="dark"] .archive-readonly-pill {
  color:#d8cfff;
  background:color-mix(in srgb,#8b7aa5 20%,var(--surface));
}

@media (max-width: 980px) {
  .academic-year-switcher > span { display:none; }
  .academic-year-switcher select { min-width:130px; }
  .academic-year-actions-grid { grid-template-columns:1fr; }
}
@media (max-width: 680px) {
  .academic-year-panel-head,
  .academic-year-history-head,
  .academic-year-history-row { align-items:stretch; flex-direction:column; }
  .academic-year-history-head small { text-align:left; }
  .academic-year-history-row .row-actions { justify-content:flex-start; }
  .archive-readonly-pill { display:none; }
}

@media print {
  .academic-year-switcher,
  .archive-readonly-pill,
  .academic-year-panel { display:none !important; }
}

/* ===== CadProf v60 · correções de impressão, avaliação, navegação e arquivo ===== */

/* O pequeno ponto amarelo era apenas um eco decorativo da marca. Retira-se para
   não ser confundido com um indicador de estado ou notificação. */
.page-heading::after,
.section-heading::after {
  content: none !important;
  display: none !important;
}

/* Ano letivo no lado esquerdo da barra: é uma escolha de contexto pouco frequente;
   a turma ativa permanece no grupo de ações de acesso rápido, à direita. */
.topbar-left {
  display: flex;
  align-items: center;
  gap: 13px;
  min-width: 0;
}
.topbar-left .breadcrumb { min-width: 0; }
.topbar-left .academic-year-switcher { flex: none; }
.topbar-actions { margin-left: auto; }

/* Avaliação: a faixa de turmas ocupa duas linhas em ecrãs largos. A ordem natural
   das turmas é preservada e evita-se o scroll horizontal. */
@media (min-width: 900px) {
  .assessment-browser {
    grid-template-columns: 1fr !important;
    gap: 9px !important;
  }
  .assessment-class-tabs {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    max-height: none !important;
    overflow: visible !important;
    padding-right: 0 !important;
  }
  .assessment-class-year-row {
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr);
    align-items: stretch;
    gap: 7px;
  }
  .assessment-class-year-label {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px 5px;
    border: 1px solid var(--line);
    border-radius: 8px;
    color: var(--muted);
    background: var(--panel-soft, var(--surface));
    font-size: var(--cp-fs-0_68rem, .68rem);
    font-weight: 800;
    text-align: center;
  }
  .assessment-class-year-buttons {
    display: grid;
    gap: 6px;
    min-width: 0;
  }
  .assessment-class-tabs button {
    min-width: 0 !important;
    min-height: 40px !important;
  }
  .assessment-period-browser { width: 100%; }
}

/* Resumo dos detalhes: Resultado e Nível passam a ser dois blocos simétricos,
   com o valor centrado exatamente sob o respetivo rótulo. */
.score-summary { justify-content: flex-start !important; }
.score-summary > div {
  display: flex !important;
  align-items: flex-start !important;
  gap: 26px !important;
  flex-wrap: nowrap !important;
}
.score-summary-metric {
  display: grid !important;
  grid-template-columns: 1fr !important;
  justify-items: center !important;
  align-content: start !important;
  gap: 4px !important;
  min-width: 88px;
  text-align: center;
}
.score-summary-label,
.score-level-label {
  display: block !important;
  color: var(--muted) !important;
  font-size: var(--cp-fs-0_78rem, .78rem) !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
  text-align: center !important;
}
.score-summary-result { font-size: var(--cp-fs-1_45rem, 1.45rem) !important; line-height: 1.15 !important; }
.score-level { white-space: normal !important; }
.score-level-value {
  justify-content: center !important;
  text-align: center !important;
  min-width: 116px;
  max-width: 360px;
}

@media print {
  /* Grelha final: reserva ligeiramente mais espaço para o rodapé institucional. */
  body[data-print-section="assessment"] .document-print-footer {
    margin-top: 1.5mm !important;
    padding-top: 1mm !important;
  }
  body[data-print-section="assessment"] .institutional-footer img {
    width: 10.5mm !important;
    height: 10.5mm !important;
  }

  /* Nas grelhas de uma fase/tarefa identifica-se claramente o que foi avaliado,
     sem aumentar significativamente a altura do cabeçalho. */
  body[data-print-section="assessment"] .assessment-task-document-label {
    display: block !important;
    margin-top: .7mm !important;
    color: #344054 !important;
    font-size: 6.6pt !important;
    line-height: 1.05 !important;
    font-weight: 800 !important;
    text-align: center !important;
  }

  /* O subgrid força as linhas verticais de cada tempo do horário a usar exatamente
     as mesmas colunas do cabeçalho, evitando desvios acumulados na impressão. */
  body[data-print-section="schedule"] .schedule-grid > .schedule-row {
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    grid-template-columns: subgrid !important;
  }
}

@media (max-width: 1180px) {
  .topbar-left { gap: 8px; }
  .topbar-left .breadcrumb span,
  .topbar-left .breadcrumb b { display: none; }
  .academic-year-switcher select { min-width: 126px; }
}

@media (max-width: 899px) {
  .assessment-class-tabs {
    display: flex !important;
    flex-direction: column !important;
    max-height: none !important;
    overflow: visible !important;
    gap: 8px !important;
  }
  .assessment-class-year-row {
    display: grid;
    gap: 5px;
  }
  .assessment-class-year-label {
    color: var(--muted);
    font-size: var(--cp-fs-0_68rem, .68rem);
    font-weight: 800;
  }
  .assessment-class-year-buttons {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    padding-bottom: 2px;
  }
  .assessment-class-year-buttons button { min-width: 145px; }
}


/* ===== CadProf v63 · largura desktop restaurada + padding interno do arquivo anual =====
   A V62 retirava a largura máxima da área principal e fazia os painéis crescerem
   até à largura total do browser. Em desktop voltamos à composição centrada e
   previsível anterior. O painel de Ano letivo e arquivo recebe ainda padding
   próprio, porque os seus cabeçalhos/ações não usam o .panel-header genérico. */
@media screen and (min-width: 881px) {
  .workspace > .content {
    width: 100% !important;
    max-width: 1540px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 36px !important;
    padding-right: 36px !important;
  }
}

/* Este painel tem uma estrutura própria; o espaçamento não pode depender do
   padding do content nem do .panel-header usado nas outras secções. */
.academic-year-panel {
  padding: 20px 22px 22px !important;
}

/* Mantém o painel confortável em ecrãs intermédios/pequenos sem desperdiçar área. */
@media screen and (max-width: 880px) {
  .academic-year-panel {
    padding: 18px !important;
  }
}

@media screen and (max-width: 580px) {
  .academic-year-panel {
    padding: 15px !important;
  }
}

@media print {
  /* O novo padding é apenas de interface; não altera os documentos impressos. */
  .academic-year-panel {
    padding: 0 !important;
  }
}


/* ===== CadProf PWA v0.16.1 · refinamento visual da Agenda ===== */
.assessment-scroll {
  --assessment-group-height: 42px;
  --assessment-criterion-height: 66px;
  position: relative;
  isolation: isolate;
  overscroll-behavior: contain;
  background: var(--surface);
}
.assessment-matrix { border-collapse: separate !important; border-spacing: 0 !important; }
.assessment-matrix .category-row > th,
.assessment-matrix .criterion-row > th {
  box-sizing: border-box !important;
  background-clip: border-box !important;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
}
.assessment-matrix .category-row > th {
  position: sticky !important;
  top: 0 !important;
  height: var(--assessment-group-height) !important;
  min-height: var(--assessment-group-height) !important;
  max-height: var(--assessment-group-height) !important;
  z-index: 420 !important;
}
.assessment-matrix .criterion-row > th {
  position: sticky !important;
  top: var(--assessment-group-height) !important;
  height: var(--assessment-criterion-height) !important;
  min-height: var(--assessment-criterion-height) !important;
  max-height: var(--assessment-criterion-height) !important;
  z-index: 410 !important;
  background: #f7f8fb !important;
}
.assessment-matrix .category-row > th:first-child,
.assessment-matrix .category-row > th:nth-child(2) { z-index: 440 !important; background: var(--surface) !important; }
.assessment-matrix tbody, .assessment-matrix tbody tr, .assessment-matrix tbody td { z-index: 0 !important; }
.assessment-matrix tbody > tr > td.sticky-number,
.assessment-matrix tbody > tr > td.sticky-student { z-index: 12 !important; }
:root[data-color-mode="dark"] .assessment-matrix .criterion-row > th { background: #222a35 !important; }

.descriptive-export-row { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-top:10px; padding:10px 12px; border:1px solid var(--line); border-radius:12px; background:color-mix(in srgb,var(--surface) 96%,var(--blue) 4%); }
.descriptive-export-scope { display:flex; align-items:center; gap:10px; flex-wrap:wrap; min-width:0; }
.descriptive-export-title { color:var(--muted); font-size:var(--cp-fs-0_68rem,.68rem); font-weight:850; letter-spacing:.04em; text-transform:uppercase; white-space:nowrap; }
.descriptive-export-toggle { display:flex; gap:4px; padding:3px; border:1px solid var(--line); border-radius:999px; background:var(--surface); }
.descriptive-export-toggle button { border:0; border-radius:999px; padding:6px 10px; background:transparent; color:var(--muted); font-size:var(--cp-fs-0_68rem,.68rem); font-weight:800; cursor:pointer; }
.descriptive-export-toggle button.active { background:color-mix(in srgb,var(--blue) 10%,var(--surface)); color:var(--blue-dark); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--blue) 24%,transparent); }
.descriptive-export-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }

.agenda-workspace { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(300px,.7fr); gap:16px; align-items:start; }
.agenda-calendar-panel, .agenda-editor, .agenda-list-panel { padding:18px; }
.agenda-month-toolbar { display:grid; grid-template-columns:44px 1fr 44px; align-items:center; gap:8px; margin-bottom:12px; }
.agenda-month-toolbar > div { display:grid; justify-items:center; gap:4px; }
.agenda-month-toolbar h2 { margin:0; font-size:var(--cp-fs-1_15rem,1.15rem); }
.agenda-month-toolbar input[type="month"] { border:0; background:transparent; color:var(--muted); font:inherit; font-size:var(--cp-fs-0_76rem,.76rem); padding:0; }
.agenda-weekdays, .agenda-month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px; }
.agenda-weekdays { margin-bottom:5px; }
.agenda-weekdays b { text-align:center; color:var(--muted); font-size:var(--cp-fs-0_68rem,.68rem); text-transform:uppercase; letter-spacing:.05em; }
.agenda-day { min-height:108px; padding:7px; border:1px solid var(--line); border-radius:10px; background:var(--surface); color:var(--ink); text-align:left; align-content:start; overflow:hidden; }
/* Dias sem atividade letiva: ligeiramente mais escuros para destacar visualmente as manchas dos dias úteis. */
.agenda-day.nonwork { background: color-mix(in srgb, var(--surface) 91%, #000 9%); }
.agenda-day.weekend { background: color-mix(in srgb, var(--surface) 94%, #000 6%); }
.agenda-day.holiday,
.agenda-day.interruption,
.agenda-day.non-teaching { background: color-mix(in srgb, var(--surface) 89%, #000 11%); }
.agenda-day.nonwork .agenda-day-number { color: color-mix(in srgb, var(--ink) 72%, var(--muted) 28%); }
:root[data-color-mode="dark"] .agenda-day.weekend { background: color-mix(in srgb, var(--surface) 88%, #000 12%); }
:root[data-color-mode="dark"] .agenda-day.holiday,
:root[data-color-mode="dark"] .agenda-day.interruption,
:root[data-color-mode="dark"] .agenda-day.non-teaching { background: color-mix(in srgb, var(--surface) 82%, #000 18%); }
.agenda-day:hover { border-color:var(--blue); }
.agenda-day.empty { visibility:hidden; }
.agenda-day.today { border-color:var(--blue); box-shadow:inset 0 0 0 2px var(--blue); background:color-mix(in srgb, var(--surface) 86%, var(--blue) 14%); }
.agenda-day-number { display:inline-grid; place-items:center; width:24px; height:24px; border-radius:7px; font-weight:800; font-size:var(--cp-fs-0_76rem,.76rem); }
.agenda-day.today .agenda-day-number { background:var(--blue); color:white; }
.agenda-day-items { display:grid; gap:3px; margin-top:4px; }
.agenda-mini-event { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:3px 5px; border-radius:5px; background:var(--panel-soft,#f2f5f8); color:var(--ink); font-size:var(--cp-fs-0_61rem,.61rem); line-height:1.15; }
.agenda-mini-event i { font-style:normal; font-weight:800; margin-right:4px; }
.agenda-mini-event.source-schedule { border-left:3px solid var(--blue); }
.agenda-mini-event.source-meeting { border-left:3px solid #8b7aa5; }
.agenda-mini-event.source-custom { border-left:3px solid #d59b3d; }
.agenda-mini-event.editable { cursor:pointer; }
.agenda-mini-event.editable:hover { outline:1px solid color-mix(in srgb, var(--blue) 48%, transparent); background:color-mix(in srgb, var(--panel-soft,#f2f5f8) 88%, var(--blue) 12%); }
.agenda-month-row.editable { cursor:pointer; }
.agenda-month-row.editable:hover { background:color-mix(in srgb, var(--surface) 92%, var(--blue) 8%); }
.agenda-editor { position:sticky; top:16px; display:grid; gap:11px; }
.agenda-editor header { display:grid; gap:2px; margin-bottom:2px; }
.agenda-editor header h2 { margin:0; }
.agenda-editor label { display:grid; gap:5px; color:var(--muted); font-weight:700; font-size:var(--cp-fs-0_74rem,.74rem); }
.agenda-editor input, .agenda-editor select, .agenda-editor textarea { width:100%; color:var(--ink); background:var(--surface); border:1px solid var(--line); border-radius:9px; padding:9px 10px; font:inherit; }
.agenda-editor-two { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.agenda-editor-actions { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin-top:3px; }
.agenda-list-panel { margin-top:16px; }
.agenda-list-panel > header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.agenda-list-panel > header h2 { margin:0; }
.agenda-month-list { display:grid; }
.agenda-month-row { display:grid; grid-template-columns:58px minmax(0,1fr) auto; gap:12px; align-items:center; padding:11px 4px; border-top:1px solid var(--line); }
.agenda-row-date { display:grid; justify-items:center; }
.agenda-row-date b { font-size:var(--cp-fs-1_2rem,1.2rem); }
.agenda-row-date span { color:var(--muted); text-transform:uppercase; font-size:var(--cp-fs-0_62rem,.62rem); }
.agenda-row-main { min-width:0; }
.agenda-row-main small { color:var(--muted); font-weight:750; }
.agenda-row-main h3 { margin:2px 0; font-size:var(--cp-fs-0_94rem,.94rem); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.agenda-row-main p { margin:0; color:var(--muted); font-size:var(--cp-fs-0_75rem,.75rem); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:980px){.agenda-workspace{grid-template-columns:1fr}.agenda-editor{position:static}.agenda-day{min-height:88px}.agenda-mini-event{font-size:var(--cp-fs-0_58rem,.58rem)}}
@media (max-width:620px){.agenda-calendar-panel,.agenda-editor,.agenda-list-panel{padding:12px}.agenda-weekdays,.agenda-month-grid{gap:2px}.agenda-day{min-height:68px;padding:4px;border-radius:7px}.agenda-day-number{width:20px;height:20px}.agenda-mini-event{padding:2px 3px}.agenda-mini-event i{display:none}.agenda-editor-two{grid-template-columns:1fr}.agenda-month-row{grid-template-columns:44px minmax(0,1fr) auto;gap:7px}.agenda-row-main p{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.descriptive-export-row{align-items:stretch}.descriptive-export-scope,.descriptive-export-actions{width:100%}.descriptive-export-toggle{flex:1}.descriptive-export-toggle button{flex:1}.descriptive-export-actions button{flex:1}}


/* CADPROF v0.16.8 — mancha horária editável */
.schedule-time.schedule-time-edit{appearance:none;-webkit-appearance:none;border:0;border-right:1px solid var(--line,#d9dee7);background:var(--surface-soft,#f4f6f9);color:inherit;font-family:inherit;font-size:var(--cp-fs-0_72rem,.72rem);font-weight:700;cursor:pointer;width:100%;height:100%;padding:.45rem .28rem;line-height:1.12;text-align:center}
.schedule-time.schedule-time-edit:hover,.schedule-time.schedule-time-edit:focus-visible{background:color-mix(in srgb,var(--primary,#526f93) 10%,var(--surface,#fff));outline:2px solid color-mix(in srgb,var(--primary,#526f93) 55%,transparent);outline-offset:-2px}
.schedule-grid-settings>header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.schedule-grid-settings>header>div{max-width:70ch}.schedule-grid-summary{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1rem}.schedule-grid-summary span{display:inline-flex;gap:.4rem;align-items:center;padding:.45rem .65rem;border:1px solid var(--line,#d9dee7);border-radius:999px;background:var(--surface-soft,#f5f7fa);font-size:.88rem}.schedule-grid-summary b{color:var(--primary,#526f93)}
.schedule-grid-editor{display:grid;gap:1rem}.schedule-grid-editor-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.schedule-grid-editor-toolbar p{margin:0;max-width:70ch}.schedule-grid-editor-list{display:grid;gap:.55rem}.schedule-grid-editor-row{display:grid;grid-template-columns:minmax(6.2rem,.75fr) minmax(9rem,1fr) minmax(9rem,1fr) auto;gap:.75rem;align-items:end;padding:.75rem;border:1px solid var(--line,#d9dee7);border-radius:14px;background:var(--surface-soft,#f7f8fa)}.schedule-grid-editor-row>b{align-self:center}.schedule-grid-editor-row label{display:grid;gap:.3rem}.schedule-grid-editor-row label span{font-size:.8rem;color:var(--text-soft,#667085);font-weight:700}.schedule-grid-editor-row input[type=time]{width:100%;min-height:42px;border:1px solid var(--line,#d9dee7);border-radius:10px;background:var(--surface,#fff);color:inherit;padding:.5rem .65rem;font:inherit}
@media(max-width:760px){.schedule-grid-settings>header,.schedule-grid-editor-toolbar{display:grid}.schedule-grid-editor-row{grid-template-columns:1fr 1fr}.schedule-grid-editor-row>b{grid-column:1/-1}.schedule-grid-editor-row .danger-button{grid-column:1/-1}.schedule-time.schedule-time-edit{font-size:var(--cp-fs-0_66rem,.66rem);padding:.3rem .16rem}}
@media print{.schedule-time.schedule-time-edit{border:0;background:transparent;outline:0;cursor:default}}

.schedule-grid,.schedule-grid>.schedule-row{grid-template-columns:82px repeat(5,minmax(108px,1fr));}
@media(max-width:900px){.schedule-grid,.schedule-grid>.schedule-row{grid-template-columns:78px repeat(5,minmax(98px,1fr));}}

/* CADPROF v0.16.9 — horário discreto + turmas sem duplicados */
.schedule-import-preview .schedule-import-class-link{min-width:190px;max-width:270px}
.schedule-import-preview td,.schedule-import-preview th{vertical-align:middle}


/* CADPROF v0.16.10 — horas limpas + cor de bloco + sala sincronizada */
.schedule-time.schedule-time-edit{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;white-space:normal}
.schedule-time.schedule-time-edit .schedule-time-start,.schedule-time.schedule-time-edit .schedule-time-end{display:block;font:inherit;font-weight:700;line-height:1.03;margin:0;padding:0}
.schedule-time.schedule-time-edit .schedule-time-end{margin-top:.08rem}

/* CADPROF v0.16.12 — Gestão: margens internas consistentes */
.schedule-grid-settings{
  padding:24px 28px 28px !important;
  gap:18px !important;
}
.schedule-grid-settings>header{
  margin:0 !important;
  padding:0 !important;
}
.schedule-grid-settings>header h2,
.schedule-grid-settings>header p{
  margin-left:0 !important;
  margin-right:0 !important;
}
.schedule-grid-settings>header h2{margin-top:0 !important;}
.schedule-grid-settings .schedule-grid-summary{
  margin:0 !important;
}
@media(max-width:620px){
  .schedule-grid-settings{padding:18px 20px 22px !important;}
}

/* CADPROF v0.16.12 — feedback explícito na importação/exportação .cprof */
.backup-import-feedback{display:flex;align-items:flex-start;gap:10px;margin:-4px 0 18px;padding:11px 13px;border-radius:10px;background:var(--surface-soft,#f4f5f8);color:var(--muted,#697285);font-size:var(--cp-fs-10px,10px);line-height:1.45}
.backup-import-feedback>span{flex:none;display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:var(--surface,#fff);font-weight:850}
.backup-import-feedback>p{margin:2px 0 0}
.backup-import-feedback.working{color:var(--blue,#526f93);background:var(--blue-soft,#eef4fa)}
.backup-import-feedback.success{color:var(--green,#23815e);background:#e9f8f2}
.backup-import-feedback.error{color:var(--red,#b64252);background:#fff0f2}
.backup-actions button:disabled{cursor:wait;opacity:.62}

/* CADPROF v0.16.12 — notificações da Agenda */
.agenda-notification-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:18px;padding:20px 22px}
.agenda-notification-panel>div:first-child{min-width:0;max-width:760px}
.agenda-notification-panel h2{margin:.15rem 0 .35rem}
.agenda-notification-panel p{margin:0;color:var(--muted,#697285)}
.agenda-notification-message{display:block;margin-top:.55rem;color:var(--primary,#526f93);font-weight:650}
.agenda-notification-actions{display:flex;align-items:center;gap:10px;flex:none}
.agenda-reminder-options{margin:0;padding:12px 14px;border:1px solid var(--line,#d9dee7);border-radius:12px;min-width:0}
.agenda-reminder-options legend{padding:0 5px;font-weight:800;color:var(--text,#1d2939)}
.agenda-reminder-options legend small{margin-left:8px;font-weight:550;color:var(--muted,#697285)}
.agenda-reminder-options>div{display:flex;flex-wrap:wrap;gap:8px 16px}
.agenda-reminder-options label{display:inline-flex!important;align-items:center;gap:7px;margin:0!important;font-size:.86rem;font-weight:650}
.agenda-reminder-options input[type=checkbox]{width:15px;height:15px;margin:0}
.meeting-time-fields{display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:12px}
@media(max-width:760px){.agenda-notification-panel{display:grid}.agenda-notification-actions{flex-wrap:wrap}.meeting-time-fields{grid-template-columns:1fr 1fr}.meeting-time-fields>.field:first-child{grid-column:1/-1}}

/* CADPROF v0.16.13 — Agenda: seleção pela mancha horária escolar + ajuste manual */
.agenda-school-interval{display:grid;gap:5px}
.agenda-school-interval select,.meeting-school-interval select{font-weight:700}
.agenda-time-help{display:block;color:var(--muted,#697285);font-size:var(--cp-fs-0_68rem,.68rem);font-weight:550;line-height:1.35;margin-top:1px}
.agenda-time-adjust{margin-top:-2px}
.meeting-time-fields{grid-template-columns:1fr 1fr;align-items:end}
.meeting-time-fields .meeting-school-interval{min-width:0}
@media(max-width:760px){.meeting-time-fields{grid-template-columns:1fr}.meeting-time-fields>.field:first-child{grid-column:auto}}


/* CADPROF v0.16.13 — Agenda Semana/Mês, detalhe por dia e prazos de projetos */
.agenda-view-bar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 18px;margin-bottom:14px}
.agenda-view-bar>div:first-child{display:grid;gap:2px}
.agenda-view-bar small{color:var(--muted)}
.agenda-view-switch{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:11px;background:var(--soft)}
.agenda-view-switch button{border:0;background:transparent;color:var(--muted);padding:7px 16px;border-radius:8px;font:inherit;font-weight:800;cursor:pointer}
.agenda-view-switch button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(15,23,42,.10)}
.agenda-week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}
.agenda-week-day{min-height:170px;border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:9px;overflow:hidden;cursor:pointer}
.agenda-week-day:hover{border-color:var(--blue)}
.agenda-week-day.today{border-color:var(--blue);box-shadow:inset 0 0 0 2px var(--blue);background:color-mix(in srgb,var(--surface) 88%,var(--blue) 12%)}
.agenda-week-day.nonwork{background:color-mix(in srgb,var(--surface) 92%,#000 8%)}
.agenda-week-day>header{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:1px 6px;margin-bottom:8px}
.agenda-week-day>header span{text-transform:uppercase;color:var(--muted);font-size:.66rem;font-weight:800}
.agenda-week-day>header b{font-size:1.18rem}
.agenda-week-day>header small{grid-column:1/-1;color:var(--muted);font-size:.65rem}
.agenda-week-events{display:grid;gap:6px}
.agenda-week-event{display:grid;gap:2px;width:100%;text-align:left;border:0;border-left:3px solid #d59b3d;border-radius:7px;background:var(--panel-soft,#f2f5f8);padding:7px;color:var(--ink);cursor:pointer;min-width:0}
.agenda-week-event.source-meeting{border-left-color:#8b7aa5}
.agenda-week-event.source-project,.agenda-week-event.source-project-step{border-left-color:#4f8a72}
.agenda-week-event small{color:var(--muted);font-size:.61rem;font-weight:750}
.agenda-week-event strong,.agenda-week-event span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.agenda-week-event strong{font-size:.72rem}
.agenda-week-event span{font-size:.62rem;color:var(--muted)}
.agenda-week-empty{margin:18px 0 0;color:var(--muted);font-size:.68rem;text-align:center}
.agenda-mini-event.source-project,.agenda-mini-event.source-project-step{border-left:3px solid #4f8a72}
.agenda-day-detail{display:grid;gap:14px;min-width:min(620px,85vw)}
.agenda-day-detail-list{display:grid;gap:9px}
.agenda-day-detail-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid var(--line);border-left:4px solid #d59b3d;border-radius:11px;padding:12px 14px;background:var(--surface)}
.agenda-day-detail-item.source-meeting{border-left-color:#8b7aa5}
.agenda-day-detail-item.source-project,.agenda-day-detail-item.source-project-step{border-left-color:#4f8a72}
.agenda-day-detail-item small{color:var(--muted);font-weight:800}
.agenda-day-detail-item h3{margin:2px 0;font-size:.96rem}
.agenda-day-detail-item p{margin:2px 0 0;color:var(--muted);font-size:.78rem}
.project-task-date{min-width:0;height:38px!important;font-size:.72rem!important}
@media(max-width:1100px){.agenda-week-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.agenda-week-day{min-height:130px}}
@media(max-width:680px){.agenda-view-bar{display:grid}.agenda-view-switch{width:100%}.agenda-view-switch button{flex:1}.agenda-week-grid{grid-template-columns:1fr}.agenda-week-day{min-height:auto}.agenda-day-detail{min-width:0}.agenda-day-detail-item{grid-template-columns:1fr}.project-task-row,.project-phase-row{grid-template-columns:28px minmax(0,1fr) 32px!important}.project-task-date{grid-column:2/3}.project-task-weight,.project-phase-flags{grid-column:2/3}}

/* CadProf 0.16.14 — Agenda semanal em linhas horizontais + ação explícita de adicionar. */
.agenda-day-head{display:flex;align-items:center;justify-content:space-between;gap:6px}
.agenda-day-add{display:inline-grid;place-items:center;flex:0 0 auto;width:25px;height:25px;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--blue);font-size:1rem;font-weight:850;line-height:1;cursor:pointer}
.agenda-day-add:hover,.agenda-day-add:focus-visible{border-color:var(--blue);background:color-mix(in srgb,var(--surface) 86%,var(--blue) 14%);outline:none}
.agenda-day-items{margin-left:1px;margin-right:1px}
.agenda-week-grid.agenda-week-list{display:grid;grid-template-columns:1fr;gap:8px}
.agenda-week-list .agenda-week-day{display:grid;grid-template-columns:minmax(128px,150px) minmax(0,1fr);gap:14px;min-height:88px;padding:12px 14px;overflow:visible;align-items:stretch}
.agenda-week-list .agenda-week-day>header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-content:start;align-items:start;gap:8px;margin:0;padding:2px 13px 2px 1px;border-right:1px solid var(--line)}
.agenda-week-list .agenda-week-date-label{display:grid;grid-template-columns:auto 1fr;gap:1px 8px;align-items:baseline;min-width:0}
.agenda-week-list .agenda-week-date-label span{grid-column:1/-1;text-transform:uppercase;color:var(--muted);font-size:.69rem;font-weight:850}
.agenda-week-list .agenda-week-date-label b{font-size:1.55rem;line-height:1}
.agenda-week-list .agenda-week-date-label small{align-self:end;color:var(--muted);font-size:.69rem;text-transform:lowercase}
.agenda-week-list .agenda-week-events{display:grid;gap:7px;padding:1px 3px 1px 1px;align-content:start;min-width:0}
.agenda-week-list .agenda-week-event{margin:0;width:100%;padding:8px 11px;border-radius:8px;overflow:visible}
.agenda-week-list .agenda-week-event strong,.agenda-week-list .agenda-week-event span{white-space:normal;overflow:visible;text-overflow:clip}
.agenda-week-list .agenda-week-event strong{font-size:.78rem;line-height:1.25}
.agenda-week-list .agenda-week-event span{font-size:.68rem;line-height:1.25}
.agenda-week-list .agenda-week-empty{margin:0;padding:12px 10px;color:var(--muted);font-size:.72rem;text-align:left;align-self:center}
@media(max-width:680px){
  .agenda-week-list .agenda-week-day{grid-template-columns:minmax(92px,108px) minmax(0,1fr);gap:8px;padding:9px}
  .agenda-week-list .agenda-week-day>header{padding-right:8px}
  .agenda-week-list .agenda-week-date-label{grid-template-columns:1fr}
  .agenda-week-list .agenda-week-date-label span{font-size:.62rem}
  .agenda-week-list .agenda-week-date-label b{font-size:1.28rem}
  .agenda-week-list .agenda-week-date-label small{font-size:.62rem}
}
@media(max-width:460px){
  .agenda-week-list .agenda-week-day{grid-template-columns:1fr}
  .agenda-week-list .agenda-week-day>header{grid-template-columns:1fr auto;border-right:0;border-bottom:1px solid var(--line);padding:0 1px 8px}
  .agenda-week-list .agenda-week-date-label{grid-template-columns:auto 1fr auto;align-items:baseline}
  .agenda-week-list .agenda-week-date-label span{grid-column:auto}
  .agenda-week-events{padding-top:1px}
}

/* CadProf 0.16.15 — Agenda semanal detalhada + editor modal + lembrete de 15 min. */
.agenda-workspace{grid-template-columns:minmax(0,1fr)}
.agenda-calendar-panel{width:100%;min-width:0}

/* O editor deixa de ocupar uma coluna fixa e passa a abrir sobre a Agenda. */
.agenda-editor{display:none;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(720px,calc(100vw - 36px));max-height:calc(100vh - 42px);overflow:auto;z-index:1250;gap:12px;padding:20px 22px;box-shadow:0 22px 70px rgba(15,23,42,.28),0 0 0 100vmax rgba(20,30,45,.43)}
.agenda-editor.open{display:grid}
.agenda-editor header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;align-items:start;margin-bottom:3px}
.agenda-editor header h2{grid-column:1;margin:0}
.agenda-editor header small{grid-column:1;color:var(--muted)}
.agenda-editor-close{grid-column:2;grid-row:1/3;align-self:start;width:34px;height:34px;min-width:34px;font-size:1.15rem}

/* Semana = agenda de leitura. Dias úteis têm mais espaço; fim de semana é mais compacto. */
.agenda-week-grid.agenda-week-list{gap:10px}
.agenda-week-list .agenda-week-day{grid-template-columns:minmax(142px,168px) minmax(0,1fr);min-height:112px;padding:14px 16px;gap:16px;background:var(--surface)}
.agenda-week-list .agenda-week-day.weekend{min-height:68px;padding-top:9px;padding-bottom:9px;background:color-mix(in srgb,var(--surface) 94%,#000 6%)}
.agenda-week-list .agenda-week-day.nonwork:not(.weekend){background:color-mix(in srgb,var(--surface) 96%,#000 4%)}
.agenda-week-list .agenda-week-day>header{padding:3px 15px 3px 1px}
.agenda-week-list .agenda-week-date-label span{font-size:.72rem;letter-spacing:.035em}
.agenda-week-list .agenda-week-date-label b{font-size:1.7rem}
.agenda-week-list .agenda-week-date-label small{font-size:.72rem}
.agenda-week-list .agenda-week-events{gap:8px;padding:0 3px 0 1px}
.agenda-week-list .agenda-week-event{display:grid;gap:4px;padding:10px 13px;background:var(--panel-soft,#f4f6f8);border-left-width:4px;border-radius:9px}
.agenda-week-event-meta{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:.7rem}
.agenda-week-event-meta>b{color:var(--ink);font-size:.7rem;text-transform:uppercase;letter-spacing:.025em}
.agenda-week-event-meta>strong{color:var(--blue);font-size:.75rem}
.agenda-week-list .agenda-week-event h3{margin:0;color:var(--ink);font-size:.86rem;line-height:1.28;font-weight:800;white-space:normal}
.agenda-week-list .agenda-week-event p{margin:0;white-space:normal;line-height:1.35}
.agenda-week-event-context{color:var(--muted);font-size:.72rem}
.agenda-week-event-context b{color:color-mix(in srgb,var(--ink) 82%,var(--muted) 18%)}
.agenda-week-event-notes{padding-top:3px;border-top:1px dashed color-mix(in srgb,var(--line) 78%,transparent);color:var(--muted);font-size:.72rem}
.agenda-week-event-notes b{color:var(--ink)}
.agenda-week-list .agenda-week-empty{padding:17px 12px}
.agenda-week-list .agenda-week-day.weekend .agenda-week-empty{padding-top:8px;padding-bottom:8px}

/* O lembrete de 15 minutos é a escolha recomendada; os restantes permanecem opcionais. */
.agenda-reminder-options label.recommended{padding:6px 9px;border:1px solid color-mix(in srgb,var(--blue) 38%,var(--line) 62%);border-radius:8px;background:color-mix(in srgb,var(--surface) 88%,var(--blue) 12%)}
.agenda-reminder-options label.recommended span{color:var(--ink);font-weight:800}
.agenda-reminder-options label.recommended em{margin-left:6px;color:var(--blue);font-size:.68rem;font-style:normal;font-weight:750}

@media(max-width:760px){
  .agenda-editor{width:calc(100vw - 20px);max-height:calc(100vh - 20px);padding:16px}
  .agenda-week-list .agenda-week-day{grid-template-columns:minmax(104px,120px) minmax(0,1fr);gap:10px;padding:10px}
  .agenda-week-list .agenda-week-day>header{padding-right:9px}
  .agenda-week-list .agenda-week-date-label b{font-size:1.4rem}
}
@media(max-width:500px){
  .agenda-week-list .agenda-week-day{grid-template-columns:1fr;min-height:auto}
  .agenda-week-list .agenda-week-day>header{border-right:0;border-bottom:1px solid var(--line);padding:0 0 8px}
  .agenda-week-list .agenda-week-day.weekend{min-height:auto}
}

/* CadProf 0.16.16 — Agenda avançada: tipologias, pesquisa, estados, copiar/colar e recalendarização. */
.agenda-view-tools{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:min(640px,58vw)}
.agenda-search-box{position:relative;display:grid;grid-template-columns:auto minmax(220px,360px) auto;align-items:center;gap:8px;margin:0!important}
.agenda-search-box>span{font-size:.72rem;font-weight:800;color:var(--muted)}
.agenda-search-box input{min-width:0;padding-right:34px}
.agenda-search-box button{position:absolute;right:7px;width:26px;height:26px;padding:0;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:1rem;cursor:pointer}
.agenda-search-box button:hover{background:var(--soft);color:var(--ink)}
.agenda-search-results{display:grid;gap:12px;margin-bottom:14px;padding:16px 18px}
.agenda-search-results>header{display:flex;align-items:center;justify-content:space-between;gap:12px}
.agenda-search-results>header>div{display:grid;gap:2px}
.agenda-search-results>header small{color:var(--muted)}
.agenda-search-list{display:grid;gap:6px;max-height:330px;overflow:auto;padding-right:3px}
.agenda-search-result{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;align-items:start;text-align:left;border:1px solid var(--line);border-left:4px solid #b58a45;border-radius:9px;background:var(--surface);padding:9px 11px;color:var(--ink);cursor:pointer}
.agenda-search-result:hover{border-color:color-mix(in srgb,var(--blue) 52%,var(--line));background:color-mix(in srgb,var(--surface) 94%,var(--blue) 6%)}
.agenda-search-result time{font-size:.72rem;font-weight:800;color:var(--blue)}
.agenda-search-result>div{display:grid;gap:2px;min-width:0}
.agenda-search-result small,.agenda-search-result span{font-size:.68rem;color:var(--muted)}
.agenda-search-result strong{font-size:.8rem;line-height:1.2}

.agenda-day-quick-actions{display:inline-flex;align-items:center;gap:4px}
.agenda-day-paste{font-size:.82rem;color:color-mix(in srgb,var(--blue) 74%,var(--ink) 26%)}
.agenda-day.drop-target,.agenda-week-day.drop-target{border-color:var(--blue)!important;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--blue) 62%,transparent),0 0 0 3px color-mix(in srgb,var(--blue) 12%,transparent)!important;background:color-mix(in srgb,var(--surface) 88%,var(--blue) 12%)!important}
.agenda-week-event[draggable="true"],.agenda-mini-event[draggable="true"]{cursor:grab}
.agenda-week-event[draggable="true"]:active,.agenda-mini-event[draggable="true"]:active{cursor:grabbing}

/* Variações discretas por tipologia. */
.agenda-week-event.type-reuniao,.agenda-day-detail-item.type-reuniao,.agenda-search-result.type-reuniao{border-left-color:#8b7aa5;background:color-mix(in srgb,var(--surface) 94%,#8b7aa5 6%)}
.agenda-week-event.type-visita,.agenda-day-detail-item.type-visita,.agenda-search-result.type-visita{border-left-color:#5f948d;background:color-mix(in srgb,var(--surface) 94%,#5f948d 6%)}
.agenda-week-event.type-aula-deslocada,.agenda-day-detail-item.type-aula-deslocada,.agenda-search-result.type-aula-deslocada{border-left-color:#6f88a6;background:color-mix(in srgb,var(--surface) 94%,#6f88a6 6%)}
.agenda-week-event.type-atividade-substitutiva,.agenda-day-detail-item.type-atividade-substitutiva,.agenda-search-result.type-atividade-substitutiva{border-left-color:#7b8a95;background:color-mix(in srgb,var(--surface) 95%,#7b8a95 5%)}
.agenda-week-event.type-atividade,.agenda-day-detail-item.type-atividade,.agenda-search-result.type-atividade{border-left-color:#c89648;background:color-mix(in srgb,var(--surface) 94%,#c89648 6%)}
.agenda-week-event.type-formacao,.agenda-day-detail-item.type-formacao,.agenda-search-result.type-formacao{border-left-color:#4f8f83;background:color-mix(in srgb,var(--surface) 94%,#4f8f83 6%)}
.agenda-week-event.type-acd,.agenda-day-detail-item.type-acd,.agenda-search-result.type-acd{border-left-color:#6f78a8;background:color-mix(in srgb,var(--surface) 94%,#6f78a8 6%)}
.agenda-week-event.type-evento,.agenda-day-detail-item.type-evento,.agenda-search-result.type-evento{border-left-color:#a87984;background:color-mix(in srgb,var(--surface) 94%,#a87984 6%)}
.agenda-week-event.type-palestra,.agenda-day-detail-item.type-palestra,.agenda-search-result.type-palestra{border-left-color:#748f62;background:color-mix(in srgb,var(--surface) 94%,#748f62 6%)}
.agenda-week-event.type-projeto,.agenda-day-detail-item.type-projeto,.agenda-search-result.type-projeto{border-left-color:#4f8a72;background:color-mix(in srgb,var(--surface) 94%,#4f8a72 6%)}
.agenda-week-event.type-outra,.agenda-day-detail-item.type-outra,.agenda-search-result.type-outra{border-left-color:#b58a45;background:color-mix(in srgb,var(--surface) 95%,#b58a45 5%)}
.agenda-mini-event.type-reuniao{border-left-color:#8b7aa5;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#8b7aa5 10%)}
.agenda-mini-event.type-visita{border-left-color:#5f948d;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#5f948d 10%)}
.agenda-mini-event.type-aula-deslocada{border-left-color:#6f88a6;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#6f88a6 10%)}
.agenda-mini-event.type-atividade-substitutiva{border-left-color:#7b8a95;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 91%,#7b8a95 9%)}
.agenda-mini-event.type-atividade{border-left-color:#c89648;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#c89648 10%)}
.agenda-mini-event.type-formacao{border-left-color:#4f8f83;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#4f8f83 10%)}
.agenda-mini-event.type-acd{border-left-color:#6f78a8;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#6f78a8 10%)}
.agenda-mini-event.type-evento{border-left-color:#a87984;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#a87984 10%)}
.agenda-mini-event.type-palestra{border-left-color:#748f62;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#748f62 10%)}
.agenda-mini-event.type-projeto{border-left-color:#4f8a72;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 90%,#4f8a72 10%)}
.agenda-mini-event.type-outra{border-left-color:#b58a45;background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 91%,#b58a45 9%)}

/* Contexto temporal: o passado recua sem desaparecer. */
.agenda-week-event.is-past,.agenda-mini-event.is-past,.agenda-day-detail-item.is-past,.agenda-search-result.is-past{opacity:.67;filter:saturate(.58)}
.agenda-week-event.is-cancelled,.agenda-mini-event.is-cancelled,.agenda-day-detail-item.is-cancelled,.agenda-search-result.is-cancelled{opacity:.5;filter:saturate(.35)}
.agenda-week-event.is-cancelled h3,.agenda-week-event.is-cancelled strong,.agenda-day-detail-item.is-cancelled h3,.agenda-search-result.is-cancelled strong{text-decoration:line-through;text-decoration-thickness:1px}
.agenda-status-badge{font-style:normal;font-size:.62rem;font-weight:800;letter-spacing:.02em;color:var(--muted);padding:2px 6px;border:1px solid color-mix(in srgb,var(--line) 82%,transparent);border-radius:999px;background:color-mix(in srgb,var(--surface) 86%,transparent)}

/* Fantasma de uma marcação recalendarizada. */
.agenda-week-event.is-ghost,.agenda-mini-event.is-ghost,.agenda-day-detail-item.is-ghost{opacity:.46;filter:saturate(.25);border-left-style:dashed!important;background:transparent!important}
.agenda-week-event.is-ghost{border:1px dashed color-mix(in srgb,var(--line) 80%,var(--muted) 20%);border-left-width:4px}
.agenda-week-event.is-ghost h3,.agenda-mini-event.is-ghost{font-style:italic}

.agenda-editor-clipboard{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px dashed color-mix(in srgb,var(--blue) 40%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--surface) 94%,var(--blue) 6%)}
.agenda-editor-clipboard span{font-size:.72rem;color:var(--muted)}
.agenda-reschedule-note{display:grid;gap:3px;padding:10px 12px;border-left:4px solid #7389a4;border-radius:8px;background:color-mix(in srgb,var(--surface) 93%,#7389a4 7%)}
.agenda-reschedule-note b{font-size:.75rem}
.agenda-reschedule-note span{font-size:.7rem;color:var(--muted)}
.agenda-status-select{display:grid;gap:5px}
.agenda-status-select small{color:var(--muted);font-size:.68rem;line-height:1.35}
.agenda-day-detail-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}

.agenda-stats-panel{display:grid;gap:14px;margin-top:18px;padding:18px 20px}
.agenda-stats-panel>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.agenda-stats-panel h2{margin:.12rem 0 .25rem}
.agenda-stats-panel small{color:var(--muted)}
.agenda-stats-total{font-size:.72rem;font-weight:800;color:var(--muted);white-space:nowrap}
.agenda-stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.agenda-stat{display:grid;gap:2px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.agenda-stat strong{font-size:1.35rem;line-height:1;color:var(--ink)}
.agenda-stat span{font-size:.7rem;font-weight:750;color:var(--muted)}
.agenda-stat-scheduled{border-left:4px solid #6684a7}
.agenda-stat-done{border-left:4px solid #789071}
.agenda-stat-cancelled{border-left:4px solid #9b7b80}
.agenda-stat-rescheduled{border-left:4px solid #8b83a3}

@media(max-width:980px){
  .agenda-view-tools{min-width:0;width:100%;justify-content:stretch;flex-wrap:wrap}
  .agenda-search-box{grid-template-columns:auto minmax(0,1fr) auto;flex:1 1 340px}
  .agenda-view-switch{flex:0 0 auto}
  .agenda-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .agenda-view-tools{display:grid}
  .agenda-search-box{grid-template-columns:1fr}
  .agenda-search-box>span{display:none}
  .agenda-search-result{grid-template-columns:78px minmax(0,1fr)}
  .agenda-stats-grid{grid-template-columns:1fr 1fr}
  .agenda-stats-panel>header{display:grid}
  .agenda-day-detail-actions{justify-content:flex-start}
}

/* CadProf 0.16.17 — partilha unidirecional da Agenda com Google Calendar. */
.agenda-google-calendar-panel{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:18px;padding:20px 22px;border-left:4px solid color-mix(in srgb,var(--blue,#526f93) 62%,#6f9a72 38%)}
.agenda-google-calendar-panel>div:first-child{min-width:0;max-width:820px}
.agenda-google-calendar-panel h2{margin:.15rem 0 .35rem}
.agenda-google-calendar-panel p{margin:0;color:var(--muted,#697285);line-height:1.45}
.agenda-google-account,.agenda-google-message{display:block;margin-top:.5rem;color:var(--muted,#697285);font-size:.7rem}
.agenda-google-message{color:var(--primary,#526f93);font-weight:700}
.agenda-google-actions{display:flex;align-items:center;gap:9px;flex:none;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:760px){.agenda-google-calendar-panel{display:grid}.agenda-google-actions{justify-content:flex-start}}


/* CadProf 0.16.18 — regime semestral nas relações turma/disciplina. */
.semester-inactive {
  opacity: .52;
  filter: saturate(.58);
  transition: opacity .16s ease, filter .16s ease;
}
.semester-inactive:hover,
.semester-inactive:focus-within {
  opacity: .76;
  filter: saturate(.76);
}
.class-tab-wrap.semester-inactive.active,
.project-class-tabs button.semester-inactive.active,
.descriptive-class-tabs button.semester-inactive.active,
.assessment-class-tabs button.semester-inactive.active,
.meeting-filter-buttons button.semester-inactive.active {
  opacity: .72;
  filter: saturate(.72);
}
.class-selection-area .class-tab-wrap > button {
  min-height: 52px;
}
.class-selection-area .class-tab-wrap > button .class-tab-label {
  min-width: 0;
  flex: 1 1 auto;
  text-align: left;
}
.class-selection-area .class-tab-wrap > button .class-tab-label strong,
.class-selection-area .class-tab-wrap > button .class-tab-label small {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.class-selection-area .class-tab-wrap > button .class-tab-label strong {
  color: var(--ink);
  font-size: var(--cp-fs-11px, 11px);
  line-height: 1.15;
}
.class-selection-area .class-tab-wrap > button .class-tab-label small {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 650;
}
.class-selection-area .class-tab-wrap > button .class-tab-count {
  flex: 0 0 auto;
  margin-left: 0;
  font-size: var(--cp-fs-9px, 9px);
}
.class-semester-badge {
  flex: 0 0 auto;
  padding: 2px 5px;
  border: 1px solid color-mix(in srgb, var(--blue) 20%, var(--line));
  border-radius: 999px;
  background: color-mix(in srgb, var(--blue) 6%, var(--surface));
  color: var(--blue-dark);
  font-size: var(--cp-fs-8px, 8px);
  font-style: normal;
  font-weight: 850;
  letter-spacing: .02em;
}
.class-semester-badge.inactive {
  border-color: var(--line);
  background: var(--soft);
  color: var(--muted);
}
.rubric-association-chip.semester-inactive {
  opacity: .58;
}
@media (max-width: 760px) {
  .class-selection-area .class-tab-wrap > button { min-height: 48px; }
  .class-semester-badge { padding-inline: 4px; }
}


/* CadProf 0.16.18a — hotfix legibilidade dos seletores Turmas/Fichas dos Alunos.
   Não comprimir todas as relações turma/disciplina numa única linha em desktop. */
@media (min-width: 1180px) {
  .class-selection-area .class-tabs {
    flex-wrap: wrap;
    overflow-x: visible;
    gap: 8px;
    padding-bottom: 8px;
  }
  .class-selection-area .class-tab-wrap {
    flex: 0 0 172px;
    min-width: 172px;
    max-width: 172px;
  }
  .class-selection-area .class-tab-wrap > button {
    min-width: 0;
    min-height: 56px;
    padding: 9px 8px 9px 31px;
    gap: 7px;
  }
  .class-selection-area .class-tab-wrap > button .class-tab-label {
    min-width: 70px;
  }
  .class-selection-area .class-tab-wrap > button .class-tab-label strong {
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    font-size: var(--cp-fs-12px, 12px);
    font-weight: 850;
  }
  .class-selection-area .class-tab-wrap > button .class-tab-label small {
    font-size: var(--cp-fs-10px, 10px);
    line-height: 1.2;
  }
  .class-selection-area .class-tab-count {
    min-width: 12px;
    text-align: right;
  }
}

@media (min-width: 900px) and (max-width: 1179px) {
  .class-selection-area .class-tabs {
    overflow-x: auto;
    flex-wrap: nowrap;
    padding-bottom: 10px;
  }
  .class-selection-area .class-tab-wrap {
    flex: 0 0 164px;
    min-width: 164px;
    max-width: 164px;
  }
  .class-selection-area .class-tab-wrap > button .class-tab-label strong {
    overflow: visible;
    text-overflow: clip;
    white-space: nowrap;
    font-size: var(--cp-fs-12px, 12px);
  }
}

/* CadProf 0.16.18d — importação de cópias .cprof com frase-passe histórica */
.backup-passphrase-form{display:flex;flex-direction:column;gap:18px;padding-top:22px;padding-bottom:0}
.backup-passphrase-form>label{display:flex;flex-direction:column;gap:8px;font-weight:700}
.backup-passphrase-form input{width:100%;min-height:46px;border:1px solid var(--border,#d9e0ea);border-radius:10px;background:var(--surface,#fff);color:var(--ink,#182238);padding:10px 12px;font:inherit;font-size:16px}
.backup-passphrase-form input:focus{outline:2px solid color-mix(in srgb,var(--blue,#526f93) 35%,transparent);outline-offset:1px;border-color:var(--blue,#526f93)}
.backup-passphrase-note{display:flex;flex-direction:column;gap:5px;padding:11px 13px;border-radius:10px;background:var(--surface-soft,#f4f5f8);color:var(--muted,#697285);font-size:.9rem;line-height:1.45}
.backup-passphrase-note b{color:var(--ink,#182238);overflow-wrap:anywhere}
.backup-passphrase-form>.modal-footer{margin:2px -30px 0;padding:20px 30px 24px}

/* CadProf 0.16.20a — contraste visual transversal, mantendo a paleta discreta. */
.icon-button {
  display: inline-grid;
  place-items: center;
  padding: 0;
  line-height: 1;
  background: color-mix(in srgb, var(--surface,#fff) 90%, var(--blue,#526f93) 10%);
  border-color: color-mix(in srgb, var(--line,#d9e0ea) 78%, var(--blue,#526f93) 22%);
}
.icon-button:hover,
.icon-button:focus-visible {
  background: color-mix(in srgb, var(--surface,#fff) 82%, var(--blue,#526f93) 18%);
  border-color: color-mix(in srgb, var(--line,#d9e0ea) 55%, var(--blue,#526f93) 45%);
  color: var(--blue-dark,#385776);
  outline: none;
}
.modal-header .icon-button {
  background: color-mix(in srgb, var(--surface,#fff) 91%, #8793a6 9%);
}
.agenda-month-toolbar > .icon-button:first-child { transform: translateX(-1px); }
.agenda-month-toolbar > .icon-button:last-child { transform: translateX(1px); }

/* A cor passa a identificar a turma em todas as áreas; o fundo é apenas uma velatura. */
.class-tabs button,
.project-class-tabs button,
.descriptive-class-tabs button,
.assessment-class-tabs button,
.rubric-association-chip {
  transition: background .16s ease, border-color .16s ease, box-shadow .16s ease, opacity .16s ease, filter .16s ease;
}
.class-tabs button:hover,
.project-class-tabs button:hover,
.descriptive-class-tabs button:hover,
.assessment-class-tabs button:hover,
.rubric-association-chip:hover {
  border-color: var(--class-color,var(--blue));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--class-color,var(--blue)) 10%, transparent);
}
.class-tabs button.active,
.project-class-tabs button.active,
.descriptive-class-tabs button.active,
.assessment-class-tabs button.active,
.rubric-association-chip.active {
  border-color: var(--class-color,var(--blue));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--class-color,var(--blue)) 15%, transparent), var(--shadow-soft,0 6px 18px rgba(20,35,60,.06));
}

/* Rubricas: cada item herda, em versão muito leve, a família cromática do critério geral. */
.rubric-category.saber .criterion-list details,
.selected-group.saber details,
.picker-group.saber label { background: rgba(239,232,168,.105); }
.rubric-category.informacao .criterion-list details,
.selected-group.informacao details,
.picker-group.informacao label { background: rgba(176,219,205,.105); }
.rubric-category.pensamento .criterion-list details,
.selected-group.pensamento details,
.picker-group.pensamento label { background: rgba(141,174,211,.10); }
.rubric-category.desenvolvimento .criterion-list details,
.selected-group.desenvolvimento details,
.picker-group.desenvolvimento label { background: rgba(230,173,184,.10); }
.rubric-category.sensibilidade .criterion-list details,
.selected-group.sensibilidade details,
.picker-group.sensibilidade label { background: rgba(188,169,208,.10); }
.rubric-category.saude .criterion-list details,
.selected-group.saude details,
.picker-group.saude label { background: rgba(191,209,151,.105); }
.rubric-category .criterion-list details + details { border-top-color: color-mix(in srgb,var(--line) 76%,transparent); }

/* Agenda: a tipologia deixa de ser apenas um filete e passa a velar suavemente todo o cartão. */
.agenda-week-event.type-reuniao,.agenda-day-detail-item.type-reuniao,.agenda-search-result.type-reuniao{background:color-mix(in srgb,var(--surface) 87%,#8b7aa5 13%)}
.agenda-week-event.type-visita,.agenda-day-detail-item.type-visita,.agenda-search-result.type-visita{background:color-mix(in srgb,var(--surface) 87%,#5f948d 13%)}
.agenda-week-event.type-aula-deslocada,.agenda-day-detail-item.type-aula-deslocada,.agenda-search-result.type-aula-deslocada{background:color-mix(in srgb,var(--surface) 87%,#6f88a6 13%)}
.agenda-week-event.type-atividade-substitutiva,.agenda-day-detail-item.type-atividade-substitutiva,.agenda-search-result.type-atividade-substitutiva{background:color-mix(in srgb,var(--surface) 89%,#7b8a95 11%)}
.agenda-week-event.type-atividade,.agenda-day-detail-item.type-atividade,.agenda-search-result.type-atividade{background:color-mix(in srgb,var(--surface) 87%,#c89648 13%)}
.agenda-week-event.type-formacao,.agenda-day-detail-item.type-formacao,.agenda-search-result.type-formacao{background:color-mix(in srgb,var(--surface) 87%,#4f8f83 13%)}
.agenda-week-event.type-acd,.agenda-day-detail-item.type-acd,.agenda-search-result.type-acd{background:color-mix(in srgb,var(--surface) 87%,#6f78a8 13%)}
.agenda-week-event.type-evento,.agenda-day-detail-item.type-evento,.agenda-search-result.type-evento{background:color-mix(in srgb,var(--surface) 87%,#a87984 13%)}
.agenda-week-event.type-palestra,.agenda-day-detail-item.type-palestra,.agenda-search-result.type-palestra{background:color-mix(in srgb,var(--surface) 87%,#748f62 13%)}
.agenda-week-event.type-projeto,.agenda-day-detail-item.type-projeto,.agenda-search-result.type-projeto{background:color-mix(in srgb,var(--surface) 87%,#4f8a72 13%)}
.agenda-week-event.type-outra,.agenda-day-detail-item.type-outra,.agenda-search-result.type-outra{background:color-mix(in srgb,var(--surface) 88%,#b58a45 12%)}
.agenda-mini-event.type-reuniao{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#8b7aa5 16%)}
.agenda-mini-event.type-visita{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#5f948d 16%)}
.agenda-mini-event.type-aula-deslocada{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#6f88a6 16%)}
.agenda-mini-event.type-atividade-substitutiva{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 86%,#7b8a95 14%)}
.agenda-mini-event.type-atividade{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#c89648 16%)}
.agenda-mini-event.type-formacao{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#4f8f83 16%)}
.agenda-mini-event.type-acd{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#6f78a8 16%)}
.agenda-mini-event.type-evento{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#a87984 16%)}
.agenda-mini-event.type-palestra{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#748f62 16%)}
.agenda-mini-event.type-projeto{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 84%,#4f8a72 16%)}
.agenda-mini-event.type-outra{background:color-mix(in srgb,var(--panel-soft,#f2f5f8) 85%,#b58a45 15%)}

/* ========================================================================== */
/* CADPROF — REUNIÕES 2.0 · v0.16.20a              */
/* Sem alteração de schema. Página leve + caderno amplo por reunião.          */
/* ========================================================================== */
.meeting-browser-top{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  margin-bottom:13px;padding-bottom:13px;border-bottom:1px solid var(--line)
}
.meeting-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.meeting-tabs button{
  display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);
  border-radius:11px;padding:8px 12px;font:inherit;font-weight:800;cursor:pointer
}
.meeting-tabs button span{display:grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--soft);font-size:.68rem;color:var(--muted)}
.meeting-tabs button.active{border-color:color-mix(in srgb,var(--blue) 55%,var(--line));background:var(--blue-soft);color:var(--blue-dark)}
.meeting-tabs button.active span{background:var(--surface);color:var(--blue-dark)}
.meeting-global-search{width:min(390px,100%);border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink);padding:9px 12px;font:inherit}
.meeting-search-help,.meeting-result-summary{margin:8px 2px 14px;color:var(--muted);font-size:.78rem}
.meeting-load-more{display:block;margin:16px auto 2px}
.meeting-card{position:relative;overflow:visible}
.meeting-card.is-next{
  border-color:color-mix(in srgb,var(--blue) 40%,var(--line));
  background:linear-gradient(110deg,color-mix(in srgb,var(--blue-soft) 46%,var(--surface)) 0%,var(--surface) 52%);
  box-shadow:0 10px 28px color-mix(in srgb,var(--blue) 10%,transparent)
}
.meeting-next-tab{
  position:absolute;right:-9px;top:18px;z-index:2;writing-mode:vertical-rl;transform:rotate(180deg);
  border-radius:7px 7px 0 0;padding:9px 5px 8px;background:color-mix(in srgb,var(--blue) 82%,#fff);color:#fff;
  font-size:.56rem;font-weight:900;letter-spacing:.08em;box-shadow:0 5px 14px rgba(20,38,70,.14)
}
.meeting-time-location{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 5px}
.meeting-time-location strong{
  display:inline-flex;align-items:center;gap:6px;border-radius:9px;padding:6px 9px;
  background:color-mix(in srgb,var(--blue-soft) 78%,var(--surface));color:var(--blue-dark);font-size:.78rem;line-height:1
}
.meeting-time-location strong::before{content:"";width:12px;height:12px;flex:none;border:1.8px solid currentColor;border-radius:50%;box-sizing:border-box;background:linear-gradient(currentColor,currentColor) 50% 2px/1.5px 4px no-repeat,linear-gradient(currentColor,currentColor) 7px 50%/3px 1.5px no-repeat}
.meeting-time-location span{color:var(--muted);font-size:.74rem;font-weight:700}

.meeting-workspace-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:18px}
.meeting-workspace-heading h1{margin:5px 0 5px;max-width:980px;font-size:clamp(1.8rem,3vw,3rem);line-height:1.06}
.meeting-workspace-heading p:not(.eyebrow){margin:0;color:var(--muted);max-width:880px}
.meeting-back{margin-bottom:15px}
.meeting-workspace-heading-actions{display:flex;align-items:center;gap:8px;flex:none;padding-bottom:3px}
.meeting-workspace-meta{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:center;margin-bottom:13px;padding:16px 18px}
.meeting-workspace-meta>div{display:flex;align-items:center;gap:12px;min-width:0}
.meeting-workspace-meta>div:first-child{padding-right:18px;border-right:1px solid var(--line)}
.meeting-workspace-meta b{font-size:.76rem}
.meeting-workspace-meta strong{font-size:1rem;color:var(--blue-dark)}
.meeting-workspace-meta span{color:var(--muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meeting-workspace-tools{display:flex;align-items:flex-end;justify-content:flex-end;gap:9px;flex:none}
.meeting-workspace-search-compact{display:flex;align-items:center;gap:7px;min-width:0}
.meeting-workspace-search-compact input{width:260px;max-width:34vw;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface);color:var(--ink);font:inherit;font-size:.76rem}
.meeting-workspace-search-compact span{color:var(--muted);font-size:.64rem;font-weight:750;white-space:nowrap}
.meeting-workspace-inline-no-results{margin:-2px 0 10px;color:var(--muted);font-size:.72rem;text-align:right}
.meeting-workspace-initial{margin-bottom:18px;padding:15px 18px}
.meeting-workspace-initial h3{margin:0 0 6px;font-size:.78rem;color:var(--muted)}
.meeting-workspace-initial p{margin:0;white-space:pre-wrap;line-height:1.55}
.meeting-workspace-section{margin:0 0 18px}
.meeting-workspace-section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin:0 0 10px}
.meeting-workspace-section-heading .eyebrow{margin:0 0 4px}
.meeting-workspace-section-heading h2{margin:0 0 4px;font-size:1rem}
.meeting-workspace-section-heading p:not(.eyebrow){margin:0;color:var(--muted);font-size:.78rem}
.meeting-notebook-blocks{display:grid;gap:12px}
.meeting-note-block{padding:16px 18px;transition:opacity .18s ease,filter .18s ease}
.meeting-note-block-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin-bottom:9px}
.meeting-note-block-head input{border:0;border-bottom:1px solid transparent;background:transparent;color:var(--ink);font:inherit;font-size:1rem;font-weight:800;padding:4px 0;min-width:0}
.meeting-note-block-head input:focus{outline:none;border-bottom-color:var(--blue)}
.meeting-note-block textarea{width:100%;min-height:190px;resize:vertical;border:1px solid var(--line);border-radius:11px;padding:13px;background:var(--surface);color:var(--ink);font:inherit;line-height:1.55}
.meeting-empty-workspace{padding:24px;text-align:center;color:var(--muted)}
.meeting-search-muted{display:none!important}

.meeting-active-stickers{display:flex;flex-wrap:wrap;gap:6px;margin:3px 0 9px}
.meeting-sticker-picker{margin-top:9px;position:relative;width:max-content;max-width:100%}
.meeting-sticker-picker summary{list-style:none;display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:9px;padding:6px 9px;background:var(--surface);font-size:.7rem;font-weight:800;cursor:pointer}
.meeting-sticker-picker summary::-webkit-details-marker{display:none}
.meeting-sticker-library{position:absolute;left:0;bottom:calc(100% + 7px);z-index:8;display:grid;grid-template-columns:repeat(2,minmax(128px,1fr));gap:6px;width:296px;max-width:calc(100vw - 48px);padding:9px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:0 14px 32px rgba(30,40,60,.16)}
.meeting-sticker{--sticker:#526277;--sticker-bg:rgba(82,98,119,.09);display:inline-flex;align-items:center;gap:7px;border:1px solid color-mix(in srgb,var(--sticker) 24%,var(--line));border-radius:8px;padding:6px 9px;background:var(--sticker-bg);color:color-mix(in srgb,var(--sticker) 82%,var(--ink));font:inherit;font-size:.66rem;font-weight:850;cursor:pointer;text-align:left}
.meeting-sticker.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sticker) 32%,transparent)}
.meeting-sticker-symbol{position:relative;display:inline-grid;place-items:center;width:15px;height:15px;flex:none;color:var(--sticker)}
.meeting-sticker-symbol::before,.meeting-sticker-symbol::after{content:"";position:absolute;box-sizing:border-box}
.sticker-important{--sticker:#9a7219;--sticker-bg:rgba(210,167,64,.12)}
.sticker-important .meeting-sticker-symbol::before{width:14px;height:14px;background:currentColor;clip-path:polygon(50% 0,61% 34%,97% 34%,68% 55%,79% 91%,50% 70%,21% 91%,32% 55%,3% 34%,39% 34%)}
.sticker-follow{--sticker:#69579a;--sticker-bg:rgba(105,87,154,.10)}
.sticker-follow .meeting-sticker-symbol::before{width:10px;height:14px;border:1.7px solid currentColor;border-radius:2px 2px 1px 1px}
.sticker-follow .meeting-sticker-symbol::after{bottom:0;width:7px;height:7px;background:var(--sticker-bg);border-left:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(-45deg) translate(2px,1px)}
.sticker-decision{--sticker:#2c7566;--sticker-bg:rgba(44,117,102,.10)}
.sticker-decision .meeting-sticker-symbol::before{inset:1px;border:1.7px solid currentColor;border-radius:50%}
.sticker-decision .meeting-sticker-symbol::after{width:7px;height:4px;border-left:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(-45deg) translate(1px,-1px)}
.sticker-task{--sticker:#476b98;--sticker-bg:rgba(71,107,152,.10)}
.sticker-task .meeting-sticker-symbol::before{inset:1px;border:1.6px solid currentColor;border-radius:2px}
.sticker-task .meeting-sticker-symbol::after{width:7px;height:4px;border-left:1.7px solid currentColor;border-bottom:1.7px solid currentColor;transform:rotate(-45deg) translate(1px,-1px)}
.sticker-idea{--sticker:#9b7b2b;--sticker-bg:rgba(155,123,43,.09)}
.sticker-idea .meeting-sticker-symbol::before{top:0;width:10px;height:10px;border:1.6px solid currentColor;border-radius:50%}
.sticker-idea .meeting-sticker-symbol::after{bottom:0;width:7px;height:4px;border-top:1.6px solid currentColor;border-bottom:1.6px solid currentColor}
.sticker-attention{--sticker:#9b5555;--sticker-bg:rgba(155,85,85,.10)}
.sticker-attention .meeting-sticker-symbol::before{width:15px;height:14px;border:1.5px solid currentColor;clip-path:polygon(50% 0,100% 100%,0 100%);background:transparent}
.sticker-attention .meeting-sticker-symbol::after{content:"!";position:static;font-size:10px;font-weight:950;line-height:1;transform:translateY(2px)}
.sticker-reference{--sticker:#3d7b88;--sticker-bg:rgba(61,123,136,.10)}
.sticker-reference .meeting-sticker-symbol::before{width:11px;height:11px;border:1.6px solid currentColor;transform:rotate(45deg);border-radius:1px}
.sticker-open{--sticker:#586276;--sticker-bg:rgba(88,98,118,.09)}
.sticker-open .meeting-sticker-symbol::before{inset:1px;border:1.5px solid currentColor;border-radius:50%}
.sticker-open .meeting-sticker-symbol::after{content:"?";position:static;font-size:10px;font-weight:950;line-height:1}

.meeting-materials{padding:17px 18px;margin-bottom:86px}
.meeting-link-form{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(240px,1.3fr) auto;gap:8px;margin:12px 0 9px}
.meeting-link-form input{min-width:0;border:1px solid var(--line);border-radius:10px;padding:9px 11px;background:var(--surface);color:var(--ink);font:inherit}
.meeting-drop-zone{display:grid;place-items:center;min-height:48px;margin:8px 0 12px;border:1px dashed color-mix(in srgb,var(--blue) 28%,var(--line));border-radius:10px;color:var(--muted);font-size:.7rem;background:color-mix(in srgb,var(--blue-soft) 23%,transparent)}
.meeting-link-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.meeting-link-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:9px;align-items:center;padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.meeting-link-card>div{min-width:0;display:grid}
.meeting-link-card b,.meeting-link-card small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.meeting-link-card small{color:var(--muted);font-size:.64rem}
.meeting-link-symbol{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--blue-soft);color:var(--blue-dark);font-weight:900}
.meeting-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;margin-top:12px}
.meeting-photo-card{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
.meeting-photo-card img,.meeting-photo-placeholder{display:block;width:100%;height:135px;object-fit:cover;background:var(--soft)}
.meeting-photo-placeholder{display:grid;place-items:center;color:var(--muted);font-size:.72rem}
.meeting-photo-card figcaption{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 10px}
.meeting-photo-card figcaption>span{min-width:0;display:flex;align-items:center;gap:6px}
.meeting-photo-card figcaption>span:first-child{display:grid;min-width:0}
.meeting-photo-card b,.meeting-photo-card small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meeting-photo-card b{font-size:.7rem}.meeting-photo-card small{font-size:.62rem;color:var(--muted)}
.meeting-workspace-savebar{position:sticky;bottom:12px;z-index:9;display:flex;justify-content:center;pointer-events:none}
.meeting-workspace-savebar>div{pointer-events:auto;display:flex;align-items:center;gap:14px;border:1px solid var(--line);border-radius:12px;padding:8px 9px 8px 13px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 12px 28px rgba(20,32,50,.15);backdrop-filter:blur(12px)}
.meeting-workspace-savebar span{color:var(--muted);font-size:.68rem;font-weight:750}

@media(max-width:850px){
  .meeting-browser-top,.meeting-workspace-heading,.meeting-workspace-section-heading{align-items:stretch;flex-direction:column}
  .meeting-global-search{width:100%}
  .meeting-workspace-tools{align-items:stretch;justify-content:space-between;flex-wrap:wrap}
  .meeting-workspace-search-compact{flex:1 1 240px}
  .meeting-workspace-search-compact input{width:100%;max-width:none}
  .meeting-workspace-heading-actions{align-self:stretch;flex-wrap:wrap}
  .meeting-workspace-meta{grid-template-columns:1fr}
  .meeting-workspace-meta>div:first-child{padding-right:0;padding-bottom:10px;border-right:0;border-bottom:1px solid var(--line)}
  .meeting-link-list{grid-template-columns:1fr}
  .meeting-link-form{grid-template-columns:1fr}
}
@media(max-width:560px){
  .meeting-next-tab{right:-5px}
  .meeting-actions{justify-content:flex-start;flex-wrap:wrap}
  .meeting-workspace-heading h1{font-size:1.65rem;line-height:1.12}
  .meeting-workspace-heading-actions>button{flex:1 1 140px}
  .meeting-workspace-tools{gap:7px}
  .meeting-workspace-search-compact{flex-basis:100%;display:grid;grid-template-columns:minmax(0,1fr) auto}
  .meeting-workspace-tools>button{width:100%}
  .meeting-workspace-meta span{white-space:normal;overflow:visible;text-overflow:clip}
  .meeting-note-block{padding:13px}
  .meeting-note-block textarea{min-height:220px}
  .meeting-sticker-library{grid-template-columns:1fr;width:190px}
  .meeting-link-card{grid-template-columns:auto minmax(0,1fr)}
  .meeting-link-card>a,.meeting-link-card>button{grid-row:2}
  .meeting-photo-grid{grid-template-columns:1fr}
  .meeting-photo-card figcaption{align-items:stretch;flex-direction:column}
  .meeting-photo-card figcaption>span:last-child{justify-content:flex-end;flex-wrap:wrap}
  .meeting-workspace-savebar{bottom:calc(8px + env(safe-area-inset-bottom,0px));padding:0 4px}
  .meeting-workspace-savebar>div{width:min(100%,420px);justify-content:space-between;gap:8px;padding-left:10px}
}
.meeting-drop-zone.is-busy{opacity:.72;border-style:solid;cursor:progress}

/* CadProf LAB · importação de alunos e fotografia ampliada/editável */
.student-photo-button {
  appearance: none;
  border: 1px solid color-mix(in srgb,var(--line) 86%,var(--blue) 14%);
  background:var(--soft);
  width: 32px;
  height: 40px;
  padding: 0;
  border-radius: 9px;
  overflow: hidden;
  flex: none;
  cursor: zoom-in;
  display: grid;
  place-items: center;
}
.student-photo-button img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position:center;
  display: block;
}
.student-photo-button:hover,
.student-photo-button:focus-visible {
  outline: 2px solid color-mix(in srgb, var(--blue) 38%, transparent);
  outline-offset: 2px;
}
.student-importer .import-preview table {
  min-width: 1160px;
}
.student-importer .table-input.age {
  width: 64px;
}
.student-importer .table-input.import-notes {
  min-width: 210px;
}
.student-photo-viewer {
  padding-top: 18px;
}
.student-photo-large {
  min-height: 420px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #f8f9fc, #f1f4f8);
  border-radius: 18px;
  padding: 22px;
  overflow: hidden;
}
.student-photo-large > img {
  max-width: min(100%, 620px);
  max-height: 66vh;
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: 14px;
  box-shadow: 0 14px 38px rgba(32, 42, 59, 0.12);
}
.student-photo-large.editing {
  min-height: 470px;
}
.student-photo-crop-frame {
  width: min(360px, 82vw);
  aspect-ratio: 4 / 5;
  position: relative;
  overflow: hidden;
  border-radius: 16px;
  background: #e8edf4;
  box-shadow: 0 16px 44px rgba(32, 42, 59, 0.16);
  outline: 1px solid rgba(255, 255, 255, 0.85);
  cursor: grab;
  touch-action: none;
  user-select: none;
}
.student-photo-crop-frame:active { cursor: grabbing; }
.student-photo-crop-frame::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: inset 0 0 0 1px rgba(27,38,58,.08);
  border-radius: inherit;
}
.student-photo-crop-frame img {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  display: block;
  transform-origin: center;
  transition: none;
  pointer-events: none;
}
.student-photo-controls {
  margin-top: 16px;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 16px;
  background: #fff;
}
.student-photo-controls > label {
  display: grid;
  gap: 7px;
  color: var(--ink);
  font-size: var(--cp-fs-9px, 9px);
  font-weight: 750;
}
.student-photo-controls input[type="range"] {
  width: 100%;
  accent-color: var(--blue);
}
.student-photo-controls > small {
  grid-column: 1 / -1;
  color: var(--muted);
  line-height: 1.5;
}
.student-photo-rotate-actions {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
@media (max-width: 720px) {
  .student-photo-large {
    min-height: 320px;
    padding: 12px;
  }
  .student-photo-large.editing {
    min-height: 390px;
  }
  .student-photo-controls {
    grid-template-columns: 1fr;
  }
  .student-photo-controls > small,
  .student-photo-rotate-actions {
    grid-column: 1;
  }
  .student-photo-viewer .modal-footer {
    align-items: stretch;
    flex-direction: column;
  }
  .student-photo-viewer .modal-footer > div {
    width: 100%;
  }
  .student-photo-viewer .modal-footer button {
    flex: 1;
  }
}
.student-importer .import-flag-cell {
  min-width: 96px;
  display: grid;
  justify-items: center;
  gap: 4px;
}
.student-importer .import-flag-cell small {
  display: block;
  max-width: 110px;
  color: var(--muted);
  font-size: var(--cp-fs-7px, 7px);
  line-height: 1.25;
  text-align: center;
  overflow-wrap: anywhere;
}
.student-importer .import-flag-cell small.preserved {
  color: var(--blue);
}
.student-importer .import-flag-cell small.uncertain {
  color: #9a6114;
  font-weight: 750;
}

/* CadProf v0.16.20a · ajuste final do editor de fotografias antes do deploy */
.student-photo-crop-frame {
  overscroll-behavior: none;
}
.student-photo-large:not(.editing) > img {
  cursor: pointer;
}
.modal:has(.student-photo-viewer) {
  overscroll-behavior: contain;
}

/* v0.16.20a — ajuste final pré-deploy: descritores de rubrica mais compactos e legíveis. */
.criterion-list .descriptor-grid {
  gap: 6px;
  padding: 9px 10px 10px;
}
.criterion-list .descriptor-grid article {
  min-width: 0;
  padding: 8px 10px;
  border-radius: 8px;
}
.criterion-list .descriptor-grid article > header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 18px;
}
.criterion-list .descriptor-grid article > header b {
  font-size: var(--cp-fs-0_72rem, .72rem);
  line-height: 1.2;
}
.criterion-list .descriptor-grid article > header span {
  flex: 0 0 auto;
  min-width: 3.2em;
  margin-left: auto;
  text-align: right;
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}
.criterion-list .descriptor-grid article > p {
  margin: 4px 0 0;
  font-size: var(--cp-fs-0_76rem, .76rem);
  line-height: 1.34;
}

/* O antigo filete de “critério frequente” era uma lista fixa, não uma estatística de uso real.
   Removê-lo da leitura normal evita sugerir uma frequência que pode já não corresponder à prática atual. */
.frequent-criterion > summary,
.criterion-picker label.frequent {
  box-shadow: none;
}

/* CadProf v0.16.21 — Rubrica v1: sugestões locais a partir do texto do projeto */
.project-rubric-heading-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.project-rubric-suggestion-preview{border:1px solid color-mix(in srgb,var(--primary) 24%,var(--line));border-radius:13px;padding:13px;background:color-mix(in srgb,var(--primary) 4%,var(--surface));margin-bottom:12px}
.project-rubric-suggestion-preview>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:10px}
.project-rubric-suggestion-preview>header h4{margin:2px 0 4px;font-size:var(--cp-fs-0_9rem,.9rem)}
.project-rubric-suggestion-preview>header p{margin:0;color:var(--muted);font-size:var(--cp-fs-0_72rem,.72rem);line-height:1.45;max-width:760px}
.project-suggestion-kicker{display:block;color:var(--primary);font-size:var(--cp-fs-0_68rem,.68rem);font-weight:800;letter-spacing:.08em;text-transform:uppercase}

.project-suggestion-order-note{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 7px;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem)}
.project-suggestion-order-actions{display:flex!important;grid-template-columns:none!important;align-items:center;gap:5px!important;flex:0 0 auto}
.project-suggestion-order-actions button{width:26px;height:26px;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text);font:inherit;font-size:var(--cp-fs-0_68rem,.68rem);font-weight:800;cursor:pointer}
.project-suggestion-order-actions button:disabled{opacity:.3;cursor:default}
.project-suggestion-drag-handle{display:inline-grid!important;place-items:center;width:23px;height:26px;color:var(--muted);cursor:grab;font-weight:900;letter-spacing:-2px;user-select:none}
.project-suggestion-list details[draggable="true"]{cursor:default}
.project-suggestion-list details[draggable="true"]:active .project-suggestion-drag-handle{cursor:grabbing}
.project-suggestion-list{display:grid;gap:7px}
.project-suggestion-list details{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.project-suggestion-list summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;list-style:none}
.project-suggestion-list summary::-webkit-details-marker{display:none}
.project-suggestion-list summary>span{display:grid;gap:1px}
.project-suggestion-list summary small{color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem)}
.project-suggestion-list summary b{font-size:var(--cp-fs-0_82rem,.82rem)}
.project-suggestion-body{border-top:1px solid var(--line);padding:10px 11px;display:grid;gap:9px}
.project-suggestion-student{margin:0;display:grid;gap:3px;padding:9px 10px;border-radius:9px;background:var(--soft)}
.project-suggestion-student span{font-size:var(--cp-fs-0_68rem,.68rem);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.project-suggestion-student b{font-size:var(--cp-fs-0_76rem,.76rem);line-height:1.45}
.project-suggestion-evidence{margin:0;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem)}
.project-suggestion-evidence span{font-weight:700;color:var(--text)}
.project-suggestion-why{border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--surface) 94%,var(--soft));overflow:hidden}
.project-suggestion-why>summary{display:flex!important;align-items:center!important;justify-content:space-between!important;min-height:0!important;padding:7px 9px!important;font-size:var(--cp-fs-0_68rem,.68rem)!important;font-weight:700;color:var(--muted);cursor:pointer}
.project-suggestion-why>summary::after{content:"+";font-weight:800;color:var(--primary)}
.project-suggestion-why[open]>summary::after{content:"−"}
.project-suggestion-why>div{border-top:1px solid var(--line);padding:7px 9px;display:grid;gap:4px}
.project-suggestion-why p{margin:0;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem);line-height:1.4}
.project-suggestion-why b{color:var(--text)}
.project-suggestion-levels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.project-suggestion-levels article{border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--surface)}
.project-suggestion-levels article b{font-size:var(--cp-fs-0_7rem,.7rem)}
.project-suggestion-levels article p{margin:3px 0 0;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem);line-height:1.4}
.project-phase-suggestion-summary{margin-top:11px;border-top:1px solid var(--line);padding-top:10px}
.project-phase-suggestion-summary h5{margin:0 0 7px;font-size:var(--cp-fs-0_75rem,.75rem)}
.project-phase-suggestion-summary>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:7px}
.project-phase-suggestion-summary section{border:1px solid var(--line);border-radius:9px;padding:8px 9px;background:var(--surface)}
.project-phase-suggestion-summary section>b{font-size:var(--cp-fs-0_72rem,.72rem)}
.project-phase-suggestion-summary ul{margin:5px 0 0;padding-left:17px;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem);line-height:1.4}
@media(max-width:720px){.project-rubric-heading-actions{justify-content:flex-start}.project-rubric-suggestion-preview>header{flex-direction:column}.project-suggestion-levels{grid-template-columns:1fr}}

/* CadProf v0.16.21 — Rubrica v1: aceitação, contextualização e persistência controlada */
.project-suggestion-toolbar{display:flex!important;align-items:center;gap:6px!important;flex-wrap:wrap}
.project-suggestion-card.excluded{opacity:.52;background:color-mix(in srgb,var(--surface) 92%,var(--soft))}
.project-suggestion-use{display:inline-flex!important;align-items:center;gap:4px;font-size:var(--cp-fs-0_68rem,.68rem);font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}
.project-suggestion-use input{width:auto;margin:0}
.project-suggestion-weight{display:inline-flex!important;align-items:center;gap:3px;color:var(--muted);white-space:nowrap;cursor:text}
.project-suggestion-weight small{font-size:var(--cp-fs-0_62rem,.62rem)!important;text-transform:uppercase;letter-spacing:.04em}
.project-suggestion-weight input{width:54px;height:28px;padding:3px 5px;text-align:right;font-weight:800}
.project-suggestion-weight>b{font-size:var(--cp-fs-0_68rem,.68rem)!important;color:var(--muted)}
.project-suggestion-student-edit{display:grid;gap:5px;padding:9px 10px;border-radius:9px;background:var(--soft)}
.project-suggestion-student-edit>span{font-size:var(--cp-fs-0_68rem,.68rem);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800}
.project-suggestion-student-edit textarea{min-height:58px;background:var(--surface)}
.project-suggestion-levels.editable label{display:grid;gap:4px;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--surface)}
.project-suggestion-levels.editable label>b{font-size:var(--cp-fs-0_7rem,.7rem)}
.project-suggestion-levels.editable textarea{min-height:78px;font-size:var(--cp-fs-0_68rem,.68rem);line-height:1.4}
.project-suggestion-reset{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.project-suggestion-accept{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:9px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:var(--surface);font-size:var(--cp-fs-0_72rem,.72rem)}
.project-suggestion-accept.valid{border-color:color-mix(in srgb,#4f8a68 45%,var(--line));background:color-mix(in srgb,#eaf4ef 68%,var(--surface))}
.project-suggestion-accept.pending{border-color:color-mix(in srgb,#b77a3e 50%,var(--line));background:color-mix(in srgb,#fff3e8 72%,var(--surface))}
.project-suggestion-staged{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 0;padding:8px 10px;border-radius:9px;background:color-mix(in srgb,#eaf4ef 72%,var(--surface));font-size:var(--cp-fs-0_68rem,.68rem);line-height:1.4}
.rubric-v1-badge{display:inline-flex;align-items:center;margin-left:7px;padding:2px 6px;border-radius:999px;background:color-mix(in srgb,var(--primary) 12%,var(--surface));color:var(--primary);font-size:var(--cp-fs-0_62rem,.62rem);text-transform:uppercase;letter-spacing:.05em}
.project-criterion-note-list.rubric-v1-context-editor{max-height:560px}
.project-criterion-context-card{display:grid;gap:8px;padding:10px 11px;border-top:1px solid var(--line)}
.project-criterion-context-card>header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.project-criterion-context-card>header>b{font-size:var(--cp-fs-0_76rem,.76rem)}
.project-criterion-student-field{display:grid!important;grid-template-columns:1fr!important;gap:5px!important;padding:0!important;border:0!important}
.project-criterion-student-field>span{display:block!important;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem);font-weight:700}
.project-criterion-student-field textarea{min-height:58px}
.project-criterion-student-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:2px}
.project-criterion-student-actions small{color:var(--muted);font-size:var(--cp-fs-0_66rem,.66rem);line-height:1.35;max-width:72ch}
.project-criterion-descriptor-editor{border:1px solid var(--line);border-radius:9px;overflow:hidden;background:color-mix(in srgb,var(--surface) 95%,var(--soft))}
.project-criterion-descriptor-editor>summary{cursor:pointer;padding:7px 9px;color:var(--muted);font-size:var(--cp-fs-0_68rem,.68rem);font-weight:700;list-style:none}
.project-criterion-descriptor-editor>summary::-webkit-details-marker{display:none}
.project-criterion-descriptor-editor>summary::after{content:" +";color:var(--primary);font-weight:900}
.project-criterion-descriptor-editor[open]>summary::after{content:" −"}
.project-criterion-descriptor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:8px;border-top:1px solid var(--line)}
.project-criterion-descriptor-grid label{display:grid!important;grid-template-columns:1fr!important;gap:4px!important;padding:0!important;border:0!important}
.project-criterion-descriptor-grid label>b{font-size:var(--cp-fs-0_68rem,.68rem)}
.project-criterion-descriptor-grid textarea{min-height:78px;font-size:var(--cp-fs-0_68rem,.68rem);line-height:1.4}
.project-criterion-reset-actions{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap;padding:0 8px 8px}
@media(max-width:820px){.project-suggestion-order-actions{flex-wrap:wrap;justify-content:flex-end}.project-criterion-descriptor-grid{grid-template-columns:1fr}}
@media(max-width:620px){.project-suggestion-list summary{align-items:flex-start;flex-direction:column}.project-suggestion-order-actions{justify-content:flex-start!important}.project-suggestion-accept{align-items:flex-start;flex-direction:column}.project-criterion-context-card>header{align-items:flex-start;flex-direction:column}}
.rubric-v1-status{display:inline-flex;align-items:center;min-height:34px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,#e8f4ec 78%,var(--surface));color:#2f6b48;border:1px solid color-mix(in srgb,#4f8a68 35%,var(--line));font-size:var(--cp-fs-0_72rem,.72rem);font-weight:800;white-space:nowrap}


/* ===== CadProf LOCAL V92 R4 · seletor/sync/scroll/projetos ===== */
/* Indicador de sincronização deliberadamente mínimo: a cor é reforçada por
   title/aria-label no botão, pelo que o significado não depende só da cor. */
.sync-pill.sync-indicator {
  width: 32px;
  min-width: 32px;
  height: 32px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--surface);
  text-align: center;
}
.sync-pill.sync-indicator .pulse { width: 9px; height: 9px; box-shadow: none; }
.sync-pill.sync-indicator > span:last-child { display: block; }
.sync-pill.sync-indicator .pulse.idle { background: #9aa2b2; }
.sync-pill.sync-indicator .pulse.success { background: #2f9b70; box-shadow: 0 0 0 3px rgba(47,155,112,.12); }
.sync-pill.sync-indicator .pulse.pending { background: #d99118; box-shadow: 0 0 0 3px rgba(217,145,24,.13); }
.sync-pill.sync-indicator .pulse.error { background: #c94d5f; box-shadow: 0 0 0 3px rgba(201,77,95,.12); }
.sync-pill.sync-indicator .pulse.syncing {
  background: #4c79b8;
  box-shadow: 0 0 0 3px rgba(76,121,184,.12);
  animation: cp-sync-pulse 1.15s ease-in-out infinite;
}
@keyframes cp-sync-pulse { 0%,100% { opacity:.55; transform:scale(.82); } 50% { opacity:1; transform:scale(1.12); } }

/* Avaliação: a lista de alunos passa a deslocar-se dentro de uma viewport
   própria. O thead é uma única camada sticky; elimina o reposicionamento
   independente das duas linhas de cabeçalho que provocava a oscilação. */
@media screen {
  .assessment-scroll {
    max-height: clamp(360px, 62vh, 720px);
    overflow: auto !important;
    position: relative;
    isolation: isolate;
    contain: paint;
    background: var(--surface);
    overscroll-behavior: contain;
  }
  .assessment-matrix thead {
    position: sticky !important;
    top: 0 !important;
    z-index: 500 !important;
    background: var(--surface) !important;
    transform: translateZ(0);
  }
  .assessment-matrix .category-row > th,
  .assessment-matrix .criterion-row > th {
    position: static !important;
    top: auto !important;
  }
  .assessment-matrix .category-row > th:first-child {
    position: sticky !important;
    left: 0 !important;
    z-index: 520 !important;
    background: var(--surface) !important;
  }
  .assessment-matrix .category-row > th:nth-child(2) {
    position: sticky !important;
    left: var(--assessment-number-width) !important;
    z-index: 520 !important;
    background: var(--surface) !important;
    box-shadow: 7px 0 12px rgba(28,36,60,.07);
  }
  .assessment-matrix tbody,
  .assessment-matrix tbody tr,
  .assessment-matrix tbody td { z-index: 0 !important; }
  .assessment-matrix tbody > tr > td.sticky-number,
  .assessment-matrix tbody > tr > td.sticky-student { z-index: 12 !important; }
}


/* ===== CadProf LOCAL V92 R5 · navegação sticky + turmas por ano ===== */
/* A topbar já era sticky na baseline; reforça-se a camada para que seletores
   locais nunca a cubram durante scroll interno. */
@media screen {
  .topbar {
    position: sticky !important;
    top: 0 !important;
    z-index: 90 !important;
    background: color-mix(in srgb, var(--surface, #fff) 96%, transparent) !important;
  }
}

/* Turmas e Alunos — mesma leitura por ano usada na Avaliação. */
.class-year-groups {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  overflow: visible !important;
  padding: 1px 0 7px !important;
}
.class-year-row {
  display: grid;
  grid-template-columns: 58px minmax(0,1fr);
  align-items: stretch;
  gap: 7px;
}
.class-year-label,
.project-class-year-label {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 4px 5px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--muted);
  background: var(--panel-soft, var(--surface));
  font-size: var(--cp-fs-0_68rem, .68rem);
  font-weight: 800;
  text-align: center;
  line-height: 1.15;
}
.class-year-buttons {
  display: flex;
  gap: 6px;
  min-width: 0;
}
.class-year-buttons .class-tab-wrap {
  flex: 1 1 0 !important;
  min-width: 0 !important;
  max-width: none !important;
}
.class-year-buttons .class-tab-wrap > button {
  min-width: 0 !important;
  min-height: 44px !important;
  padding: 6px 7px 6px 28px !important;
  gap: 5px !important;
}
.class-year-buttons .class-select-box { left: 7px !important; }
.class-year-buttons .class-tab-label strong { font-size: var(--cp-fs-10px,10px) !important; }
.class-year-buttons .class-tab-label small { font-size: var(--cp-fs-8px,8px) !important; }
.class-year-buttons .class-semester-badge { padding: 1px 4px; }

/* Projetos — linhas por ano, preservando as cores/estado semestral. */
.project-class-year-groups {
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  overflow: visible !important;
  padding: 0 !important;
}
.project-class-year-row {
  display: grid;
  grid-template-columns: 58px minmax(0,1fr);
  align-items: stretch;
  gap: 7px;
}
.project-class-year-buttons {
  display: grid;
  gap: 6px;
  min-width: 0;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0,1fr);
}
.project-class-year-buttons > button {
  min-width: 0 !important;
  max-width: none !important;
  min-height: 40px !important;
  padding: 5px 7px !important;
}

/* Desktop: os seletores de turma permanecem disponíveis enquanto o conteúdo
   do módulo desce. O título da página pode sair do ecrã para não desperdiçar altura. */
@media screen and (min-width: 900px) {
  .project-class-selector {
    position: sticky !important;
    top: 78px !important;
    z-index: 72 !important;
    margin: -2px 0 12px !important;
    padding: 7px 0 9px !important;
    background: var(--canvas, #f4f6f9);
    box-shadow: 0 8px 14px -14px rgba(25,35,55,.28);
  }
  .assessment-class-tabs {
    position: sticky !important;
    top: 78px !important;
    z-index: 72 !important;
    padding: 7px 0 !important;
    background: var(--canvas, #f4f6f9);
    box-shadow: 0 8px 14px -14px rgba(25,35,55,.28);
  }

  /* Turmas e Alunos: o contexto fica visível e apenas a listagem ganha
     deslocamento vertical próprio. */
  .cp-turmas-table-panel { margin-bottom: 0; }
  .cp-turmas-table-tools {
    position: relative;
    z-index: 3;
    background: var(--surface);
    padding-top: 14px;
    padding-bottom: 14px;
  }
  .cp-turmas-table-scroll {
    max-height: max(280px, calc(100vh - 505px));
    overflow: auto !important;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
  }
  .cp-turmas-table-scroll thead th {
    position: sticky;
    top: 0;
    z-index: 6;
    background: #f7f8fb;
    box-shadow: 0 1px 0 var(--line);
  }
}

@media screen and (min-width: 900px) and (max-width: 1179px) {
  .class-year-buttons,
  .project-class-year-buttons {
    overflow-x: auto;
    scrollbar-width: thin;
  }
  .class-year-buttons .class-tab-wrap {
    flex: 0 0 150px !important;
    min-width: 150px !important;
  }
  .project-class-year-buttons {
    display: flex;
  }
  .project-class-year-buttons > button {
    flex: 0 0 155px;
    min-width: 155px !important;
  }
}

@media screen and (max-width: 899px) {
  .class-year-row,
  .project-class-year-row { grid-template-columns: 1fr; }
  .class-year-label,
  .project-class-year-label { justify-content: flex-start; min-height: 30px; padding-inline: 8px; }
  .class-year-buttons,
  .project-class-year-buttons { overflow-x: auto; scrollbar-width: thin; }
  .class-year-buttons .class-tab-wrap { flex: 0 0 154px !important; min-width: 154px !important; }
  .project-class-year-buttons { display: flex; }
  .project-class-year-buttons > button { flex: 0 0 160px; min-width: 160px !important; }
  .cp-turmas-table-scroll { overflow-x: auto; }
}


/* ===== CadProf LOCAL V92 R6 · navegação contextual transversal ===== */
/* Sumários e Sínteses usam a mesma grelha de turma/disciplina já estabilizada
   em Projetos. A Turma ativa global continua a usar o mesmo state. */
.cp-module-class-selector { margin-bottom: 12px !important; }
.summaries-class-selector .project-class-year-buttons > button,
.descriptive-class-selector .project-class-year-buttons > button { min-height: 40px !important; }

/* Projetos: biblioteca permanece disponível durante a leitura da ficha e pode
   recolher-se quando há várias simulações/projetos. */
.project-library-header-actions { display:flex; align-items:center; gap:7px; }
.project-library-collapse {
  width: 26px; height: 26px; padding: 0; border: 1px solid var(--line);
  border-radius: 8px; background: var(--surface); color: var(--muted);
  cursor: pointer; font-weight: 900; line-height: 1;
}
.project-library-collapse:hover { border-color: var(--blue); color: var(--blue); }

/* Avaliação: depois da escolha da turma, o contexto reduz-se a uma barra fina.
   Períodos sem projetos deixam de ocupar espaço. */
.assessment-class-focusbar {
  display:grid; grid-template-columns:5px minmax(0,1fr) auto; align-items:center;
  gap:9px; min-height:46px; padding:7px 9px; border:1px solid var(--line);
  border-radius:11px; background:var(--surface); margin-bottom:8px;
}
.assessment-class-focusbar > i { width:5px; height:30px; border-radius:999px; }
.assessment-class-focusbar > span { min-width:0; display:grid; gap:2px; }
.assessment-class-focusbar strong { font-size:var(--cp-fs-0_78rem,.78rem); }
.assessment-class-focusbar small { color:var(--muted); font-size:var(--cp-fs-0_66rem,.66rem); }
.assessment-no-projects { margin:8px 0 0; padding:10px 12px; border:1px dashed var(--line); border-radius:10px; color:var(--muted); }
.assessment-browser.focused > header { display:none; }
.assessment-browser.focused { gap:6px; }
.assessment-browser.focused .assessment-period-browser { margin-top:2px; }
.assessment-page-heading.focused { margin-bottom:10px; align-items:center; }
.assessment-page-heading.focused .eyebrow,
.assessment-page-heading.focused > div:first-child > p,
.assessment-page-heading.focused .official-export-help { display:none; }
.assessment-page-heading.focused h1 { font-size:clamp(20px,2vw,26px); }

/* Rubricas: navegador condensado e persistente; o conteúdo da rubrica é a
   área que se desloca. */
@media screen and (min-width:900px) {
  .summaries-class-selector,
  .descriptive-class-selector,
  .project-class-selector,
  .assessment-class-tabs,
  .assessment-class-focusbar {
    position: sticky !important;
    top: 58px !important;
    z-index: 72 !important;
    background: var(--canvas,#f4f6f9);
    box-shadow: 0 8px 14px -14px rgba(25,35,55,.28);
  }
  .summaries-class-selector,
  .descriptive-class-selector { padding:7px 0 9px !important; }

  .project-library { top: 170px !important; max-height:calc(100vh - 190px) !important; }
  .project-library-list { max-height:calc(100vh - 260px) !important; }

  .rubric-browser {
    position: sticky; top: 58px; z-index: 71;
    display:grid; grid-template-columns:1fr !important; gap:5px !important;
    margin:0 0 8px !important; padding:6px 0 8px;
    background:var(--canvas,#f4f6f9);
    box-shadow:0 8px 14px -14px rgba(25,35,55,.28);
  }
  .rubric-compact-row { min-height:34px; gap:8px !important; }
  .rubric-row-label { width:112px; min-width:112px; font-size:var(--cp-fs-0_62rem,.62rem) !important; }
  .rubric-browser .rubric-tabs { gap:5px !important; }
  .rubric-browser .rubric-tabs button { min-height:34px !important; padding:5px 8px !important; }
  .rubric-browser .rubric-tabs button strong { font-size:var(--cp-fs-0_68rem,.68rem) !important; }
  .rubric-browser .rubric-tabs button small { font-size:var(--cp-fs-0_58rem,.58rem) !important; }
  .rubric-panel { max-height:calc(100vh - 205px); overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable; }
  .rubric-panel > .rubric-header { position:sticky; top:0; z-index:15; background:var(--surface); box-shadow:0 1px 0 var(--line); }
}

@media screen and (max-width:899px) {
  .assessment-class-focusbar { position:static; }
  .rubric-panel { overflow:visible; max-height:none; }
}

@media screen { .assessment-panel { scroll-margin-top: 118px; } }


/* ===== CadProf LOCAL V92 R7 · sistema visual e viewport de trabalho ===== */
@media screen and (min-width:900px) {
  /* Cabeçalhos de módulo: mesma escala, ritmos e descrições mais compactas. */
  .content[class*="content-page-"] > .page-heading {
    margin-bottom:14px;
    align-items:center;
  }
  .content[class*="content-page-"] > .page-heading h1,
  .meeting-workspace-heading h1 {
    margin:0;
    font-size:30px !important;
    line-height:1.08 !important;
    letter-spacing:-.035em;
  }
  .content[class*="content-page-"] > .page-heading .eyebrow,
  .meeting-workspace-heading .eyebrow {
    margin-bottom:5px;
    font-size:10px !important;
  }
  .content[class*="content-page-"] > .page-heading > div:first-child > p:not(.eyebrow),
  .meeting-workspace-heading > div:first-child > p:not(.eyebrow) {
    max-width:none !important;
    margin:6px 0 0 !important;
    font-size:14px !important;
    line-height:1.42 !important;
  }

  /* Módulos operacionais ocupam a viewport abaixo da topbar. */
  .content-page-turmas,
  .content-page-aulas,
  .content-page-projetos,
  .content-page-sinteses-descritivas,
  .content-page-rubricas,
  .content-page-avaliacao,
  .content-page-agenda {
    height:calc(100vh - 78px);
    min-height:0;
    overflow:hidden;
    padding-top:22px;
    padding-bottom:16px;
    display:flex;
    flex-direction:column;
  }

  /* Turmas e Alunos: só a listagem desloca. */
  .content-page-turmas > .page-heading,
  .content-page-turmas .class-selection-area,
  .content-page-turmas .cp-turmas-summary { flex:0 0 auto; }
  .content-page-turmas .cp-turmas-table-panel {
    flex:1 1 auto;
    min-height:0;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    margin-bottom:0;
  }
  .content-page-turmas .cp-turmas-table-tools { flex:0 0 auto; }
  .content-page-turmas .cp-turmas-table-scroll {
    flex:1 1 auto;
    min-height:0;
    height:auto;
    max-height:none !important;
    overflow:auto !important;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }

  /* Sumários: apenas Aulas registadas desloca. */
  .content-page-aulas > .page-heading,
  .content-page-aulas > .summaries-class-selector,
  .content-page-aulas > .lesson-planning,
  .content-page-aulas > .lesson-filter-banner { flex:0 0 auto; }
  .content-page-aulas .summaries-class-selector {
    position:relative !important;
    top:auto !important;
    z-index:auto !important;
    box-shadow:none !important;
    padding-top:0 !important;
  }
  .content-page-aulas .lesson-planning { margin-bottom:10px; }
  .content-page-aulas .lesson-layout {
    flex:1 1 auto;
    min-height:0;
    height:100%;
    align-items:stretch;
  }
  .content-page-aulas .lesson-list {
    min-height:0;
    height:100%;
    overflow-y:auto !important;
    overscroll-behavior:contain;
    scrollbar-gutter:stable;
  }
  .content-page-aulas .lesson-list > .panel-header {
    position:sticky;
    top:0;
    z-index:8;
    background:var(--surface);
    box-shadow:0 1px 0 var(--line);
  }
  .content-page-aulas .lesson-side {
    height:max-content;
    max-height:100%;
    overflow:hidden;
  }

  /* Projetos: biblioteca e ficha têm scroll próprio; página não desloca. */
  .content-page-projetos > .page-heading,
  .content-page-projetos > .project-class-selector { flex:0 0 auto; }
  .content-page-projetos .project-class-selector {
    position:relative !important;
    top:auto !important;
    z-index:auto !important;
    box-shadow:none !important;
    padding-top:0 !important;
  }
  .content-page-projetos .project-workspace {
    flex:1 1 auto;
    min-height:0;
    height:100%;
    align-items:stretch;
  }
  .content-page-projetos .project-library {
    position:relative !important;
    top:auto !important;
    height:100%;
    max-height:none !important;
    overflow:hidden;
  }
  .content-page-projetos .project-library-list {
    max-height:none !important;
    height:calc(100% - 58px);
    overflow-y:auto;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }
  .content-page-projetos .project-sheet-panel {
    min-height:0;
    height:100%;
    overflow-y:auto;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }
  .content-page-projetos .project-sheet-toolbar {
    position:sticky;
    top:0;
    z-index:12;
    background:var(--surface);
    box-shadow:0 1px 0 var(--line);
  }
}


@media screen and (min-width:900px) {
  /* Rubricas: cabeçalho/navegador estáveis; critérios e descritores deslocam. */
  .content-page-rubricas > .page-heading,
  .content-page-rubricas > .rubric-browser { flex:0 0 auto; }
  .content-page-rubricas .rubric-browser {
    position:relative !important;
    top:auto !important;
    z-index:auto !important;
    margin-bottom:8px !important;
    padding-top:0 !important;
    box-shadow:none !important;
  }
  .content-page-rubricas .rubric-panel {
    flex:1 1 auto;
    min-height:0;
    height:100%;
    max-height:none !important;
    overflow-y:auto;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }

  /* Avaliação: contexto fixo; área matricial deslocável. */
  .content-page-avaliacao > .assessment-page-heading,
  .content-page-avaliacao > .assessment-browser { flex:0 0 auto; }
  .content-page-avaliacao .assessment-class-tabs,
  .content-page-avaliacao .assessment-class-focusbar {
    position:relative !important;
    top:auto !important;
    z-index:auto !important;
    box-shadow:none !important;
  }
  .content-page-avaliacao .assessment-panel {
    flex:1 1 auto;
    min-height:0;
    overflow:hidden;
    display:flex;
    flex-direction:column;
  }
  .content-page-avaliacao .assessment-header,
  .content-page-avaliacao .assessment-toolbar { flex:0 0 auto; }
  .content-page-avaliacao .assessment-scroll {
    flex:1 1 auto;
    min-height:0;
    max-height:none !important;
    overflow:auto !important;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }

  /* Sínteses: cabeçalho/contexto fixos; lista de alunos conserva scroll próprio. */
  .content-page-sinteses-descritivas > .descriptive-page-heading,
  .content-page-sinteses-descritivas > .descriptive-class-selector,
  .content-page-sinteses-descritivas > .descriptive-context { flex:0 0 auto; }
  .content-page-sinteses-descritivas .descriptive-page-heading { margin-bottom:10px; }
  .content-page-sinteses-descritivas .descriptive-page-heading > div > p:not(.eyebrow) {
    white-space:nowrap;
    max-width:none !important;
  }
  .content-page-sinteses-descritivas .descriptive-class-selector {
    position:relative !important;
    top:auto !important;
    z-index:auto !important;
    box-shadow:none !important;
    padding-top:0 !important;
  }
  .content-page-sinteses-descritivas .descriptive-context {
    margin-bottom:8px;
    padding-top:8px;
    padding-bottom:8px;
  }
  .content-page-sinteses-descritivas .descriptive-context-title { white-space:nowrap; }
  .content-page-sinteses-descritivas .descriptive-workspace {
    flex:1 1 auto;
    min-height:0;
    height:100%;
    align-items:stretch;
  }
  .content-page-sinteses-descritivas .descriptive-student-list,
  .content-page-sinteses-descritivas .descriptive-editor {
    min-height:0;
    height:100%;
  }
  .content-page-sinteses-descritivas .descriptive-student-list > div {
    max-height:none !important;
    height:calc(100% - 52px);
    overflow-y:auto;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }
  .content-page-sinteses-descritivas .descriptive-editor {
    overflow:auto;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }

  /* Agenda: título + pesquisa/vista fixos; tudo abaixo percorre. */
  .content-page-agenda > .page-heading,
  .content-page-agenda > .agenda-view-bar { flex:0 0 auto; }
  .content-page-agenda > .page-heading { margin-bottom:10px; }
  .content-page-agenda > .agenda-view-bar { margin-bottom:10px; }
  .content-page-agenda .agenda-scroll-region {
    flex:1 1 auto;
    min-height:0;
    overflow-y:auto;
    overflow-x:hidden;
    padding-right:4px;
    scrollbar-gutter:stable;
    overscroll-behavior:contain;
  }
  .content-page-agenda .agenda-scroll-region > :first-child { margin-top:0; }

  /* Estatísticas: mesma escala de cabeçalho. */
  .content-page-estatisticas > .stats-page-heading { margin-bottom:14px; }
  .content-page-estatisticas > .stats-page-heading h1 {
    font-size:30px !important;
    line-height:1.08 !important;
  }
  .content-page-estatisticas > .stats-page-heading > div > p:not(.eyebrow) {
    max-width:none !important;
    margin-top:6px !important;
    font-size:14px !important;
    line-height:1.42 !important;
  }
}

/* Falta do professor: checkbox simples, sem moldura cinzenta interior. */
.teacher-absence-toggle {
  display:flex !important;
  align-items:center;
  justify-content:center;
  gap:9px;
  min-height:42px;
  padding:9px 12px !important;
  border:1px solid color-mix(in srgb,var(--red,#b64252) 28%,var(--line)) !important;
  border-radius:11px;
  background:color-mix(in srgb,#fff4f5 72%,var(--surface)) !important;
  color:var(--ink);
  font-weight:800;
  cursor:pointer;
}
.teacher-absence-toggle input[type="checkbox"] {
  appearance:auto !important;
  -webkit-appearance:checkbox !important;
  width:15px !important;
  height:15px !important;
  min-width:15px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  outline:0 !important;
  box-shadow:none !important;
  background:transparent !important;
}
.teacher-absence-toggle:has(input:checked) {
  border-color:color-mix(in srgb,var(--red,#b64252) 48%,var(--line)) !important;
  background:color-mix(in srgb,#ffecee 78%,var(--surface)) !important;
}

/* Ecrãs pequenos: fluxo normal para evitar aprisionar conteúdo. */
@media screen and (max-width:899px) {
  .content[class*="content-page-"] {
    height:auto !important;
    overflow:visible !important;
    display:block !important;
  }
  .agenda-scroll-region { overflow:visible !important; }
  .descriptive-page-heading > div > p:not(.eyebrow) { white-space:normal !important; }
}


/* Ajustes finos R7 */
@media screen and (min-width:900px) {
  /* Nas Sínteses, o único scroll de navegação é a lista de alunos; o editor
     permanece estável enquanto houver altura útil suficiente. */
  .content-page-sinteses-descritivas .descriptive-editor { overflow:hidden; }
}
@media screen and (min-width:900px) and (max-width:1199px) {
  .content-page-sinteses-descritivas .descriptive-page-heading > div > p:not(.eyebrow) {
    white-space:normal;
  }
}
@media screen and (min-width:900px) and (max-height:700px) {
  /* Salvaguarda para ecrãs desktop muito baixos. */
  .content-page-turmas,
  .content-page-aulas,
  .content-page-projetos,
  .content-page-sinteses-descritivas,
  .content-page-rubricas,
  .content-page-avaliacao,
  .content-page-agenda {
    height:auto;
    overflow:visible;
    display:block;
  }
  .content-page-sinteses-descritivas .descriptive-editor { overflow:visible; }
}

/* ===== CadProf LOCAL V92 R8 · reconhecimento visual dos alunos ===== */
/* Miniaturas um pouco maiores sem alterar o modelo de dados. */
.student-photo-button {
  width: 40px;
  height: 50px;
  position: relative;
  z-index: 1;
  transition: transform .14s ease, box-shadow .14s ease, z-index 0s;
  transform-origin: left center;
}

.assessment-matrix .student-name > img.student-photo-hover {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  object-fit: cover;
  border-radius: 8px;
}

.descriptive-student-list button {
  grid-template-columns: 27px 36px minmax(0,1fr) 18px;
  gap: 7px;
  padding-top: 6px;
  padding-bottom: 6px;
}
.descriptive-list-photo-slot,
.descriptive-list-photo-fallback {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  flex: 0 0 36px;
}
.descriptive-list-photo-slot {
  display: grid;
  place-items: center;
  position: relative;
  overflow: visible;
}
.descriptive-list-photo-slot > img {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
}
.descriptive-list-photo-fallback {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--blue-soft);
  color: var(--blue-dark);
  font-size: var(--cp-fs-0_62rem, .62rem);
  font-weight: 850;
}
.descriptive-student-header img.descriptive-selected-photo,
.descriptive-student-header .descriptive-avatar {
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
}

.student-photo-hover {
  position: relative;
  z-index: 1;
  cursor: zoom-in;
  transition: transform .14s ease, box-shadow .14s ease, z-index 0s;
  transform-origin: center center;
}

@media (hover:hover) and (pointer:fine) {
  .student-photo-hover:hover {
    z-index: 80;
    transform: scale(2.45);
    box-shadow: 0 8px 24px rgba(28,43,65,.26);
    outline: 2px solid rgba(255,255,255,.95);
    outline-offset: 1px;
  }
  .assessment-matrix .student-name > img.student-photo-hover:hover {
    transform-origin: left center;
    transform: scale(2.7);
  }
  .descriptive-list-photo-slot > img.student-photo-hover:hover {
    transform-origin: left center;
    transform: scale(2.55);
  }
  .descriptive-student-header img.student-photo-hover:hover {
    transform-origin: left top;
    transform: scale(2.25);
  }
  .student-photo-button:hover,
  .student-photo-button:focus-visible {
    z-index: 90;
    transform: scale(2.05);
    box-shadow: 0 8px 24px rgba(28,43,65,.26);
  }
}

@media (hover:none) and (pointer:coarse) {
  .student-photo-hover:active { transform: scale(1.45); z-index: 80; }
  .student-photo-button:active { transform: scale(1.35); z-index: 90; }
}

@media print {
  .student-photo-hover,
  .student-photo-button { transform:none !important; box-shadow:none !important; outline:none !important; }
}


/* ===== CadProf LOCAL V92 R9 · compactação Avaliação + fotos flutuantes + calendário ===== */

/* Projetos registados: cartões de altura própria, mais recente em cima; só o ativo expande. */
.project-library-list {
  align-content:start !important;
  grid-auto-rows:max-content !important;
}
.project-library-item {
  grid-template-columns:34px minmax(0,1fr) !important;
  gap:8px !important;
  min-height:54px !important;
  padding:7px 8px !important;
  align-items:center !important;
}
.project-library-thumb {
  width:34px !important;
  height:42px !important;
  aspect-ratio:4/5 !important;
  border-radius:7px !important;
}
.project-library-copy { gap:2px !important; }
.project-library-item:not(.active) .project-library-copy > span,
.project-library-item:not(.active) .project-library-copy > small { display:none !important; }
.project-library-item:not(.active) .project-library-item-top small { display:block !important; }
.project-library-item:not(.active) .project-library-copy > strong {
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.project-library-item.active { min-height:74px !important; }
.project-library-item.active .project-library-thumb { width:42px !important; height:52px !important; }
.project-library-item.active { grid-template-columns:42px minmax(0,1fr) !important; }

/* Fotografias: miniatura 4:5; a ampliação é desenhada no body e nunca é truncada. */
.assessment-matrix .student-name > img.student-photo-hover {
  width:34px !important; height:42px !important; flex:0 0 34px !important;
  aspect-ratio:4/5; object-fit:cover; border-radius:7px !important;
  transform:none !important; box-shadow:none !important; outline:none !important;
}
.descriptive-list-photo-slot,
.descriptive-list-photo-fallback {
  width:34px !important; height:42px !important; flex:0 0 34px !important; border-radius:7px !important;
}
.descriptive-list-photo-slot > img {
  width:34px !important; height:42px !important; aspect-ratio:4/5; object-fit:cover; border-radius:7px !important;
  transform:none !important; box-shadow:none !important; outline:none !important;
}
.descriptive-student-list button { grid-template-columns:27px 34px minmax(0,1fr) 18px !important; }
.descriptive-student-header img.descriptive-selected-photo {
  width:54px !important; height:68px !important; flex:0 0 54px !important; aspect-ratio:4/5; object-fit:cover; border-radius:9px !important;
  transform:none !important; box-shadow:none !important; outline:none !important;
}
.student-photo-button {
  width:40px !important; height:50px !important; transform:none !important; box-shadow:none !important; z-index:auto !important;
}
.student-photo-button img { width:100%; height:100%; object-fit:cover; border-radius:7px; }
@media (hover:hover) and (pointer:fine) {
  .student-photo-hover:hover,
  .assessment-matrix .student-name > img.student-photo-hover:hover,
  .descriptive-list-photo-slot > img.student-photo-hover:hover,
  .descriptive-student-header img.student-photo-hover:hover,
  .student-photo-button:hover, .student-photo-button:focus-visible {
    transform:none !important; box-shadow:none !important; outline:none !important;
  }
}
.student-photo-float-preview {
  position:fixed; width:132px; height:165px; z-index:2147483000; pointer-events:none;
  opacity:0; transform:translateY(4px) scale(.97); transition:opacity .12s ease,transform .12s ease;
  border:3px solid rgba(255,255,255,.98); border-radius:12px; overflow:hidden;
  background:#fff; box-shadow:0 14px 38px rgba(20,35,55,.32);
}
.student-photo-float-preview.visible { opacity:1; transform:translateY(0) scale(1); }
.student-photo-float-preview img { width:100%; height:100%; display:block; object-fit:cover; }

/* Avaliação: faixa de contexto fina + gaveta animada. */
.assessment-context-compact {
  display:grid; grid-template-columns:minmax(0,1fr) auto; gap:7px; align-items:center;
  min-height:42px; margin-bottom:5px; padding:4px 6px; border:1px solid var(--line);
  border-radius:10px; background:var(--surface);
}
.assessment-context-toggle {
  appearance:none; border:0; background:transparent; color:var(--ink); cursor:pointer;
  display:grid; grid-template-columns:5px minmax(0,1fr) 22px; align-items:center; gap:8px;
  width:100%; min-width:0; padding:3px 5px; text-align:left;
}
.assessment-context-toggle > i { width:5px; height:28px; border-radius:999px; }
.assessment-context-toggle > span { min-width:0; display:grid; grid-template-columns:auto minmax(0,1fr); align-items:baseline; gap:8px; }
.assessment-context-toggle strong { font-size:.77rem; white-space:nowrap; }
.assessment-context-toggle small { color:var(--muted); font-size:.66rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.assessment-context-chevron { justify-self:end; font-size:1rem; color:var(--muted); transition:transform .18s ease; }
.assessment-context-compact:has(.assessment-context-toggle[aria-expanded="true"]) .assessment-context-chevron { transform:rotate(180deg); }
.assessment-change-class { white-space:nowrap; }
.assessment-context-drawer {
  display:block !important; overflow:hidden !important; max-height:0 !important; opacity:0;
  margin:0 !important; padding:0 !important; transform:translateY(-4px); pointer-events:none;
  transition:max-height .22s ease, opacity .16s ease, transform .22s ease, margin .22s ease, padding .22s ease;
}
.assessment-context-drawer.open {
  max-height:390px !important; opacity:1; transform:translateY(0); pointer-events:auto;
  margin:0 0 6px !important; padding:3px 0 5px !important;
}
.assessment-browser.focused { margin-bottom:4px !important; }
.assessment-page-heading.focused { margin-bottom:6px !important; min-height:38px; }
.assessment-page-heading.focused h1 { font-size:24px !important; line-height:1.05 !important; }
@media screen and (min-width:900px) {
  .content-page-avaliacao { padding-top:12px !important; }
  .content-page-avaliacao .assessment-panel { margin-top:2px !important; }
  .content-page-avaliacao .assessment-header {
    min-height:52px !important; padding:7px 11px !important;
    grid-template-columns:minmax(0,1fr) auto !important; gap:8px !important;
  }
  .content-page-avaliacao .assessment-screen-context { grid-column:1 !important; min-width:0; justify-content:flex-start !important; }
  .content-page-avaliacao .assessment-class-context { display:none !important; }
  .content-page-avaliacao .assessment-project-context {
    margin:0 !important; max-width:100% !important; justify-items:start !important; text-align:left !important;
  }
  .content-page-avaliacao .assessment-toolbar { grid-column:2 !important; justify-self:end !important; gap:5px !important; flex-wrap:nowrap !important; }
  .content-page-avaliacao .assessment-toolbar button { padding:6px 8px !important; min-height:34px !important; font-size:.68rem !important; white-space:nowrap; }
  .content-page-avaliacao .assessment-task-tabs { padding:6px 9px 0 !important; gap:5px !important; }
  .content-page-avaliacao .assessment-task-tabs button { min-width:108px !important; padding:5px 8px !important; }
  .content-page-avaliacao .assessment-task-help { margin:4px 9px 6px !important; padding:5px 8px !important; }
}

/* Calendário Escolar: cabeçalho/contexto fixos; só as células/lista deslocam. */
@media screen and (min-width:900px) and (min-height:701px) {
  .content-page-calendario {
    height:calc(100vh - 78px); min-height:0; overflow:hidden; padding-top:18px; padding-bottom:14px;
    display:flex; flex-direction:column;
  }
  .content-page-calendario > .page-heading,
  .content-page-calendario > .calendar-summary,
  .content-page-calendario > .semester-calendar-note { flex:0 0 auto; }
  .content-page-calendario > .page-heading { margin-bottom:8px !important; }
  .content-page-calendario > .calendar-summary { margin-bottom:7px !important; }
  .content-page-calendario > .semester-calendar-note { margin-bottom:7px !important; }
  .content-page-calendario > .calendar-panel {
    flex:1 1 auto; min-height:0; overflow:auto; overscroll-behavior:contain; scrollbar-gutter:stable;
  }
}

/* R9 safeguard: quando a gaveta de contexto de Avaliação está aberta, pode fazer scroll interno se existirem muitos projetos. */
.assessment-context-drawer.open { overflow-y:auto !important; overflow-x:hidden !important; max-height:min(55vh,520px) !important; scrollbar-gutter:stable; }


/* ===== CadProf LOCAL V92 R10 PILOT · transição contextual Avaliação =====
   Piloto: o cartão de turma transforma-se na faixa de contexto sem mudar de página.
   A API View Transitions é progressiva; navegadores sem suporte usam apenas fade/slide. */
@supports (view-transition-name: none) {
  ::view-transition-group(root) {
    animation-duration: .20s;
    animation-timing-function: cubic-bezier(.2,.7,.2,1);
  }
  ::view-transition-group(*) {
    animation-duration: .26s;
    animation-timing-function: cubic-bezier(.2,.7,.2,1);
  }
  ::view-transition-old(*),
  ::view-transition-new(*) {
    mix-blend-mode: normal;
  }
}
@supports not (view-transition-name: none) {
  @media (prefers-reduced-motion: no-preference) {
    .assessment-context-compact { animation: cp-assessment-context-in .22s cubic-bezier(.2,.7,.2,1) both; }
    .assessment-class-tabs { animation: cp-assessment-picker-in .20s ease both; }
  }
}
@keyframes cp-assessment-context-in {
  from { opacity:0; transform:translateY(-7px) scale(.995); }
  to { opacity:1; transform:none; }
}
@keyframes cp-assessment-picker-in {
  from { opacity:0; transform:translateY(-5px); }
  to { opacity:1; transform:none; }
}
@media (prefers-reduced-motion: reduce) {
  .assessment-context-compact,
  .assessment-class-tabs { animation:none !important; transition:none !important; }
}

/* ===== CadProf LOCAL V92 R11 · transição contextual transversal =====
   O seletor de turma transforma-se numa faixa compacta de contexto em módulos de trabalho.
   Turmas e Alunos mantém a grelha de gestão integral para preservar seleção múltipla/duplo clique. */
.cp-module-context-compact {
  display:grid;
  grid-template-columns:5px minmax(0,1fr) 32px;
  align-items:center;
  gap:9px;
  min-height:42px;
  margin:0 0 7px;
  padding:5px 7px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
}
.cp-module-context-compact > i {
  width:5px;
  height:29px;
  border-radius:999px;
}
.cp-module-context-compact > span {
  min-width:0;
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  align-items:baseline;
  gap:8px;
}
.cp-module-context-compact strong {
  font-size:.77rem;
  white-space:nowrap;
}
.cp-module-context-compact small {
  min-width:0;
  color:var(--muted);
  font-size:.66rem;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.cp-context-back {
  appearance:none;
  width:32px;
  height:30px;
  min-width:32px;
  padding:0;
  display:grid;
  place-items:center;
  border:1px solid color-mix(in srgb, var(--line) 60%, white 40%);
  border-radius:10px;
  background:rgba(255,255,255,.96);
  color:var(--ink);
  cursor:pointer;
  font-size:0;
  box-shadow:0 1px 3px rgba(28,43,67,.08);
  transition:transform .14s ease, background .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.cp-context-back::before {
  content:"";
  width:14px;
  height:14px;
  background:center / 14px 14px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M8.75 3.25 5 7l3.75 3.75' fill='none' stroke='%23212f46' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  transform:none;
}
.cp-context-back:hover {
  transform:translateX(-1px);
  background:#fff;
  border-color:color-mix(in srgb, var(--line) 45%, var(--ink) 15%);
  box-shadow:0 2px 6px rgba(28,43,67,.12);
}
.cp-context-back:focus-visible {
  outline:2px solid color-mix(in srgb, var(--blue,#3157d5) 68%, white 32%);
  outline-offset:2px;
}
.assessment-context-compact .cp-context-back { justify-self:end; }
.assessment-change-class { white-space:normal; }

@supports not (view-transition-name: none) {
  @media (prefers-reduced-motion: no-preference) {
    .cp-module-context-compact { animation:cp-context-compact-in .22s cubic-bezier(.2,.7,.2,1) both; }
    .project-class-selector { animation:cp-context-picker-in .20s ease both; }
  }
}
@keyframes cp-context-compact-in {
  from { opacity:0; transform:translateY(-7px) scale(.995); }
  to { opacity:1; transform:none; }
}
@keyframes cp-context-picker-in {
  from { opacity:0; transform:translateY(-5px); }
  to { opacity:1; transform:none; }
}
@media (prefers-reduced-motion: reduce) {
  .cp-module-context-compact,
  .project-class-selector { animation:none !important; transition:none !important; }
}
@media (max-width:720px) {
  .cp-module-context-compact > span { grid-template-columns:1fr; gap:1px; }
  .cp-module-context-compact strong { white-space:normal; }
}

/* R11 · navegação de teclado nas grelhas numéricas: o foco deslocado é bem perceptível. */
table input[type="number"]:focus-visible {
  outline:2px solid color-mix(in srgb, var(--blue,#3157d5) 72%, white 28%);
  outline-offset:1px;
}
