.ce-root{--ce-ink:#20231f;--ce-muted:#666c64;--ce-accent:#8e0006;--ce-line:#dfd9cf;--ce-bg:#faf8f3;color:var(--ce-ink);background:var(--ce-bg);font-family:inherit;max-width:1240px;margin:0 auto;padding:clamp(16px,3vw,36px);min-width:0;line-height:1.9}.ce-root *{box-sizing:border-box}.ce-root h1,.ce-root h2,.ce-root p{margin:0}.ce-root h1{font-size:clamp(25px,3vw,36px);font-weight:800;line-height:1.6}.ce-root h2{font-size:20px;font-weight:750;line-height:1.7}.ce-root button,.ce-button{font:inherit;border:1px solid #cfc7bb;background:#fff;color:var(--ce-ink);border-radius:12px;padding:9px 16px;min-height:44px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;line-height:1.6}.ce-root button:hover:not(:disabled),.ce-button:hover{border-color:var(--ce-accent);background:#f8eeee}.ce-root button:disabled{opacity:.5;cursor:not-allowed}.ce-root :is(button,a,input,select,textarea):focus-visible{outline:3px solid #a84a4d;outline-offset:3px}.ce-root .ce-primary{background:var(--ce-accent);border-color:var(--ce-accent);color:#fff;font-weight:700}.ce-root .ce-primary:hover:not(:disabled){background:#6d0004}.ce-root input:not([type=checkbox]):not([type=radio]),.ce-root textarea,.ce-root select{font:inherit;border:1px solid #cfc7bb;border-radius:11px;background:#fff;color:var(--ce-ink);padding:10px 12px;min-height:44px;max-width:100%;width:100%;min-width:0}.ce-root input[type=checkbox],.ce-root input[type=radio]{accent-color:var(--ce-accent);width:19px;height:19px;flex-shrink:0}.ce-root label{font-size:14px;font-weight:600;display:grid;gap:5px;min-width:0}.ce-root small{font-size:12px;color:var(--ce-muted);display:block}.ce-root a{color:#850006;overflow-wrap:anywhere;text-underline-offset:4px}.ce-header{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:28px}.ce-header p:not(.ce-eyebrow){color:var(--ce-muted);margin-top:8px}.ce-eyebrow{color:var(--ce-accent);font-size:13px;font-weight:700}.ce-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.ce-toolbar{display:flex;gap:16px;align-items:center;justify-content:space-between;margin:0 0 20px}.ce-tabs{display:flex;flex-wrap:wrap;gap:5px;padding:5px;background:#ece7de;border-radius:14px}.ce-tabs button{border-color:transparent;background:transparent}.ce-tabs button[aria-pressed=true]{background:#fff;color:var(--ce-accent);box-shadow:0 2px 5px #0000000a}.ce-count{background:#8e0006;color:#fff;border-radius:20px;min-width:25px;padding:0 6px;font-size:12px}.ce-filters{display:grid;grid-template-columns:1.5fr 1fr 1.5fr;gap:16px;margin:20px 0}.ce-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.ce-card,.ce-panel{border:1px solid var(--ce-line);border-radius:18px;background:#fffdf9;padding:24px;min-width:0}.ce-card{display:flex;flex-direction:column;gap:14px;box-shadow:0 5px 18px #35281905}.ce-card>.ce-primary{align-self:flex-start;margin-top:auto}.ce-card>p{color:var(--ce-muted);overflow-wrap:anywhere}.ce-card-top{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--ce-muted)}.ce-badge{display:inline-flex;align-items:center;width:fit-content;gap:5px;border-radius:20px;background:#eee9e0;padding:3px 11px;font-size:12px;color:#4a4e46}.ce-status-SUBMITTED{background:#e8f0fa;color:#204a73}.ce-status-RETURNED{background:#fff1d9;color:#705006}.ce-status-APPROVED{background:#e7f2e6;color:#2a6026}.ce-muted{color:var(--ce-muted);font-size:13px}.ce-root p.ce-muted{margin:10px 0}.ce-callout{background:#f1ece3;border:1px solid #e4dacc;border-radius:14px;padding:18px;margin:16px 0;line-height:2}.ce-callout button{margin:8px}.ce-error{border:1px solid #e7b8b8;background:#fff3f2;border-radius:12px;padding:12px 16px;color:#8b1216;font-size:14px;overflow-wrap:anywhere}.ce-error button{margin-inline-start:10px}.ce-empty{padding:45px 24px;text-align:center;grid-column:1/-1;color:var(--ce-muted)}.ce-empty h2{color:var(--ce-ink)}.ce-loading{padding:60px;text-align:center;color:var(--ce-muted)}.ce-detail{display:grid;gap:20px}.ce-section-title{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:15px}.ce-details-meta{display:flex;flex-wrap:wrap;gap:16px;color:var(--ce-muted);font-size:12px;border-bottom:1px solid #eee8df;padding-bottom:14px;margin-bottom:18px}.ce-content>p{white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0}.ce-content{display:grid;gap:12px;min-width:0}.ce-asset{border:1px solid var(--ce-line);border-radius:12px;padding:12px;min-width:0;background:#fff}.ce-asset-line{display:flex;align-items:center;gap:12px;min-width:0}.ce-asset-line>span{font-size:24px;color:#8e0006}.ce-asset-line>div:nth-child(2){flex:1;min-width:0}.ce-asset-line strong{font-size:13px;display:block;overflow-wrap:anywhere}.ce-asset-line button{font-size:12px;padding:7px 12px}.ce-asset :is(video,img){display:block;max-width:100%;max-height:65vh;object-fit:contain;margin:12px auto;background:#171917;border-radius:10px}.ce-asset video{width:100%}.ce-audio{display:flex;align-items:center;gap:15px;margin-top:12px;flex-wrap:wrap}.ce-audio audio{width:min(100%,480px);height:48px}.ce-audio label{display:flex;align-items:center;font-size:12px}.ce-audio select{width:auto}.ce-pdf{width:100%;height:60vh;border:0;margin-top:12px}.ce-external{border:1px solid var(--ce-line);border-radius:12px;overflow:hidden;background:#f7f3ed}.ce-external iframe{display:block;aspect-ratio:16/9;width:100%;min-height:200px;border:0}.ce-external>button{display:flex;width:100%;min-height:150px;background:#201e1b;color:#fff;border:0;border-radius:0}.ce-external>a{display:block;padding:8px 14px;font-size:12px}.ce-editor{border:1px solid var(--ce-line);border-radius:15px;background:#fff;padding:14px;display:grid;gap:12px;margin:14px 0}.ce-editor textarea{min-height:150px;resize:vertical;border:0!important;padding:8px!important;line-height:2}.ce-editor-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid #eee8df;padding-top:10px}.ce-recorder{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.ce-recorder audio{max-width:100%;height:42px}.ce-recording{color:#990008;font-size:13px}.ce-link-input{display:flex;gap:8px}.ce-link-input input{flex:1}.ce-link-input button{flex-shrink:0}.ce-link-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f7f3ee;border-radius:8px;padding:8px}.ce-link-row a{font-size:12px;direction:ltr;min-width:0}.ce-upload{padding:12px;border:1px solid #d4dce5;border-radius:10px;background:#f7faff;display:grid;gap:5px}.ce-upload>strong{overflow-wrap:anywhere;font-size:13px}.ce-upload>span{font-size:12px}.ce-upload progress{width:100%;height:9px;accent-color:#8e0006}.ce-editor-asset>button{font-size:12px;margin:5px}.ce-save-state{font-size:12px;color:var(--ce-muted);min-height:28px;margin-bottom:10px}.ce-privacy{font-size:13px;background:#f8f1ef;border-inline-start:3px solid #9e282e;padding:10px 14px;border-radius:6px;color:#643a3b;margin:12px 0!important}.ce-root .ce-check{display:flex;align-items:flex-start;gap:10px;font-weight:500;margin:10px 0}.ce-root fieldset{border:1px solid var(--ce-line);border-radius:12px;padding:12px 16px;margin:16px 0}.ce-root legend{font-weight:700;font-size:14px;padding:0 8px}.ce-roster{max-height:250px;overflow-y:auto;margin-top:10px}.ce-dialog{width:min(800px,calc(100vw - 24px));max-height:90dvh;overflow-y:auto;border:1px solid var(--ce-line);border-radius:20px;background:var(--ce-bg);color:var(--ce-ink);padding:26px;box-shadow:0 20px 70px #0003;font-family:inherit;direction:rtl}.ce-dialog::backdrop{background:#19171499;backdrop-filter:blur(3px)}.ce-dialog>label{margin:14px 0}.ce-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:16px}.ce-dialog-header>button{font-size:26px;padding:3px;width:44px}.ce-dialog footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;border-top:1px solid var(--ce-line);padding-top:18px;margin-top:18px}.ce-dialog footer>span{font-size:12px;color:var(--ce-muted)}.ce-deadline{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin:16px 0}.ce-deadline>label:first-child{flex:1;min-width:200px}.ce-deadline>label:nth-child(2){width:145px}.ce-deadline>small{width:100%}.ce-teacher-bar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;border-top:1px solid var(--ce-line);padding-top:18px;margin-top:20px}.ce-teacher-bar>label{flex:1;min-width:160px}.ce-feedback{border-inline-start:3px solid #8e0006;border-radius:8px;background:#f5eee9;padding:16px;margin-top:18px}.ce-feedback>time{display:block;font-size:12px;color:var(--ce-muted)}.ce-messages{display:grid;gap:12px;max-height:75vh;overflow-y:auto;padding:8px 0;margin:12px 0 20px;overscroll-behavior:contain}.ce-message{background:#f4f0e8;border:1px solid #e6dfd3;border-radius:14px;padding:16px;max-width:94%;min-width:0}.ce-message.ce-mine{background:#faf1f1;border-color:#ead2d2;margin-inline-start:auto}.ce-message-head{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:13px;margin-bottom:8px}.ce-message-head time{font-size:11px;color:var(--ce-muted)}.ce-notifications{display:grid;gap:10px}.ce-notifications>button{display:flex;justify-content:space-between;gap:15px;text-align:right;padding:18px;background:#fff}.ce-notifications time{font-size:12px;color:var(--ce-muted)}.ce-notifications .ce-unread{border-inline-start:4px solid #8e0006;background:#fff7f5}.ce-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:700px){.ce-root{padding:16px 12px}.ce-header{gap:16px;margin-bottom:22px}.ce-header>.ce-actions{width:100%}.ce-header>.ce-actions>*{flex:1}.ce-filters{grid-template-columns:1fr 1fr;gap:10px}.ce-filters>label:last-child{grid-column:1/-1}.ce-grid{grid-template-columns:1fr}.ce-card,.ce-panel{padding:18px 14px;border-radius:14px}.ce-section-title>.ce-tabs{width:100%}.ce-asset-line{flex-wrap:wrap;gap:8px}.ce-asset-line>.ce-actions{width:100%;justify-content:flex-end}.ce-message{max-width:100%;padding:12px}.ce-link-input{flex-wrap:wrap}.ce-link-input input{min-width:100%}.ce-link-input button{width:100%}.ce-dialog{padding:20px 14px;border-radius:16px}.ce-dialog footer>button{width:100%}.ce-notifications>button{flex-wrap:wrap}.ce-detail h2{font-size:18px}.ce-external iframe{min-height:200px}.ce-root .ce-primary{min-height:48px}.ce-root .ce-recorder button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.ce-root *{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
.ce-wave{width:100px;height:28px;color:#9b0008;flex-shrink:0}.ce-wave polyline{stroke:currentColor;stroke-width:1.8;fill:none}
.ce-root fieldset.ce-form-fields{border:0;padding:0;margin:0;min-width:0}.ce-form-fields>label{margin:14px 0}.ce-recorder>p{flex-basis:100%}.ce-dialog{scroll-padding-block:90px 120px}.ce-dialog-header{position:sticky;top:-26px;z-index:3;background:var(--ce-bg);padding-block:10px}.ce-dialog footer{position:sticky;bottom:-26px;z-index:2;background:var(--ce-bg);padding-bottom:10px}.ce-detail>.ce-actions{justify-content:flex-end;margin-bottom:10px}
@media(max-width:700px){.ce-dialog-header{top:-20px}.ce-dialog footer{bottom:-20px}.ce-dialog .ce-recorder{width:100%}.ce-dialog footer>span{flex-basis:100%}}
.ce-confirm{width:min(520px,calc(100vw - 24px))}.ce-confirm-message{white-space:pre-wrap;line-height:2;margin:16px 0!important}.ce-confirm>.ce-actions{justify-content:flex-end}.ce-confirm>.ce-actions>button{flex:1}

.video-jalali-calendar {
  --j-line: var(--line, var(--ws-line, #d5e0eb));
  --j-bg: var(--surface, var(--ws-panel, #fff));
  --j-text: var(--ink, var(--ws-text, #15263a));
  --j-blue: var(--primary, var(--ws-blue, #2563eb));
}

.video-jalali-picker {
  position: relative;
  min-width: 0;
}

.video-jalali-trigger {
  cursor: pointer;
}

/* Nested calendars use the top layer; ordinary calendars portal to the body. */
.video-jalali-calendar {
  position: fixed;
  z-index: 2147483600;
  width: min(348px, calc(100vw - 16px));
  max-height: calc(100dvh - 16px);
  padding: 10px;
  overflow-y: auto;
  border: 1px solid var(--j-line);
  border-radius: 12px;
  color: var(--j-text);
  background: var(--j-bg);
  direction: rtl;
  font: inherit;
  box-sizing: border-box;
}

/* Override the browser's default centered popover box. Coordinates come from
   the trigger's viewport rect, independently of modal transforms and scroll. */
.video-jalali-calendar[popover] {
  inset: auto;
  margin: 0;
}

/* Older browsers keep the calendar in the form's scroll flow. */
.video-jalali-calendar.is-inline {
  position: relative;
  width: min(348px, 100%);
  max-height: min(460px, calc(100dvh - 32px));
  margin-block-start: 8px;
}

.video-jalali-calendar * {
  box-sizing: border-box;
}

.video-jalali-calendar > header {
  display: grid;
  grid-template-columns: 34px 1fr 34px;
  align-items: center;
  text-align: center;
}

.video-jalali-calendar button {
  border: 0;
  color: var(--j-text);
  background: transparent;
  cursor: pointer;
  font: inherit;
}

.video-jalali-weekdays,
.video-jalali-days {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}

.video-jalali-weekdays {
  padding: 5px 0;
  border-bottom: 1px solid var(--j-line);
  font-size: .6875rem;
  text-align: center;
}

.video-jalali-days {
  gap: 3px;
}

.video-jalali-days > * {
  aspect-ratio: 1;
}

.video-jalali-days > button {
  display: grid;
  padding: 0;
  place-items: center;
  border: 1px solid transparent;
  border-radius: 6px;
  font-size: .75rem;
}

.video-jalali-days > button.selected {
  color: #fff;
  background: var(--j-blue);
}

.video-jalali-calendar button:disabled {
  cursor: not-allowed;
  opacity: .3;
}

.video-jalali-calendar > footer {
  display: flex;
  justify-content: space-between;
  border-top: 1px solid var(--j-line);
  font-size: .6875rem;
}
.video-jalali-jump { display: flex; gap: 4px; min-width: 0; }
.video-jalali-jump select { width: 50%; min-width: 0; color: var(--j-text); background: var(--j-bg); border: 1px solid var(--j-line); border-radius: 8px; padding: 6px; font: inherit; }

/* Explicit ownership survives body portals, nested popovers and fullscreen.
   The ID in :is raises specificity over the older Workspace control rules;
   :root also matches calendars outside #workspace-root. */
:is(#workspace-root, :root) [data-calendar-context="class-management"] {
  --calendar-bg: #ffffff;
  --calendar-soft: #f3f3f3;
  --calendar-text: #202020;
  --calendar-muted: #555555;
  --calendar-line: #858585;
  --calendar-accent: #790003;
  --calendar-hover: #fff0f0;
  --calendar-selected: #960004;
  --calendar-on-selected: #ffffff;
  --calendar-disabled: #666666;
  --calendar-disabled-bg: #eeeeee;
  --j-bg: var(--calendar-bg);
  --j-text: var(--calendar-text);
  --j-line: var(--calendar-line);
  --j-blue: var(--calendar-selected);
  color-scheme: light;
}
:is(#workspace-root, :root) [data-calendar-context="class-management"][data-calendar-theme="dark"] {
  --calendar-bg: #171717;
  --calendar-soft: #262626;
  --calendar-text: #f5f5f5;
  --calendar-muted: #c9c9c9;
  --calendar-line: #777777;
  --calendar-accent: #ffb4b8;
  --calendar-hover: #382025;
  --calendar-disabled: #a3a3a3;
  --calendar-disabled-bg: #202020;
  color-scheme: dark;
}
:is(#workspace-root, :root) .video-jalali-picker[data-calendar-context="class-management"] .video-jalali-trigger {
  color: var(--calendar-text);
  -webkit-text-fill-color: currentColor;
  background: var(--calendar-bg);
  border-color: var(--calendar-line);
}
:is(#workspace-root, :root) .video-jalali-picker[data-calendar-context="class-management"] .video-jalali-trigger > span {
  color: inherit;
  -webkit-text-fill-color: currentColor;
}
:is(#workspace-root, :root) .video-jalali-picker[data-calendar-context="class-management"] .video-jalali-trigger > .video-icon {
  color: var(--calendar-accent);
}
:is(#workspace-root, :root) .video-jalali-picker[data-calendar-context="class-management"] .video-jalali-trigger > i {
  border-color: var(--calendar-muted);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] {
  color: var(--calendar-text);
  background: var(--calendar-bg);
  border-color: var(--calendar-line);
  box-shadow: 0 18px 48px rgb(0 0 0 / 40%);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] :is(header, footer) {
  color: var(--calendar-text);
  background: var(--calendar-bg);
  border-color: var(--calendar-line);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] :is(header strong, .video-jalali-jump select, .video-jalali-jump option, button) {
  color: var(--calendar-text);
  -webkit-text-fill-color: currentColor;
  border-color: var(--calendar-line);
  background: var(--calendar-bg);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] :is(header, footer) > button {
  color: var(--calendar-text);
  background: var(--calendar-soft);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] .video-jalali-weekdays {
  border-color: var(--calendar-line);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] :is(.video-jalali-weekdays span, footer span) {
  color: var(--calendar-muted);
  -webkit-text-fill-color: currentColor;
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] .video-jalali-days > button {
  border-color: transparent;
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] button:hover:not(:disabled) {
  color: var(--calendar-accent);
  background: var(--calendar-hover);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] .video-jalali-days > button.today {
  color: var(--calendar-accent);
  border-color: var(--calendar-accent);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] .video-jalali-days > button.selected {
  color: var(--calendar-on-selected);
  background: var(--calendar-selected);
  border-color: var(--calendar-accent);
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] button:disabled,
:is(#workspace-root, :root) .video-jalali-picker[data-calendar-context="class-management"] .video-jalali-trigger:disabled {
  color: var(--calendar-disabled);
  -webkit-text-fill-color: currentColor;
  background: var(--calendar-disabled-bg);
  border-color: transparent;
  opacity: 1;
  cursor: not-allowed;
}
:is(#workspace-root, :root) .video-jalali-calendar[data-calendar-context="class-management"] :is(button, select):focus-visible,
:is(#workspace-root, :root) .video-jalali-picker[data-calendar-context="class-management"] .video-jalali-trigger:focus-visible {
  outline: 2px solid var(--calendar-accent);
  outline-offset: 2px;
  box-shadow: none;
}
