@import url("/fonts.css");
:root {
  color-scheme: dark;
  --bg: #121416;
  --panel: #181b1e;
  --panel2: #1e2226;
  --panel3: #24292e;
  --line: #2b3035;
  --text: #eeeef0;
  --muted: #969da6;
  --soft: #69737d;
  --accent: #d8b765;
  --accent-bg: #d8b76515;
  --green: #8abc9b;
  --danger: #ed969e;
  font-family:
    "Inter",
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
  font-size: 15px;
  font-synthesis: none;
}
:root[data-theme="light"] {
  color-scheme: light;
  --bg: #f5f5f3;
  --panel: #ffffff;
  --panel2: #f0f0ed;
  --panel3: #e7e8e3;
  --line: #dcdfda;
  --text: #22292d;
  --muted: #68716e;
  --soft: #879087;
  --accent: #87661f;
  --accent-bg: #87661f10;
  --green: #357448;
  --danger: #b13544;
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
  color: var(--text);
  background: var(--bg);
  line-height: 1.5;
}
button,
input,
select,
textarea {
  font: inherit;
}
button,
a,
input,
select,
textarea {
  -webkit-tap-highlight-color: transparent;
}
button {
  cursor: pointer;
  color: inherit;
  border: 0;
  background: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border-radius: 7px;
  transition:
    background 0.14s,
    transform 0.14s;
  padding: 9px 13px;
  font-size: 0.82rem;
  font-weight: 500;
  min-height: 38px;
}
button:hover {
  background: var(--panel3);
}
button:active {
  transform: translateY(1px);
}
button:disabled {
  opacity: 0.45;
  cursor: wait;
}
a {
  color: var(--accent);
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}
svg {
  width: 18px;
  height: 18px;
  stroke-width: 1.65;
  flex-shrink: 0;
}
h1,
h2,
h3,
p {
  margin: 0;
}
h1 {
  font-size: 2.13rem;
  font-weight: 570;
  letter-spacing: -0.055em;
  line-height: 1.2;
}
h2 {
  font-size: 1.05rem;
  font-weight: 570;
  letter-spacing: -0.025em;
}
h3 {
  font-size: 0.96rem;
  font-weight: 550;
}
small,
.hint {
  font-size: 0.73rem;
  color: var(--muted);
}
.muted {
  color: var(--muted);
}
.hint {
  margin: 10px 0;
  line-height: 1.6;
}
.eyebrow {
  font-size: 0.65rem;
  letter-spacing: 0.14em;
  font-weight: 550;
  color: var(--muted);
  margin-bottom: 11px;
}
.primary {
  background: var(--accent);
  color: #191813;
  font-weight: 650;
}
.primary:hover {
  background: color-mix(in srgb, var(--accent), white 12%);
}
.secondary {
  border: 1px solid var(--line);
  background: var(--panel2);
}
.danger {
  background: #9b364339;
  color: var(--danger);
  border: 1px solid #b34a5755;
}
.icon-btn {
  padding: 8px;
  width: 36px;
  min-width: 36px;
  height: 36px;
  min-height: 36px;
  color: var(--muted);
}
.text-btn {
  font-size: 0.76rem;
  color: var(--muted);
  padding: 6px 8px;
  min-height: 30px;
}
.text-btn:hover {
  color: var(--text);
}
.full-width {
  width: 100%;
  margin-top: 18px;
}
.avatar {
  width: 35px;
  height: 35px;
  min-width: 35px;
  border-radius: 50%;
  background: color-mix(
    in srgb,
    var(--avatar, var(--accent)),
    var(--panel) 84%
  );
  color: var(--avatar, var(--accent));
  display: inline-flex;
  align-items: center;
  justify-content: center;
  object-fit: cover;
  font-size: 0.73rem;
  font-weight: 650;
}
.avatar.large {
  width: 76px;
  height: 76px;
  font-size: 1.6rem;
}
.course-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  flex-shrink: 0;
  border-radius: 2px;
}
.live-dot,
.online-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--green);
  display: inline-block;
}
#sidebar {
  width: 232px;
  position: fixed;
  inset: 0 auto 0 0;
  border-right: 1px solid var(--line);
  background: var(--panel);
  display: flex;
  flex-direction: column;
  z-index: 10;
  padding: 30px 17px 18px;
}
.school-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  margin: 0 7px 32px;
  font-weight: 720;
  font-size: 0.86rem;
  letter-spacing: 0.045em;
  line-height: 1.35;
}
.school-brand:hover {
  text-decoration: none;
}
.school-brand img {
  width: 37px;
  height: 44px;
  object-fit: contain;
}
.school-brand small {
  display: block;
  font-weight: 450;
  font-size: 0.51rem;
  color: var(--muted);
  letter-spacing: 0.14em;
  margin-top: 4px;
}
.school-label {
  font-size: 0.55rem;
  color: var(--soft);
  letter-spacing: 0.1em;
  display: flex;
  justify-content: space-between;
  padding: 0 10px;
  margin-bottom: 15px;
}
.school-label span {
  color: var(--muted);
}
#sidebar nav {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
#sidebar button {
  justify-content: flex-start;
  color: var(--muted);
  width: 100%;
  padding: 10px 12px;
  gap: 12px;
  font-weight: 450;
  min-height: 42px;
}
#sidebar button small {
  margin-left: auto;
  background: var(--panel3);
  padding: 1px 7px;
  border-radius: 4px;
  font-size: 0.67rem;
  color: var(--muted);
}
#sidebar button.active {
  background: var(--accent-bg);
  color: var(--accent);
}
#sidebar button.active small {
  background: #d8b76520;
  color: var(--accent);
}
.sidebar-course-label {
  display: flex;
  justify-content: space-between;
  font-size: 0.58rem;
  letter-spacing: 0.08em;
  color: var(--soft);
  margin: 36px 12px 9px;
}
.sidebar-course-label span {
  font-size: 0.54rem;
}
#sidebar .sidebar-courses button {
  font-size: 0.75rem;
  min-height: 34px;
  padding: 8px 12px;
}
.sidebar-bottom {
  margin-top: auto;
  padding-top: 25px;
}
.student-mini {
  display: flex;
  gap: 10px;
  align-items: center;
  margin: 16px 7px 0;
  padding-top: 20px;
  border-top: 1px solid var(--line);
  cursor: pointer;
}
.student-mini > span:nth-child(2) {
  font-size: 0.75rem;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}
.student-mini small {
  display: block;
  font-size: 0.61rem;
  margin-top: 3px;
}
.student-mini > svg {
  width: 14px;
  color: var(--soft);
}
.app-main {
  margin-left: 232px;
}
.topbar {
  height: 73px;
  border-bottom: 1px solid var(--line);
  display: flex;
  align-items: center;
  padding: 0 36px;
  justify-content: space-between;
  gap: 15px;
}
.breadcrumb {
  display: flex;
  align-items: center;
  gap: 13px;
  font-size: 0.72rem;
  color: var(--soft);
}
.breadcrumb svg {
  width: 12px;
  height: 12px;
}
.breadcrumb span {
  color: var(--muted);
}
.topbar-right {
  display: flex;
  gap: 24px;
  align-items: center;
}
.term {
  font-size: 0.68rem;
  color: var(--muted);
  display: flex;
  gap: 10px;
  align-items: center;
}
.search-shortcut {
  font-weight: 400;
  color: var(--soft);
  font-size: 0.65rem;
  gap: 10px;
  padding: 6px 10px;
  background: var(--panel);
  border: 1px solid var(--line);
  min-height: 32px;
}
.search-shortcut svg {
  width: 14px;
}
kbd {
  font: 10px system-ui;
  background: var(--panel2);
  border: 1px solid var(--line);
  border-radius: 3px;
  padding: 1px 5px;
}
.search-shortcut kbd {
  margin-left: 24px;
}
#menuBtn {
  display: none;
}
#content {
  max-width: 1480px;
  margin: 0 auto;
  padding: 37px 38px 54px;
  min-height: calc(100dvh - 121px);
  outline: none;
  animation: appear 0.2s ease;
}
.page-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 28px;
}
.page-heading p {
  font-size: 0.79rem;
  color: var(--muted);
  margin-top: 11px;
}
.page-heading > button {
  white-space: nowrap;
}
.overview-banner {
  border: 1px solid var(--line);
  border-radius: 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 31px 35px;
  margin-bottom: 32px;
  background: linear-gradient(
    100deg,
    var(--panel) 50%,
    color-mix(in srgb, var(--accent), var(--panel) 96%)
  );
  gap: 20px;
}
.overview-banner .eyebrow {
  font-size: 0.56rem;
  color: var(--accent);
}
.overview-banner h2 {
  font-size: 1.6rem;
  letter-spacing: -0.045em;
  font-weight: 500;
}
.overview-banner p {
  font-size: 0.77rem;
  margin: 8px 0 22px;
  color: var(--muted);
}
.overview-banner .primary {
  font-size: 0.75rem;
  padding: 10px 16px;
}
.quarter-ring {
  width: 132px;
  height: 132px;
  min-width: 132px;
  padding: 4px;
  background: conic-gradient(var(--accent) var(--pct), var(--line) 0);
  border-radius: 50%;
  margin-right: 25px;
}
.quarter-ring > div {
  width: 100%;
  height: 100%;
  background: var(--panel);
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.quarter-ring strong {
  font-size: 2rem;
  font-weight: 550;
  letter-spacing: -0.06em;
}
.quarter-ring strong span {
  font-size: 0.88rem;
  font-weight: 400;
  color: var(--muted);
  letter-spacing: 0;
}
.quarter-ring small {
  font-size: 0.54rem;
  margin-top: 4px;
}
.dashboard-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 250px;
  gap: 29px;
}
.section-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}
.section-heading h2 {
  display: flex;
  align-items: center;
  gap: 10px;
}
.section-heading h2 > span {
  font-size: 0.62rem;
  background: var(--panel2);
  color: var(--muted);
  padding: 2px 6px;
  border-radius: 4px;
}
.section-heading .muted {
  font-size: 0.73rem;
}
.below {
  margin-top: 31px;
}
.assignment-list {
  border-top: 1px solid var(--line);
}
.assignment-row {
  display: flex;
  width: 100%;
  border-radius: 0;
  text-align: left;
  padding: 16px 0;
  gap: 12px;
  border-bottom: 1px solid var(--line);
  min-width: 0;
}
.assignment-row:hover {
  background: var(--panel);
}
.assignment-icon {
  width: 34px;
  height: 38px;
  min-width: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  background: color-mix(in srgb, var(--course), transparent 90%);
  color: var(--course);
}
.assignment-name {
  flex: 1;
  min-width: 0;
}
.assignment-name strong {
  display: block;
  font-size: 0.75rem;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.assignment-name small {
  display: block;
  font-size: 0.61rem;
  margin-top: 5px;
}
.assignment-name small span {
  margin: 0 5px;
  color: var(--soft);
}
.row-due {
  font-size: 0.67rem;
  font-weight: 400;
  white-space: nowrap;
  color: var(--muted);
  min-width: 43px;
  text-align: right;
}
.row-due small {
  font-size: 0.57rem;
  display: block;
  margin-top: 4px;
  color: var(--soft);
}
.status {
  font-size: 0.55rem;
  border-radius: 4px;
  padding: 3px 7px;
  font-weight: 400;
  white-space: nowrap;
  color: var(--muted);
  background: var(--panel2);
  margin-left: 8px;
}
.status.progress {
  color: var(--accent);
  background: var(--accent-bg);
}
.status.complete {
  color: var(--green);
  background: #8abc9b12;
}
.assignment-row > svg {
  width: 12px;
  height: 12px;
  color: var(--soft);
}
.course-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.course-card {
  display: block;
  text-align: left;
  background: var(--panel);
  border: 1px solid var(--line);
  padding: 20px 16px 15px;
  border-radius: 8px;
  min-width: 0;
}
.course-card:hover {
  border-color: color-mix(in srgb, var(--course), var(--line) 50%);
  transform: translateY(-2px);
  background: var(--panel2);
}
.course-card-top {
  display: flex;
  align-items: center;
  gap: 9px;
}
.course-symbol {
  display: flex;
  color: var(--course);
}
.course-symbol svg {
  width: 22px;
  height: 22px;
}
.course-card-top small {
  font-size: 0.51rem;
  letter-spacing: 0.06em;
  color: var(--soft);
}
.course-card-top > svg {
  width: 13px;
  height: 13px;
  color: var(--soft);
  margin-left: auto;
}
.course-card h3 {
  margin-top: 20px;
  font-size: 0.9rem;
}
.course-card p {
  font-size: 0.64rem;
  font-weight: 400;
  color: var(--muted);
  line-height: 1.6;
  margin: 7px 0 22px;
  min-height: 2.6em;
}
.course-progress {
  height: 3px;
  background: var(--line);
  border-radius: 2px;
}
.course-progress span {
  height: 3px;
  background: var(--course);
  display: block;
}
.course-card-bottom {
  display: flex;
  justify-content: space-between;
  font-size: 0.52rem;
  color: var(--soft);
  font-weight: 400;
  margin-top: 10px;
}
.all-courses {
  gap: 20px;
}
.all-courses .course-card {
  padding: 27px 25px 22px;
}
.all-courses .course-card h3 {
  font-size: 1.15rem;
}
.all-courses .course-card p {
  font-size: 0.78rem;
}
.all-courses .course-card-bottom {
  font-size: 0.64rem;
}
.focus-panel {
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 23px 21px;
  background: var(--panel);
  margin-top: 1px;
}
.focus-panel .eyebrow {
  font-size: 0.54rem;
  color: var(--accent);
}
.focus-panel h3 {
  font-size: 1.07rem;
  letter-spacing: -0.03em;
}
.focus-panel p {
  font-size: 0.7rem;
  color: var(--muted);
  margin-top: 9px;
  line-height: 1.7;
}
.focus-panel #focusTime {
  font-size: 2.8rem;
  font-weight: 350;
  letter-spacing: -0.06em;
  margin: 23px 0 19px;
  font-variant-numeric: tabular-nums;
}
.focus-buttons {
  display: flex;
  gap: 8px;
}
.focus-buttons .primary {
  flex: 1;
  font-size: 0.71rem;
}
.focus-panel > small {
  display: block;
  font-size: 0.58rem;
  margin-top: 18px;
}
.week-note {
  padding: 28px 7px;
}
.tiny-label {
  font-size: 0.54rem;
  color: var(--soft);
  letter-spacing: 0.12em;
}
.week-note h3 {
  font-size: 0.93rem;
  margin-top: 12px;
}
.week-note p {
  font-size: 0.71rem;
  line-height: 1.75;
  color: var(--muted);
  margin: 9px 0 18px;
}
.week-note > div {
  font-size: 0.62rem;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 12px 0;
}
.week-note svg {
  width: 12px;
  height: 12px;
  color: var(--accent);
}
.site-footer {
  max-width: 1480px;
  margin: auto;
  padding: 17px 38px;
  font-size: 0.58rem;
  color: var(--soft);
  display: flex;
  justify-content: space-between;
  gap: 15px;
  border-top: 1px solid var(--line);
}
.filter-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 15px;
  margin-bottom: 25px;
}
.tabs {
  display: flex;
  gap: 3px;
  padding: 4px;
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 8px;
}
.tabs button {
  min-height: 30px;
  font-size: 0.74rem;
  color: var(--muted);
  padding: 6px 14px;
}
.tabs .active {
  background: var(--panel3);
  color: var(--text);
}
input:not([type="checkbox"], [type="radio"], [type="file"]),
select,
textarea {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 10px 12px;
  color: var(--text);
  font-size: 0.84rem;
  max-width: 100%;
}
select {
  padding-right: 28px;
}
input::placeholder,
textarea::placeholder {
  color: var(--soft);
}
textarea {
  resize: vertical;
  width: 100%;
  line-height: 1.7;
}
label {
  font-size: 0.8rem;
  color: var(--muted);
}
label > input:not([type="checkbox"], [type="radio"], [type="file"]) {
  display: block;
  width: 100%;
  margin-top: 7px;
}
form > label {
  display: block;
  margin: 19px 0;
}
input[type="checkbox"],
input[type="radio"] {
  accent-color: var(--accent);
}
.switch {
  appearance: none;
  width: 34px;
  min-width: 34px;
  height: 20px;
  border-radius: 20px;
  background: var(--panel3);
  position: relative;
  cursor: pointer;
  border: 1px solid var(--line);
}
.switch::after {
  content: "";
  position: absolute;
  width: 14px;
  height: 14px;
  background: var(--muted);
  top: 2px;
  left: 2px;
  border-radius: 50%;
  transition: transform 0.16s;
}
.switch:checked {
  background: var(--accent);
  border-color: var(--accent);
}
.switch:checked::after {
  background: #191813;
  transform: translateX(14px);
}
.large-course-icon {
  display: flex;
  width: 64px;
  height: 64px;
  align-items: center;
  justify-content: center;
  background: color-mix(in srgb, var(--course), transparent 90%);
  color: var(--course);
  border-radius: 10px;
}
.large-course-icon svg {
  width: 32px;
  height: 32px;
}
.course-unit {
  padding: 24px 0 28px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  margin-bottom: 28px;
}
.course-unit .eyebrow {
  display: block;
}
.course-unit h2 {
  font-size: 1.4rem;
}
.course-unit p {
  font-size: 0.8rem;
  color: var(--muted);
  margin-top: 10px;
}
.notebook {
  min-height: 190px;
  background: var(--panel);
  padding: 20px;
}
.stat-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  margin: 36px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding: 28px 0;
}
.stat-strip > div {
  border-right: 1px solid var(--line);
  padding-left: 28px;
}
.stat-strip > div:first-child {
  padding-left: 0;
}
.stat-strip > div:last-child {
  border: 0;
}
.stat-strip strong {
  display: block;
  font-size: 2rem;
  font-weight: 450;
  letter-spacing: -0.04em;
}
.stat-strip strong span {
  font-size: 1rem;
  color: var(--muted);
}
.stat-strip small {
  display: block;
  margin-top: 9px;
}
.progress-table .table-header,
.progress-table > button {
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr;
  text-align: left;
  width: 100%;
  gap: 15px;
  padding: 18px 14px;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  font-size: 0.8rem;
}
.table-header {
  font-size: 0.67rem !important;
  color: var(--soft);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.progress-table > button > span {
  display: flex;
  align-items: center;
  gap: 14px;
}
.mini-progress {
  display: block;
  height: 4px;
  width: 70px;
  background: var(--line);
}
.mini-progress i {
  display: block;
  background: var(--accent);
  height: 100%;
}
.resource-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 35px;
}
.resource-list > a {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 27px 0;
  border-bottom: 1px solid var(--line);
  color: var(--text);
}
.resource-list > a:hover {
  text-decoration: none;
}
.resource-list p {
  font-size: 0.76rem;
  color: var(--muted);
  margin: 8px 0;
}
.resource-list small {
  font-size: 0.65rem;
}
.resource-list > a > svg {
  margin-left: auto;
  color: var(--soft);
  width: 16px;
}
.settings-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
}
.settings-section > h2 {
  margin: 22px 0 14px;
  font-size: 0.89rem;
}
.setting-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  min-height: 76px;
  padding: 15px 0;
  border-bottom: 1px solid var(--line);
}
.setting-row strong {
  display: block;
  color: var(--text);
  font-weight: 450;
  font-size: 0.81rem;
}
.setting-row small {
  display: block;
  margin-top: 5px;
  font-size: 0.67rem;
  line-height: 1.6;
}
.setting-row select,
.setting-row input:not([type="checkbox"]) {
  width: 145px;
  min-width: 100px;
  font-size: 0.75rem;
  margin: 0;
}
.connection-panel {
  border: 1px solid var(--line);
  padding: 24px;
  border-radius: 9px;
  background: var(--panel);
}
.connection-icon {
  display: flex;
  color: var(--accent);
  margin-bottom: 18px;
}
.connection-icon svg {
  width: 27px;
  height: 27px;
}
.connection-panel h3 {
  font-size: 1.15rem;
}
.connection-panel p {
  font-size: 0.75rem;
  color: var(--muted);
  margin: 9px 0 20px;
  max-width: 290px;
}
.connection-panel .secondary {
  margin-top: 10px;
}
.data-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.data-actions button {
  font-size: 0.7rem;
}
.about-workspace {
  border-top: 1px solid var(--line);
  margin-top: 26px;
  padding-top: 22px;
  font-size: 0.7rem;
}
.about-workspace strong {
  font-weight: 500;
}
.about-workspace p {
  color: var(--muted);
  line-height: 1.75;
  margin: 9px 0 13px;
}
.about-workspace a {
  display: inline-flex;
  gap: 7px;
  align-items: center;
}
.about-workspace svg {
  width: 12px;
}
.calendar-heading {
  display: flex;
  gap: 14px;
  align-items: center;
  margin-bottom: 20px;
}
.calendar-heading h2 {
  min-width: 155px;
  text-align: center;
}
.calendar-heading .text-btn {
  margin-left: auto;
}
.calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  border-left: 1px solid var(--line);
  border-top: 1px solid var(--line);
  overflow: hidden;
  border-radius: 8px;
}
.calendar > div {
  border-bottom: 1px solid var(--line);
  border-right: 1px solid var(--line);
}
.day-name {
  padding: 12px 10px;
  color: var(--muted);
  font-size: 0.68rem;
  background: var(--panel);
}
.day {
  min-height: 125px;
  padding: 9px;
  font-size: 0.71rem;
}
.day > span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 25px;
  height: 25px;
  margin-bottom: 5px;
}
.day.today > span {
  background: var(--accent);
  color: var(--bg);
  border-radius: 50%;
}
.day.blank {
  background: var(--panel);
}
.day > button {
  width: 100%;
  display: block;
  text-align: left;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: 0.58rem;
  color: var(--course);
  background: color-mix(in srgb, var(--course), transparent 91%);
  margin: 4px 0;
  padding: 6px;
  min-height: 25px;
  border-radius: 3px;
}
.day > button small {
  display: block;
  font-size: 0.5rem;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
}
.personal-tasks > div {
  display: flex;
  gap: 20px;
  align-items: center;
  border-bottom: 1px solid var(--line);
  padding: 12px 0;
}
.personal-tasks label {
  display: flex;
  gap: 12px;
  align-items: center;
  flex: 1;
  color: var(--text);
}
.personal-tasks .done {
  text-decoration: line-through;
  color: var(--soft);
}
.empty {
  padding: 40px;
  text-align: center;
  color: var(--muted);
  font-size: 0.83rem;
}
#toasts {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 100;
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-width: min(400px, calc(100vw - 36px));
  pointer-events: none;
}
.toast {
  padding: 14px 18px;
  background: var(--panel3);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 8px 40px #0005;
  font-size: 0.82rem;
  animation: appear 0.15s ease;
}
dialog {
  background: var(--panel);
  color: var(--text);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 0;
  width: min(490px, calc(100vw - 24px));
  max-height: 90dvh;
  box-shadow: 0 28px 100px #0006;
}
dialog.wide {
  width: min(1080px, calc(100vw - 28px));
}
dialog::backdrop {
  background: #0008;
  backdrop-filter: blur(4px);
}
.modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 20px 25px;
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  background: var(--panel);
  z-index: 2;
}
.modal-head h2 {
  font-size: 1.05rem;
}
.modal-body {
  padding: 25px;
}
.modal-body > p {
  font-size: 0.85rem;
  line-height: 1.7;
}
.modal-body > label {
  display: block;
  margin: 20px 0;
}
.modal-body > textarea {
  min-height: 140px;
}
.modal-body > .primary,
.modal-body > .secondary,
.modal-body > .danger {
  margin: 12px 5px 0 0;
}
.assignment-meta {
  display: flex;
  align-items: center;
  gap: 20px;
  border-bottom: 1px solid var(--line);
  padding-bottom: 20px;
  font-size: 0.68rem;
  color: var(--muted);
  flex-wrap: wrap;
}
.assignment-meta > span {
  display: flex;
  align-items: center;
  gap: 6px;
}
.assignment-meta svg {
  width: 13px;
  height: 13px;
}
.assignment-work {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 34px;
  margin-top: 24px;
}
.lesson h3,
.response-work h3 {
  font-size: 0.91rem;
  margin-bottom: 12px;
}
.lesson p {
  font-size: 0.84rem;
  line-height: 1.85;
  color: var(--muted);
  margin-bottom: 18px;
  white-space: pre-line;
}
.lesson h3:not(:first-child) {
  margin-top: 25px;
}
.lesson ol {
  padding-left: 20px;
  font-size: 0.8rem;
  color: var(--muted);
  line-height: 1.8;
}
.lesson li {
  padding-left: 5px;
  margin-bottom: 12px;
}
.resource-link {
  font-size: 0.71rem;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.resource-link svg {
  width: 12px;
}
.criteria {
  list-style: none;
  padding: 0;
}
.criteria li {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 0.75rem;
  color: var(--muted);
}
.criteria svg {
  width: 14px;
  color: var(--accent);
}
.due-control {
  display: block;
  margin-top: 23px;
}
.due-control input {
  width: 180px !important;
}
.quiz fieldset {
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 14px;
  margin: 0 0 18px;
}
.quiz legend {
  font-size: 0.77rem;
  padding: 0 5px;
  color: var(--text);
  line-height: 1.7;
}
.quiz label {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 0.76rem;
  margin: 10px 0;
  color: var(--muted);
}
.quiz input {
  margin-top: 4px;
}
.response-label {
  display: block;
  margin-top: 25px;
  font-size: 0.91rem;
  color: var(--text);
}
#responseText {
  min-height: 290px;
  font-size: 0.83rem;
  line-height: 1.8;
}
.editor-meta {
  display: flex;
  justify-content: space-between;
  font-size: 0.61rem;
  color: var(--soft);
  margin: 8px 0 18px;
}
.review-check {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  font-size: 0.7rem;
  line-height: 1.65;
  margin: 15px 0;
}
.review-check input {
  margin-top: 4px;
}
.response-actions {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-top: 18px;
}
.response-actions button {
  font-size: 0.71rem;
}
.quiz-feedback {
  font-size: 0.74rem;
  padding: 12px;
  margin-top: 12px;
  line-height: 1.7;
  border-radius: 5px;
  background: var(--panel2);
}
.quiz-feedback.correct {
  color: var(--green);
}
.quiz-feedback.incorrect {
  color: var(--accent);
}
#submitFeedback {
  font-size: 0.75rem;
  line-height: 1.7;
  color: var(--accent);
}
#submitFeedback.success-message {
  color: var(--green);
}
.search-field {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  padding: 0 12px;
  background: var(--bg);
}
.search-field input {
  border: 0 !important;
  flex: 1;
  width: 100%;
  margin: 0 !important;
  min-width: 0;
}
.search-result {
  display: flex;
  justify-content: space-between;
  width: 100%;
  text-align: left;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  padding: 15px 4px;
  font-size: 0.79rem;
}
.search-result small {
  display: block;
  font-size: 0.66rem;
  margin-top: 5px;
}
.join-mark {
  color: var(--accent);
  margin: 5px 0 20px;
}
.join-mark svg {
  width: 35px;
  height: 35px;
}
.form-error {
  font-size: 0.78rem;
  color: var(--danger);
  margin: 12px 0;
}
.photo-choice {
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  cursor: pointer;
  border: 1px dashed var(--line);
  padding: 14px;
  border-radius: 7px;
}
.photo-choice:hover {
  background: var(--panel2);
}
#profilePreview,
#editAvatar {
  text-align: center;
  margin: 20px 0;
}
.swatches {
  display: flex;
  gap: 13px;
  margin: 15px 0;
}
.swatches button {
  width: 31px;
  height: 31px;
  min-height: 31px;
  padding: 0;
  border-radius: 50%;
  border: 3px solid var(--panel);
}
.swatches button[aria-pressed="true"] {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
[hidden] {
  display: none !important;
}
/* Class workspace */
body:has(.chat-page) #sidebar,
body:has(.chat-page) .site-footer {
  display: none;
}
body:has(.chat-page) .app-main {
  margin-left: 0;
}
body:has(.chat-page) .topbar {
  height: 54px;
  padding: 0 24px;
}
body:has(.chat-page) .search-shortcut,
body:has(.chat-page) #menuBtn {
  display: none;
}
#content.chat-page {
  padding: 0;
  max-width: none;
  height: calc(100dvh - 54px);
  min-height: 0;
}
.chat-shell {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  height: 100%;
  overflow: hidden;
}
.chat-sidebar {
  background: var(--panel);
  border-right: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 24px 14px 12px;
}
.chat-brand {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 10px;
}
.chat-brand h2 {
  font-size: 1.1rem;
}
.chat-brand small {
  font-size: 0.64rem;
}
.space-mark {
  display: flex;
  width: 37px;
  height: 37px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 9px;
  color: var(--accent);
}
.back-study {
  margin: 17px 0 20px;
  justify-content: flex-start;
  color: var(--muted);
  font-size: 0.72rem;
}
.back-study svg {
  width: 14px;
}
.member-search {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  margin-bottom: 20px;
  background: var(--bg);
}
.member-search svg {
  width: 14px;
}
.member-search input {
  border: 0 !important;
  min-width: 0;
  background: none !important;
  font-size: 0.73rem !important;
  padding: 10px 0 !important;
  margin: 0 !important;
}
.room-link,
.member-link {
  width: 100%;
  justify-content: flex-start;
  text-align: left;
  gap: 10px;
  padding: 10px;
}
.room-link.active,
.member-link.active {
  background: var(--panel3);
}
.room-link span:nth-child(2),
.member-link span:nth-child(2) {
  font-size: 0.8rem;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.room-link small,
.member-link small {
  display: block;
  font-size: 0.63rem;
  font-weight: 400;
  color: var(--muted);
  margin-top: 3px;
}
.member-link.unread {
  color: var(--accent);
}
.chat-section-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 0.56rem;
  letter-spacing: 0.08em;
  color: var(--soft);
  padding-left: 10px;
  margin: 14px 0 8px;
}
.chat-section-label button {
  width: 25px;
  min-width: 25px;
  height: 25px;
  min-height: 25px;
}
.chat-section-label svg {
  width: 13px;
}
#memberList {
  overflow: auto;
  flex: 1;
}
.no-members {
  padding: 12px;
  color: var(--soft);
  font-size: 0.73rem;
  line-height: 1.8;
}
.no-members small {
  font-size: 0.62rem;
}
.chat-self {
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: 8px;
}
.chat-self > button:first-child {
  flex: 1;
  justify-content: flex-start;
  text-align: left;
  padding: 5px;
  min-width: 0;
}
.chat-self > button span:nth-child(2) {
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 0.75rem;
}
.chat-self small {
  font-size: 0.6rem;
  display: block;
  margin-top: 3px;
}
.conversation {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 0;
  position: relative;
}
.conversation.dragover {
  outline: 3px dashed var(--accent);
  outline-offset: -12px;
}
.conversation-header {
  height: 77px;
  min-height: 77px;
  border-bottom: 1px solid var(--line);
  display: flex;
  gap: 14px;
  align-items: center;
  padding: 0 27px;
}
#roomIdentity {
  display: flex;
  align-items: center;
  gap: 11px;
  min-width: 0;
}
#roomIdentity strong {
  font-size: 0.87rem;
  font-weight: 550;
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#roomIdentity small {
  font-size: 0.65rem;
  display: block;
  margin-top: 3px;
}
#connectionState {
  font-size: 0.59rem;
  margin-left: auto;
  color: var(--soft);
  white-space: nowrap;
}
#connectionState.connected {
  color: var(--green);
}
.conversation-tools {
  display: flex;
  gap: 4px;
}
#togglePeople {
  display: none;
}
.message-list {
  flex: 1;
  overflow: auto;
  padding: 20px 28px;
  scrollbar-color: var(--line) transparent;
  min-height: 0;
}
.message-date {
  display: flex;
  align-items: center;
  gap: 18px;
  color: var(--soft);
  font-size: 0.62rem;
  margin: 16px 0 25px;
}
.message-date::before,
.message-date::after {
  content: "";
  height: 1px;
  background: var(--line);
  flex: 1;
}
.message {
  display: flex;
  gap: 12px;
  position: relative;
  padding: 10px 7px;
  margin: 3px 0;
  border-radius: 7px;
}
.message:hover {
  background: var(--panel);
}
.message > .avatar {
  margin-top: 1px;
  width: 32px;
  height: 32px;
  min-width: 32px;
  font-size: 0.67rem;
}
.message-content {
  min-width: 0;
  max-width: 88%;
  flex: 1;
}
.message-author {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 4px;
  flex-wrap: wrap;
}
.message-author strong {
  font-size: 0.78rem;
  font-weight: 550;
}
.message-author time,
.message-author small {
  font-size: 0.56rem;
  color: var(--soft);
}
.message-text {
  font-size: 0.85rem;
  line-height: 1.75;
  overflow-wrap: anywhere;
  white-space: normal;
}
.message-text a {
  text-decoration: underline;
}
.message-actions {
  position: absolute;
  right: 6px;
  top: -20px;
  display: flex;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--panel2);
  opacity: 0;
  pointer-events: none;
  box-shadow: 0 5px 15px #0002;
}
.message:hover .message-actions,
.message:focus-within .message-actions {
  opacity: 1;
  pointer-events: auto;
}
.message-actions .icon-btn {
  width: 29px;
  min-width: 29px;
  height: 29px;
  min-height: 29px;
  padding: 6px;
}
.message-actions svg {
  width: 14px;
  height: 14px;
}
.receipt {
  display: flex;
  gap: 4px;
  align-items: center;
}
.receipt svg {
  width: 12px;
  height: 12px;
  color: var(--green);
}
.quoted-message {
  font-size: 0.72rem;
  color: var(--muted);
  padding: 6px 10px;
  margin: 4px 0 7px;
  background: var(--panel2);
  border-left: 2px solid var(--accent);
  border-radius: 3px;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.quoted-message svg {
  width: 13px;
}
.image-attachment {
  display: block;
  max-width: min(380px, 100%);
  margin: 8px 0;
}
.image-attachment img {
  max-width: 100%;
  max-height: 330px;
  object-fit: contain;
  border-radius: 9px;
  display: block;
}
.video-attachment {
  width: min(440px, 100%);
  max-height: 360px;
  border-radius: 8px;
  display: block;
  margin: 9px 0;
  background: #090b0d;
}
.audio-attachment {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 9px 0;
  max-width: 100%;
  color: var(--accent);
}
.audio-attachment audio {
  width: min(330px, 100%);
  height: 40px;
}
.file-attachment {
  display: flex;
  align-items: center;
  gap: 12px;
  border: 1px solid var(--line);
  background: var(--panel2);
  padding: 14px;
  width: min(360px, 100%);
  border-radius: 7px;
  margin: 10px 0;
  color: var(--text);
  font-size: 0.8rem;
  overflow-wrap: anywhere;
}
.file-attachment small {
  display: block;
  font-size: 0.63rem;
  margin-top: 4px;
}
.file-attachment > span {
  flex: 1;
}
.reactions {
  display: flex;
  gap: 5px;
  margin-top: 8px;
}
.reactions button {
  font-size: 0.69rem;
  min-height: 25px;
  padding: 2px 8px;
  background: var(--panel2);
  border: 1px solid var(--line);
}
.reactions button.mine {
  border-color: var(--accent);
  background: var(--accent-bg);
}
.older {
  display: flex;
  margin: auto;
}
.chat-empty {
  min-height: 65%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  text-align: center;
  padding: 40px;
}
.chat-empty > span {
  width: 64px;
  height: 64px;
  border: 1px solid var(--line);
  border-radius: 17px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--panel);
  color: var(--accent);
  margin-bottom: 22px;
}
.chat-empty > span svg {
  width: 29px;
  height: 29px;
}
.chat-empty h3 {
  font-size: 1.4rem;
  letter-spacing: -0.035em;
}
.chat-empty p {
  font-size: 0.8rem;
  color: var(--muted);
  margin-top: 12px;
  max-width: 330px;
  line-height: 1.8;
}
#typingIndicator {
  min-height: 22px;
  font-size: 0.63rem;
  color: var(--soft);
  padding: 0 37px;
}
.composer-wrap {
  padding: 0 28px 18px;
}
.composer-wrap form {
  border: 1px solid var(--line);
  background: var(--panel);
  border-radius: 10px;
  overflow: hidden;
}
.composer-wrap textarea {
  border: 0;
  background: none;
  resize: vertical;
  min-height: 60px;
  max-height: 180px;
  padding: 17px 17px 5px;
  outline: none !important;
  font-size: 0.86rem;
  display: block;
}
.composer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 10px;
  gap: 10px;
}
.composer-bottom > div {
  display: flex;
  align-items: center;
  gap: 2px;
}
.gif-button {
  font-size: 0.62rem;
  border: 1px solid var(--soft);
  height: 18px;
  min-height: 18px;
  padding: 0 4px;
  border-radius: 3px;
  color: var(--muted);
  margin: 0 9px;
}
.send-button {
  background: var(--accent);
  color: #191813;
  min-height: 33px;
  font-size: 0.73rem;
  padding: 7px 12px;
}
.send-button svg {
  width: 14px;
  height: 14px;
}
.composer-hint {
  font-size: 0.57rem;
  display: flex;
  justify-content: space-between;
  margin-top: 9px;
  color: var(--soft);
  gap: 10px;
}
#replyPreview {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.72rem;
  padding: 10px 15px;
  background: var(--panel2);
  border-radius: 7px 7px 0 0;
  border: 1px solid var(--line);
  border-bottom: 0;
}
#replyPreview > span {
  flex: 1;
}
#replyPreview small {
  display: block;
  font-size: 0.64rem;
  color: var(--soft);
  margin-top: 3px;
}
#attachmentPreview {
  display: flex;
  gap: 8px;
  overflow: auto;
  padding: 10px 0;
}
.staged-file {
  display: flex;
  align-items: center;
  gap: 10px;
  border: 1px solid var(--line);
  padding: 8px 10px;
  border-radius: 7px;
  max-width: 100%;
  background: var(--panel);
  flex-wrap: wrap;
}
.staged-file > img {
  width: 42px;
  height: 42px;
  object-fit: cover;
  border-radius: 5px;
}
.staged-file > span {
  font-size: 0.67rem;
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.staged-file audio {
  height: 32px;
  max-width: 250px;
}
.staged-file > svg {
  color: var(--accent);
}
#uploadProgress {
  font-size: 0.71rem;
  color: var(--accent);
  padding: 10px;
}
#recordingBar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px;
  background: var(--panel2);
  border-radius: 8px;
  margin: 10px 0;
  font-size: 0.8rem;
}
#recordingBar strong {
  flex: 1;
  font-size: 0.75rem;
}
.record-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--danger);
  animation: pulse 1.5s infinite;
}
#messageSearchBar {
  display: flex;
  padding: 10px 25px;
  border-bottom: 1px solid var(--line);
  gap: 10px;
}
#messageSearchBar input {
  flex: 1;
  width: 100%;
}
.emoji-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 7px;
}
.emoji-grid button {
  font-size: 1.65rem;
  padding: 9px;
  min-width: 0;
}
.giphy-credit {
  font-size: 0.58rem;
  text-align: right;
  margin: 9px 0 15px;
  color: var(--muted);
}
.giphy-credit strong {
  color: var(--text);
  font-size: 0.8rem;
  letter-spacing: -0.04em;
}
.gif-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  max-height: 370px;
  overflow: auto;
}
.gif-grid button {
  display: block;
  padding: 0;
  overflow: hidden;
  border-radius: 6px;
  min-height: 80px;
}
.gif-grid img {
  width: 100%;
  height: 110px;
  object-fit: cover;
  display: block;
}
.gif-grid > p {
  grid-column: 1/-1;
  font-size: 0.8rem;
  padding: 20px 0;
  line-height: 1.7;
}
.gif-fallback {
  border-top: 1px solid var(--line);
  margin-top: 20px;
  padding-top: 16px;
}
.gif-fallback label {
  font-size: 0.7rem;
}
.gif-fallback button {
  font-size: 0.7rem;
  margin-top: 12px;
}
.incoming-call {
  position: fixed;
  z-index: 70;
  top: 25px;
  right: 25px;
  max-width: calc(100vw - 40px);
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--panel2);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 20px;
  box-shadow: 0 15px 70px #0007;
}
.incoming-call .avatar {
  width: 48px;
  height: 48px;
  font-size: 1rem;
}
.incoming-call h2 {
  font-size: 0.94rem;
}
.incoming-call p {
  font-size: 0.71rem;
  color: var(--muted);
  margin-top: 5px;
}
.call-overlay {
  position: fixed;
  inset: 0;
  background: #0b0e11;
  z-index: 60;
  display: flex;
  flex-direction: column;
  padding: 24px;
  color: #eee;
}
.call-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 4px 8px 22px;
}
.call-top h2 {
  font-size: 1.3rem;
}
.call-top span {
  font-size: 0.75rem;
  color: #9ba6b1;
}
.call-stage {
  position: relative;
  background: #13181d;
  flex: 1;
  min-height: 0;
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.remote-placeholder {
  position: absolute;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 18px;
  color: #9ba6b1;
}
.call-stage #remoteVideo {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: contain;
  z-index: 1;
}
.call-stage #localVideo {
  position: absolute;
  bottom: 18px;
  right: 18px;
  width: 190px;
  max-height: 130px;
  object-fit: cover;
  border: 1px solid #434b52;
  background: #171c23;
  border-radius: 8px;
  z-index: 2;
}
.call-controls {
  display: flex;
  gap: 12px;
  justify-content: center;
  margin: 24px 0 12px;
}
.call-control {
  background: #272e36;
  color: #ddd;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  min-height: 46px;
}
.call-control.off {
  background: #6e3440;
}
.call-note {
  text-align: center;
  color: #929aa4;
  font-size: 0.65rem;
}
.call-overlay.minimized {
  inset: auto 20px 20px auto;
  width: 330px;
  height: 260px;
  padding: 12px;
  border: 1px solid #434b52;
  border-radius: 12px;
}
.call-overlay.minimized .call-top {
  padding: 0 0 8px;
}
.call-overlay.minimized .call-top h2 {
  font-size: 0.85rem;
}
.call-overlay.minimized .call-top span {
  font-size: 0.6rem;
}
.call-overlay.minimized #localVideo {
  width: 65px;
  bottom: 6px;
  right: 6px;
}
.call-overlay.minimized .call-controls {
  margin: 8px 0 0;
  gap: 8px;
}
.call-overlay.minimized .call-control {
  width: 30px;
  height: 30px;
  min-height: 30px;
}
.call-overlay.minimized .call-note {
  display: none;
}
:root[data-density="compact"] .assignment-row {
  padding: 10px 0;
}
:root[data-density="compact"] .setting-row {
  min-height: 62px;
  padding: 10px 0;
}
:root[data-density="compact"] #sidebar button {
  min-height: 35px;
  padding: 7px 12px;
}
:root[data-density="compact"] .message {
  padding: 5px 7px;
}
:root[data-density="compact"] .course-card {
  padding-top: 15px;
  padding-bottom: 12px;
}
html[data-motion="reduce"] *,
html[data-motion="reduce"] *::before,
html[data-motion="reduce"] *::after {
  animation: none !important;
  transition: none !important;
  scroll-behavior: auto !important;
}
@keyframes appear {
  from {
    opacity: 0;
    transform: translateY(5px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes pulse {
  50% {
    opacity: 0.3;
  }
}
@media (min-width: 1500px) {
  .dashboard-grid {
    grid-template-columns: minmax(0, 1fr) 280px;
  }
  .course-card {
    padding: 25px;
  }
  .assignment-row {
    padding: 20px 0;
  }
}
@media (max-width: 1180px) {
  #sidebar {
    width: 210px;
    padding-left: 12px;
    padding-right: 12px;
  }
  .app-main {
    margin-left: 210px;
  }
  #content {
    padding: 30px 26px;
  }
  .topbar {
    padding: 0 26px;
  }
  .dashboard-grid {
    grid-template-columns: minmax(0, 1fr) 220px;
    gap: 20px;
  }
  .course-grid:not(.all-courses) {
    grid-template-columns: 1fr;
  }
  .course-grid:not(.all-courses) .course-card {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 5px 20px;
  }
  .course-grid:not(.all-courses) .course-card h3 {
    margin: 0;
    grid-column: 1;
  }
  .course-grid:not(.all-courses) .course-card p {
    margin: 0;
    min-height: 0;
    grid-column: 1;
  }
  .course-grid:not(.all-courses) .course-card .course-progress {
    grid-column: 2;
    grid-row: 2;
    align-self: center;
  }
  .course-grid:not(.all-courses) .course-card .course-card-bottom {
    grid-column: 2;
    grid-row: 3;
  }
  .status {
    display: none;
  }
  .all-courses {
    grid-template-columns: repeat(2, 1fr);
  }
  .settings-grid {
    gap: 28px;
  }
  .setting-row {
    gap: 10px;
  }
  .setting-row select,
  .setting-row input:not([type="checkbox"]) {
    width: 125px;
  }
  .quarter-ring {
    margin-right: 0;
  }
  .search-shortcut kbd {
    margin-left: 8px;
  }
  .site-footer {
    padding-left: 26px;
    padding-right: 26px;
  }
  .chat-shell {
    grid-template-columns: 250px minmax(0, 1fr);
  }
}
@media (max-width: 900px) {
  .dashboard-grid {
    grid-template-columns: 1fr;
  }
  .right-rail {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
  }
  .course-grid:not(.all-courses) {
    grid-template-columns: repeat(3, 1fr);
  }
  .course-grid:not(.all-courses) .course-card {
    display: block;
  }
  .course-grid:not(.all-courses) .course-card h3 {
    margin-top: 16px;
  }
  .course-grid:not(.all-courses) .course-card p {
    margin: 8px 0 15px;
    min-height: 2.8em;
  }
  .settings-grid {
    grid-template-columns: 1fr;
  }
  .settings-section > h2:first-child {
    margin-top: 0;
  }
  .assignment-work {
    gap: 25px;
  }
  .search-shortcut span,
  .search-shortcut kbd {
    display: none;
  }
  .topbar-right {
    gap: 15px;
  }
  .page-heading h1 {
    font-size: 1.85rem;
  }
  .overview-banner {
    padding: 25px;
  }
  .overview-banner h2 {
    font-size: 1.3rem;
  }
  .quarter-ring {
    width: 110px;
    height: 110px;
    min-width: 110px;
  }
  .quarter-ring small {
    font-size: 0.49rem;
  }
  .resource-list {
    grid-template-columns: 1fr;
  }
  .chat-shell {
    grid-template-columns: 230px minmax(0, 1fr);
  }
  .conversation-header {
    padding: 0 17px;
    gap: 8px;
  }
  .message-list {
    padding: 15px;
  }
  .composer-wrap {
    padding: 0 15px 12px;
  }
  #connectionState {
    display: none;
  }
  .conversation-tools {
    margin-left: auto;
    gap: 0;
  }
  .conversation-tools .icon-btn {
    width: 30px;
    min-width: 30px;
  }
  .message-content {
    max-width: calc(100% - 44px);
  }
}
@media (max-width: 700px) {
  #sidebar {
    transform: translateX(-100%);
    width: 250px;
    transition: transform 0.18s;
  }
  .nav-open #sidebar {
    transform: translateX(0);
  }
  .nav-open #veil {
    position: fixed;
    inset: 0;
    background: #0008;
    z-index: 9;
  }
  .app-main {
    margin-left: 0;
  }
  .topbar {
    height: 60px;
    padding: 0 16px;
    gap: 10px;
  }
  .breadcrumb {
    flex: 1;
    font-size: 0.65rem;
    gap: 8px;
  }
  .topbar-right {
    gap: 10px;
  }
  .term {
    font-size: 0.58rem;
  }
  #menuBtn {
    display: inline-flex;
    width: 28px;
    min-width: 28px;
    padding: 3px;
  }
  .search-shortcut {
    border: 0;
    background: none;
    min-height: 30px;
    padding: 4px;
  }
  #content {
    padding: 26px 19px 35px;
  }
  .page-heading {
    margin-bottom: 22px;
    align-items: flex-start;
  }
  .page-heading h1 {
    font-size: 1.8rem;
    max-width: 330px;
  }
  .page-heading p {
    font-size: 0.75rem;
  }
  .page-heading > .primary,
  .page-heading > .secondary {
    font-size: 0.64rem;
    white-space: normal;
    max-width: 125px;
    padding: 7px 9px;
  }
  .eyebrow {
    font-size: 0.57rem;
  }
  .overview-banner {
    padding: 22px 19px;
    gap: 12px;
    margin-bottom: 26px;
  }
  .overview-banner h2 {
    font-size: 1.16rem;
    max-width: 205px;
  }
  .overview-banner p {
    font-size: 0.7rem;
    max-width: 200px;
  }
  .overview-banner .eyebrow {
    font-size: 0.48rem;
  }
  .quarter-ring {
    width: 89px;
    height: 89px;
    min-width: 89px;
    padding: 3px;
  }
  .quarter-ring strong {
    font-size: 1.65rem;
  }
  .quarter-ring strong span {
    font-size: 0.7rem;
  }
  .quarter-ring small {
    max-width: 58px;
    text-align: center;
    line-height: 1.5;
    font-size: 0.46rem;
  }
  .overview-banner .primary {
    font-size: 0.69rem;
    padding: 8px 11px;
  }
  .section-heading h2 {
    font-size: 0.98rem;
  }
  .assignment-row {
    gap: 10px;
    padding: 15px 0;
  }
  .assignment-name strong {
    font-size: 0.73rem;
  }
  .assignment-name small {
    font-size: 0.58rem;
  }
  .assignment-name small span {
    margin: 0 2px;
  }
  .row-due {
    font-size: 0.6rem;
  }
  .assignment-icon {
    width: 31px;
    min-width: 31px;
  }
  .assignment-row > svg {
    display: none;
  }
  .course-grid:not(.all-courses) {
    grid-template-columns: 1fr;
  }
  .course-grid:not(.all-courses) .course-card {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 20px;
  }
  .course-grid:not(.all-courses) .course-card h3 {
    margin-top: 10px;
  }
  .course-grid:not(.all-courses) .course-card p {
    min-height: 0;
    margin: 5px 0;
  }
  .right-rail {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
  .focus-panel {
    padding: 20px 15px;
  }
  .focus-panel h3 {
    font-size: 0.95rem;
  }
  .focus-panel #focusTime {
    font-size: 2.4rem;
  }
  .focus-panel .eyebrow {
    font-size: 0.47rem;
  }
  .focus-buttons {
    gap: 3px;
  }
  .focus-buttons .primary {
    font-size: 0.65rem;
    padding: 7px 9px;
  }
  .week-note {
    padding: 18px 4px;
  }
  .week-note > div {
    font-size: 0.57rem;
    align-items: flex-start;
  }
  .all-courses {
    gap: 12px;
  }
  .all-courses .course-card {
    padding: 18px 14px;
  }
  .all-courses .course-card h3 {
    font-size: 1rem;
  }
  .all-courses .course-card p {
    font-size: 0.68rem;
  }
  .all-courses .course-card-bottom {
    font-size: 0.51rem;
  }
  .filter-bar {
    flex-wrap: wrap;
    gap: 12px;
  }
  .filter-bar select {
    width: 100%;
    font-size: 0.75rem;
  }
  .tabs {
    width: 100%;
    justify-content: space-between;
  }
  .tabs button {
    font-size: 0.65rem;
    padding: 6px 10px;
  }
  .site-footer {
    padding: 14px 19px;
    font-size: 0.5rem;
    align-items: center;
  }
  .site-footer span:last-child {
    max-width: 190px;
    text-align: right;
  }
  .settings-grid {
    gap: 25px;
  }
  .setting-row strong {
    font-size: 0.79rem;
  }
  .setting-row small {
    font-size: 0.64rem;
  }
  .stat-strip {
    padding: 20px 0;
  }
  .stat-strip > div {
    padding-left: 12px;
    padding-right: 8px;
  }
  .stat-strip strong {
    font-size: 1.6rem;
  }
  .stat-strip small {
    font-size: 0.6rem;
  }
  .progress-table > button,
  .progress-table .table-header {
    font-size: 0.66rem;
    padding: 14px 0;
    gap: 8px;
    grid-template-columns: 1.3fr 1fr 0.9fr;
  }
  .progress-table > button > span {
    gap: 7px;
  }
  .mini-progress {
    width: 40px;
  }
  .table-header {
    font-size: 0.5rem !important;
  }
  .day-name {
    font-size: 0.54rem;
    padding: 8px 4px;
  }
  .day {
    padding: 4px;
    min-height: 78px;
    font-size: 0.6rem;
  }
  .day > button {
    font-size: 0.43rem;
    padding: 3px;
    min-height: 16px;
  }
  .day > button small {
    display: none;
  }
  .day > span {
    width: 19px;
    height: 19px;
  }
  .calendar-heading h2 {
    font-size: 1rem;
    min-width: 130px;
  }
  .personal-tasks label {
    font-size: 0.72rem;
  }
  .personal-tasks small {
    font-size: 0.6rem;
  }
  .modal-head {
    padding: 16px 18px;
  }
  .modal-head h2 {
    font-size: 0.97rem;
  }
  .modal-body {
    padding: 20px 18px;
  }
  .assignment-work {
    grid-template-columns: 1fr;
  }
  .assignment-meta {
    gap: 12px;
    font-size: 0.61rem;
  }
  .lesson p {
    font-size: 0.83rem;
  }
  .assignment-work .response-work {
    border-top: 1px solid var(--line);
    padding-top: 23px;
  }
  .response-actions {
    gap: 6px;
  }
  .response-actions button {
    font-size: 0.69rem;
  }
  .chat-shell {
    grid-template-columns: minmax(0, 1fr);
  }
  .chat-sidebar {
    display: none;
    position: absolute;
    left: 0;
    top: 54px;
    bottom: 0;
    width: min(300px, 85vw);
    z-index: 20;
    box-shadow: 20px 0 70px #0008;
  }
  .people-open .chat-sidebar {
    display: flex;
  }
  #togglePeople {
    display: flex;
  }
  body:has(.chat-page) .topbar {
    padding: 0 15px;
  }
  #roomIdentity {
    gap: 8px;
  }
  #roomIdentity .avatar {
    width: 29px;
    height: 29px;
    min-width: 29px;
  }
  #roomIdentity strong {
    font-size: 0.76rem;
    max-width: 130px;
  }
  #roomIdentity small {
    font-size: 0.56rem;
  }
  .conversation-header {
    height: 65px;
    min-height: 65px;
    padding: 0 10px;
    gap: 5px;
  }
  .conversation-tools .icon-btn {
    width: 27px;
    min-width: 27px;
    padding: 5px;
  }
  .conversation-tools svg {
    width: 16px;
  }
  .message-list {
    padding: 10px;
  }
  .message {
    padding: 10px 3px;
    gap: 9px;
  }
  .message-author strong {
    font-size: 0.73rem;
  }
  .message-author {
    gap: 7px;
  }
  .message-text {
    font-size: 0.84rem;
  }
  .message-content {
    max-width: calc(100% - 40px);
  }
  .message-actions {
    position: static;
    opacity: 1;
    pointer-events: auto;
    align-self: flex-start;
    background: none;
    border: 0;
    box-shadow: none;
    flex-direction: column;
    width: 23px;
    margin-right: -5px;
  }
  .message-actions .icon-btn {
    width: 23px;
    min-width: 23px;
    padding: 4px;
    height: 23px;
    min-height: 23px;
  }
  .message-content {
    max-width: calc(100% - 65px);
  }
  .message-author .receipt {
    font-size: 0.5rem;
  }
  .composer-wrap {
    padding: 0 10px 12px;
  }
  .composer-wrap textarea {
    min-height: 52px;
    padding: 12px 12px 4px;
  }
  .composer-hint {
    font-size: 0.5rem;
  }
  .composer-hint span {
    display: none;
  }
  .image-attachment img {
    max-height: 280px;
  }
  .chat-empty {
    padding: 25px;
  }
  .chat-empty h3 {
    font-size: 1.2rem;
  }
  .chat-empty p {
    font-size: 0.75rem;
  }
  .audio-attachment audio {
    min-width: 0;
  }
  .incoming-call {
    top: 10px;
    right: 10px;
    left: 10px;
    max-width: none;
    gap: 10px;
    padding: 15px;
    flex-wrap: wrap;
  }
  .incoming-call > div {
    flex: 1;
  }
  .incoming-call .avatar {
    width: 38px;
    height: 38px;
  }
  .incoming-call .primary,
  .incoming-call .danger {
    font-size: 0.68rem;
  }
  .call-overlay {
    padding: 14px;
  }
  .call-stage #localVideo {
    width: 110px;
    bottom: 10px;
    right: 10px;
  }
  .call-note {
    font-size: 0.58rem;
  }
  .call-controls {
    gap: 10px;
  }
  .call-top h2 {
    font-size: 1.1rem;
  }
  .call-overlay.minimized {
    width: 280px;
    height: 230px;
    right: 10px;
    bottom: 10px;
  }
  .emoji-grid {
    grid-template-columns: repeat(6, 1fr);
    gap: 3px;
  }
  .emoji-grid button {
    padding: 6px;
    font-size: 1.5rem;
  }
  .swatches {
    gap: 10px;
  }
  #recordingBar {
    padding: 8px;
    gap: 5px;
  }
  #recordingBar button {
    font-size: 0.64rem;
  }
  .staged-file audio {
    max-width: 220px;
  }
}
@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
}

/* Workspace navigation: fixed controls and independently scrolling course links. */
* {
  scrollbar-width: none;
}
*::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}
#sidebar {
  height: 100dvh;
  overflow: hidden;
  padding: 22px 14px 14px;
  gap: 14px;
}
.school-brand {
  flex: none;
  margin: 0 8px 8px;
}
.sidebar-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding-right: 3px;
}
.sidebar-bottom {
  flex: none;
  margin: 0;
  padding: 8px 0 0;
  border-top: 1px solid var(--line);
}
.student-mini {
  padding-top: 10px;
  margin-top: 8px;
}
.sidebar-course-label {
  margin-top: 24px;
}
.school-label {
  margin-top: 8px;
}
.page-heading h1 {
  letter-spacing: -0.035em;
  font-size: 1.9rem;
}
.overview-banner {
  border-radius: 12px;
  border-left: 3px solid var(--accent);
  background: var(--panel);
  padding: 24px 28px;
}
.overview-banner h2 {
  font-size: 1.25rem;
}
.quarter-ring {
  width: 106px;
  height: 106px;
  min-width: 106px;
}
.course-card {
  border-radius: 10px;
}
.topbar {
  background: var(--panel);
  height: 64px;
}
.school-brand small {
  font-size: 0.56rem;
}
.assignment-name strong {
  font-size: 0.82rem;
}
.assignment-name small {
  font-size: 0.68rem;
}
.row-due {
  font-size: 0.73rem;
}
.status {
  font-size: 0.64rem;
}
.eyebrow {
  letter-spacing: 0.09em;
}
.chat-sidebar {
  min-height: 0;
  overflow: hidden;
}
.chat-brand,
.chat-self,
.member-search,
.chat-section-label,
.back-study,
.room-link {
  flex-shrink: 0;
}
#memberList {
  min-height: 0;
  overflow-y: auto;
  flex: 1;
}
.chat-self {
  margin-top: auto;
}
.conversation {
  min-height: 0;
}
.chat-shell {
  height: calc(100dvh - 64px);
}
.composer-wrap {
  padding-bottom: max(12px, env(safe-area-inset-bottom));
}
.composer-bottom > div {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
}
.message-actions {
  top: 2px;
}
.message-text {
  overflow-wrap: anywhere;
}
@media (max-height: 650px) {
  #sidebar {
    padding-top: 14px;
    gap: 8px;
  }
  .school-brand img {
    height: 32px;
  }
  .student-mini {
    padding-top: 6px;
    margin-top: 5px;
  }
  #sidebar .sidebar-bottom button {
    min-height: 36px;
  }
  .sidebar-course-label {
    margin-top: 18px;
  }
}
@media (max-width: 700px) {
  .topbar {
    height: 60px;
  }
  .chat-shell {
    height: calc(100dvh - 60px);
  }
  .overview-banner {
    padding: 18px;
  }
  .quarter-ring {
    width: 86px;
    height: 86px;
    min-width: 86px;
  }
  .chat-sidebar {
    top: 0;
  }
  .conversation-tools .icon-btn {
    width: 32px;
    min-width: 32px;
  }
  .composer-bottom .icon-btn {
    width: 36px;
    min-width: 36px;
  }
  .message-actions {
    flex-direction: row;
    position: absolute;
    right: 0;
    top: 0;
    background: var(--panel);
    width: auto;
    opacity: 0;
    pointer-events: none;
  }
  .message:focus-within .message-actions,
  .message:hover .message-actions {
    opacity: 1;
    pointer-events: auto;
  }
  .message-content {
    max-width: calc(100% - 42px);
  }
  .page-heading h1 {
    font-size: 1.7rem;
  }
}

/* Student portal redesign — semantic surfaces, schedule cards and compact navigation. */
:root {
  --bg: #101720;
  --panel: #18222e;
  --panel2: #1d2a38;
  --panel3: #263749;
  --line: #2b3b4d;
  --text: #eaf0f7;
  --muted: #a2b1c3;
  --soft: #8193a9;
  --accent: #83b5ff;
  --accent-bg: #5b9cf21b;
  --green: #7fd2b3;
}
:root[data-theme="light"] {
  --bg: #edf2f8;
  --panel: #fff;
  --panel2: #f3f6fa;
  --panel3: #e3ecf7;
  --line: #d3deeb;
  --text: #192b41;
  --muted: #526980;
  --soft: #647c95;
  --accent: #285faf;
  --accent-bg: #2861aa10;
  --green: #257957;
}
#sidebar {
  width: 242px;
  background: var(--panel);
  border-right: 1px solid var(--line);
}
.app-main {
  margin-left: 242px;
}
.school-brand {
  font-weight: 750;
  letter-spacing: 0.02em;
}
.school-brand img {
  width: 40px;
  height: 44px;
}
.school-brand small {
  color: var(--muted);
  letter-spacing: 0.1em;
}
.school-label {
  font-size: 0.63rem;
}
#sidebar nav {
  gap: 4px;
}
#sidebar button {
  border-radius: 6px;
  font-size: 0.82rem;
  min-height: 43px;
}
#sidebar button.active {
  box-shadow: inset 3px 0 var(--accent);
  background: var(--accent-bg);
  font-weight: 650;
}
.sidebar-course-label {
  font-size: 0.62rem;
}
.sidebar-bottom {
  background: var(--panel);
}
.topbar {
  background: var(--panel);
  box-shadow: 0 1px 8px #0001;
}
.breadcrumb {
  font-size: 0.76rem;
}
.topbar .term {
  padding: 5px 10px;
  border: 1px solid var(--line);
  border-radius: 5px;
}
.search-shortcut {
  background: var(--bg);
}
#content {
  padding-top: 28px;
}
.page-heading {
  margin-bottom: 24px;
}
.page-heading .eyebrow {
  color: var(--accent);
  font-weight: 650;
  font-size: 0.65rem;
}
.page-heading p {
  font-size: 0.83rem;
}
.portal-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.portal-summary > div {
  border: 1px solid var(--line);
  background: var(--panel);
  padding: 18px 20px;
  border-radius: 8px;
}
.portal-summary span {
  display: block;
  font-size: 0.6rem;
  font-weight: 650;
  letter-spacing: 0.08em;
  color: var(--muted);
}
.portal-summary strong {
  font-size: 1.9rem;
  display: block;
  font-weight: 650;
  margin: 6px 0 3px;
  letter-spacing: -0.04em;
}
.portal-summary strong em {
  font-size: 0.8rem;
  font-style: normal;
  letter-spacing: 0;
  font-weight: 400;
}
.portal-summary small {
  font-size: 0.65rem;
}
.portal-summary > div:nth-child(3) strong {
  color: var(--green);
}
.overview-banner {
  border-left: 4px solid var(--accent);
  box-shadow: 0 5px 20px #0001;
  gap: 18px;
  margin-bottom: 26px;
}
.overview-banner p {
  font-size: 0.83rem;
}
.overview-banner .eyebrow {
  font-size: 0.62rem;
}
.dashboard-grid {
  gap: 24px;
}
.section-heading h2 {
  font-size: 1.05rem;
  font-weight: 650;
}
.assignment-list {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 9px;
  overflow: hidden;
}
.assignment-row {
  padding: 15px 18px;
  border-bottom: 1px solid var(--line);
}
.assignment-row:last-child {
  border-bottom: 0;
}
.assignment-row:hover {
  background: var(--panel2);
}
.assignment-icon {
  background: color-mix(in srgb, var(--course), transparent 85%);
  height: 38px;
  width: 38px;
}
.assignment-name strong {
  font-weight: 600;
}
.course-card {
  border-top: 3px solid var(--course);
  background: var(--panel);
  padding: 20px;
}
.course-card h3 {
  font-weight: 650;
}
.course-card p {
  font-size: 0.73rem;
}
.course-card-bottom {
  font-size: 0.62rem;
}
.course-card-top small {
  font-size: 0.59rem;
}
.focus-panel {
  border: 1px solid var(--line);
  background: var(--panel);
  border-radius: 9px;
  padding: 22px;
}
.week-note {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 9px;
  padding: 20px;
  margin-top: 18px;
}
.week-note p {
  font-size: 0.76rem;
}
.settings-section {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 24px;
}
.settings-grid {
  gap: 20px;
}
.setting-row strong {
  font-size: 0.84rem;
}
.setting-row small {
  font-size: 0.72rem;
}
.site-footer {
  color: var(--soft);
}
.chat-shell {
  height: 100%;
}
.chat-sidebar {
  background: var(--panel);
  padding-top: 20px;
}
.chat-brand .space-mark {
  color: var(--accent);
  background: var(--accent-bg);
  border: 0;
}
.room-link.active,
.member-link.active {
  background: var(--accent-bg);
  box-shadow: inset 3px 0 var(--accent);
}
.conversation {
  background: var(--bg);
}
.conversation-header {
  background: var(--panel);
  height: 70px;
  min-height: 70px;
}
.message-content {
  padding: 9px 13px;
  border-radius: 0 10px 10px 10px;
  background: var(--panel);
  flex: initial;
  min-width: 140px;
}
.message.own .message-content {
  background: var(--panel2);
}
.message:hover {
  background: transparent;
}
.message {
  padding: 8px 3px;
}
.message-author strong {
  font-size: 0.81rem;
}
.message-text {
  font-size: 0.88rem;
}
.message-date {
  margin: 15px 0 20px;
}
.composer-wrap form {
  background: var(--panel);
  border-radius: 10px;
}
.composer-hint {
  font-size: 0.61rem;
}
.chat-self {
  background: var(--panel);
}
.chat-section-label {
  font-size: 0.63rem;
}
.member-link span:nth-child(2) {
  font-size: 0.84rem;
}
.member-link small {
  font-size: 0.69rem;
}
@media (max-width: 1100px) {
  #sidebar {
    width: 218px;
  }
  .app-main {
    margin-left: 218px;
  }
  .portal-summary {
    gap: 10px;
  }
  .portal-summary > div {
    padding: 15px;
  }
  .portal-summary small {
    font-size: 0.59rem;
  }
  .assignment-row {
    padding: 13px;
  }
  .dashboard-grid {
    grid-template-columns: minmax(0, 1fr) 220px;
  }
}
@media (max-width: 900px) {
  .dashboard-grid {
    grid-template-columns: 1fr;
  }
  .portal-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .week-note {
    margin-top: 0;
  }
  .settings-section {
    padding: 18px;
  }
}
@media (max-width: 700px) {
  #sidebar {
    width: 264px;
  }
  .app-main {
    margin-left: 0;
  }
  #content {
    padding: 22px 15px 30px;
  }
  .portal-summary {
    gap: 10px;
    margin-bottom: 18px;
  }
  .portal-summary > div {
    padding: 14px;
  }
  .portal-summary strong {
    font-size: 1.65rem;
  }
  .portal-summary small {
    font-size: 0.62rem;
  }
  .portal-summary span {
    font-size: 0.59rem;
  }
  .overview-banner {
    padding: 18px 15px;
  }
  .assignment-row {
    padding: 13px 10px;
  }
  .assignment-name strong {
    font-size: 0.76rem;
  }
  .assignment-name small {
    font-size: 0.61rem;
  }
  .row-due {
    font-size: 0.64rem;
  }
  .assignment-icon {
    width: 30px;
    min-width: 30px;
  }
  .right-rail {
    gap: 12px;
  }
  .focus-panel,
  .week-note {
    padding: 16px 12px;
  }
  .settings-section {
    padding: 17px 14px;
  }
  .setting-row {
    gap: 12px;
  }
  .setting-row small {
    font-size: 0.67rem;
  }
  .message-content {
    min-width: 0;
    max-width: calc(100% - 43px);
  }
  .chat-sidebar {
    width: min(320px, 90vw);
  }
  .composer-bottom {
    gap: 4px;
  }
}
@media (max-height: 500px) {
  #sidebar {
    gap: 5px;
  }
  .school-brand {
    margin-bottom: 0;
  }
  .student-mini {
    display: none;
  }
  .sidebar-bottom {
    padding-top: 5px;
  }
  .chat-brand {
    padding-bottom: 0;
  }
  .back-study {
    margin: 8px 0;
  }
  .member-search {
    margin-bottom: 8px;
  }
  .chat-section-label {
    margin: 5px 0;
  }
  .chat-self {
    padding-top: 6px;
  }
}

/* In-call workspace: movable self view + synced floating direct messages. */
.call-overlay {
  overflow: hidden;
}
.call-top {
  position: relative;
  z-index: 8;
}
.call-top-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.call-top-btn,
.call-float-btn {
  width: 38px;
  height: 38px;
  min-height: 38px;
  padding: 0;
  border: 1px solid #35404c;
  background: #19212a;
  color: #e9eef4;
  border-radius: 50%;
  display: grid;
  place-items: center;
}
.call-top-btn:hover,
.call-float-btn:hover {
  background: #252f3a;
}
.local-tile {
  position: absolute;
  right: 18px;
  bottom: 18px;
  width: 190px;
  height: 130px;
  border: 1px solid #434b52;
  background: #171c23;
  border-radius: 9px;
  z-index: 6;
  overflow: hidden;
  cursor: grab;
  box-shadow: 0 12px 28px #0006;
  touch-action: none;
  animation: callFloatIn 0.18s ease-out;
}
.local-tile.dragging,
.call-chat-panel.dragging {
  cursor: grabbing;
}
.call-stage #localVideo {
  position: static;
  width: 100%;
  height: 100%;
  max-height: none;
  object-fit: cover;
  border: 0;
  background: #171c23;
  border-radius: 0;
  z-index: auto;
}
.local-label {
  position: absolute;
  left: 8px;
  bottom: 7px;
  padding: 3px 6px;
  border-radius: 4px;
  background: #090c10d9;
  color: #f2f5f8;
  font-size: 0.6rem;
  font-weight: 650;
  letter-spacing: 0.03em;
  pointer-events: none;
}
.local-tile.preview-hidden,
.local-tile.audio-only {
  display: none;
}
.call-control.active {
  background: #27527d;
  color: #fff;
}
.call-control {
  position: relative;
}
.call-unread {
  position: absolute;
  right: 2px;
  top: 1px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #f05d67;
  border: 2px solid #272e36;
}
.call-chat-panel {
  position: absolute;
  z-index: 12;
  left: 26px;
  top: 88px;
  width: min(350px, calc(100vw - 52px));
  height: min(500px, calc(100dvh - 190px));
  min-width: 270px;
  min-height: 260px;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  background: #141a21;
  border: 1px solid #3a4653;
  border-radius: 11px;
  box-shadow: 0 18px 45px #0008;
  overflow: hidden;
  animation: callFloatIn 0.18s ease-out;
}
.call-chat-panel[hidden] {
  display: none;
}
.call-chat-head {
  min-height: 50px;
  padding: 8px 9px 8px 14px;
  border-bottom: 1px solid #303b46;
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: grab;
  touch-action: none;
  background: #1a222b;
}
.call-chat-head > div {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 0.74rem;
  font-weight: 700;
}
.call-chat-head svg {
  width: 17px;
}
.call-chat-head .call-float-btn {
  width: 32px;
  height: 32px;
  min-height: 32px;
  border-color: transparent;
  background: transparent;
}
.call-chat-messages {
  min-height: 0;
  overflow-y: auto;
  padding: 14px 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  background: #11171d;
  overscroll-behavior: contain;
}
.call-chat-message {
  max-width: 86%;
  align-self: flex-start;
}
.call-chat-message.own {
  align-self: flex-end;
}
.call-chat-meta {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 0 5px 4px;
  color: #8f9ba8;
  font-size: 0.56rem;
}
.call-chat-message.own .call-chat-meta {
  justify-content: flex-end;
}
.call-chat-meta strong {
  color: #bdc7d2;
  font-size: 0.6rem;
}
.call-chat-text {
  background: #222c36;
  border: 1px solid #313d49;
  color: #edf2f7;
  padding: 8px 10px;
  border-radius: 5px 10px 10px 10px;
  font-size: 0.76rem;
  line-height: 1.42;
  overflow-wrap: anywhere;
}
.call-chat-message.own .call-chat-text {
  background: #1d3e5f;
  border-color: #2d567d;
  border-radius: 10px 5px 10px 10px;
}
.call-chat-image {
  display: block;
  margin-top: 5px;
}
.call-chat-image img {
  display: block;
  max-width: 220px;
  max-height: 180px;
  border-radius: 8px;
}
.call-chat-file {
  margin-top: 5px;
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 8px;
  background: #202a34;
  border: 1px solid #33404d;
  border-radius: 7px;
  color: #e8eef5;
  font-size: 0.7rem;
}
.call-chat-empty {
  margin: auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 7px;
  color: #8e9aa6;
  max-width: 210px;
}
.call-chat-empty svg {
  width: 26px;
  height: 26px;
}
.call-chat-empty strong {
  font-size: 0.78rem;
  color: #d8e0e8;
}
.call-chat-empty span {
  font-size: 0.65rem;
  line-height: 1.45;
}
.call-chat-composer {
  padding: 10px;
  border-top: 1px solid #303b46;
  background: #161d25;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 36px;
  gap: 8px;
  align-items: end;
}
.call-chat-composer textarea {
  min-height: 36px;
  max-height: 92px;
  resize: none;
  background: #0f151b;
  border: 1px solid #35414d;
  color: #edf2f7;
  border-radius: 7px;
  padding: 9px 10px;
  font: inherit;
  font-size: 0.73rem;
  outline: none;
}
.call-chat-composer textarea:focus {
  border-color: #5c87b4;
  box-shadow: 0 0 0 2px #5c87b426;
}
.call-send-btn {
  width: 36px;
  height: 36px;
  min-height: 36px;
  padding: 0;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #2b6195;
  color: #fff;
}
.call-send-btn svg {
  width: 16px;
}
.call-overlay.focus-remote {
  padding: 0;
  background: #000;
}
.call-overlay.focus-remote .call-top {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  padding: 18px 22px 42px;
  background: linear-gradient(#000c, transparent);
  z-index: 9;
  pointer-events: none;
}
.call-overlay.focus-remote .call-top > * {
  pointer-events: auto;
}
.call-overlay.focus-remote .call-stage {
  position: absolute;
  inset: 0;
  border-radius: 0;
  background: #000;
}
.call-overlay.focus-remote .call-stage #remoteVideo {
  object-fit: contain;
}
.call-overlay.focus-remote .call-controls {
  position: absolute;
  z-index: 10;
  left: 50%;
  bottom: 18px;
  transform: translateX(-50%);
  margin: 0;
  padding: 9px 12px;
  border: 1px solid #3a424b;
  background: #12171d;
  border-radius: 30px;
  box-shadow: 0 8px 26px #0008;
}
.call-overlay.focus-remote .call-note {
  display: none;
}
.call-overlay.focus-remote .call-chat-panel {
  top: 78px;
}
.call-overlay.minimized .call-chat-panel {
  display: none;
}
.call-overlay.minimized .local-tile {
  width: 72px;
  height: 54px;
  right: 7px;
  bottom: 7px;
}
.call-overlay.minimized .call-top-actions {
  display: none;
}
.call-overlay.minimized .call-end span {
  display: none;
}
.call-overlay.minimized .call-controls #selfViewCall,
.call-overlay.minimized .call-controls #screenCall,
.call-overlay.minimized .call-controls #callChatToggle,
.call-overlay.minimized .call-controls #focusCall {
  display: none;
}
@keyframes callFloatIn {
  from {
    opacity: 0;
    transform: translateY(8px) scale(0.985);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@media (max-width: 700px) {
  .call-overlay {
    padding: 10px;
  }
  .call-top {
    padding: 2px 3px 10px;
  }
  .call-top-btn {
    width: 34px;
    height: 34px;
    min-height: 34px;
  }
  .local-tile {
    width: 122px;
    height: 88px;
    right: 10px;
    bottom: 10px;
  }
  .call-chat-panel {
    left: 10px;
    top: 64px;
    width: min(330px, calc(100vw - 20px));
    height: min(52dvh, 430px);
  }
  .call-controls {
    gap: 7px;
    margin: 12px 0 5px;
    flex-wrap: wrap;
  }
  .call-control {
    width: 40px;
    height: 40px;
    min-height: 40px;
  }
  .call-end {
    min-height: 40px;
  }
  .call-overlay.focus-remote .call-controls {
    bottom: max(10px, env(safe-area-inset-bottom));
    padding: 7px 8px;
    gap: 6px;
    max-width: calc(100vw - 20px);
    flex-wrap: nowrap;
  }
  .call-overlay.focus-remote .call-control {
    width: 38px;
    height: 38px;
    min-height: 38px;
  }
  .call-overlay.focus-remote .call-end span {
    display: none;
  }
  .call-overlay.focus-remote .call-chat-panel {
    top: 62px;
    height: min(55dvh, 430px);
  }
}

/* Persistent in-call picture-in-picture. Keep calls above game panels and always expose restore. */
.call-overlay {
  z-index: 90;
}
.incoming-call {
  z-index: 96;
}
.call-overlay.minimized {
  z-index: 95 !important;
  inset: auto 18px 18px auto;
  width: min(340px, calc(100vw - 24px));
  height: 238px;
  padding: 8px;
  border: 1px solid #4b5560;
  border-radius: 14px;
  background: #0b0f14;
  box-shadow: 0 22px 70px #000c;
  overflow: hidden;
}
.call-overlay.minimized .call-top {
  display: flex;
  padding: 1px 2px 7px;
  cursor: grab;
  user-select: none;
  touch-action: none;
}
.call-overlay.minimized.call-pip-dragging .call-top {
  cursor: grabbing;
}
.call-overlay.minimized .call-top-actions {
  display: flex !important;
}
.call-overlay.minimized #minimizeCall {
  display: inline-flex !important;
  width: 32px;
  height: 32px;
  min-height: 32px;
  background: #20262d;
  color: #fff;
}
.call-overlay.minimized .call-stage {
  flex: 1;
  min-height: 120px;
  border-radius: 9px;
  cursor: default;
}
.call-overlay.minimized .call-stage #remoteVideo {
  object-fit: cover;
}
.call-overlay.minimized .call-controls {
  margin: 7px 0 0;
  gap: 6px;
  flex-wrap: nowrap;
}
.call-overlay.minimized .call-control,
.call-overlay.minimized .call-end {
  min-height: 31px;
  height: 31px;
}
.call-overlay.minimized .call-control {
  width: 31px;
}
.call-overlay.minimized .call-end {
  padding: 5px 9px;
}
.call-overlay.minimized .call-chat-panel {
  display: none !important;
}
.call-overlay.minimized .call-note {
  display: none !important;
}
.call-overlay.minimized .local-tile {
  width: 76px;
  height: 56px;
  right: 7px;
  bottom: 7px;
}
.call-overlay.minimized .call-controls #selfViewCall,
.call-overlay.minimized .call-controls #screenCall,
.call-overlay.minimized .call-controls #callChatToggle,
.call-overlay.minimized .call-controls #focusCall {
  display: none;
}
@media (max-width: 600px) {
  .call-overlay.minimized {
    right: 8px;
    bottom: 8px;
    width: min(300px, calc(100vw - 16px));
    height: 215px;
    padding: 7px;
  }
}

.conversation.shadow-active .composer-wrap {
  border-color: #9b7cff;
  box-shadow: 0 -10px 35px rgb(116 82 255 / 10%);
}
.composer-hint[data-shadow]:not([data-shadow=""])::before {
  content: attr(data-shadow);
  display: inline-block;
  margin-right: 10px;
  color: #b9a7ff;
  font-weight: 700;
}
.shadow-message .message-content {
  border-color: rgb(155 124 255 / 48%);
  background: linear-gradient(135deg, rgb(98 65 180 / 18%), transparent 58%);
}
.shadow-badge {
  color: #b9a7ff !important;
}

.chat-page {
  --chat-overlay: 0.72;
  --chat-photo: none;
}
.chat-page .conversation {
  background-image:
    linear-gradient(
      rgb(10 13 16 / var(--chat-overlay)),
      rgb(10 13 16 / var(--chat-overlay))
    ),
    var(--chat-photo),
    radial-gradient(circle at 85% 10%, #203a63 0, transparent 42%);
  background-position: center;
  background-size: cover;
  background-attachment: local;
}
.chat-page[data-chat-theme="aurora"] .conversation {
  background-image:
    linear-gradient(
      rgb(7 13 18 / var(--chat-overlay)),
      rgb(7 13 18 / var(--chat-overlay))
    ),
    var(--chat-photo), linear-gradient(135deg, #10243c, #1a514a 50%, #392652);
}
.chat-page[data-chat-theme="sunset"] .conversation {
  background-image:
    linear-gradient(
      rgb(15 9 14 / var(--chat-overlay)),
      rgb(15 9 14 / var(--chat-overlay))
    ),
    var(--chat-photo), linear-gradient(135deg, #441f3b, #9a452e 55%, #161b35);
}
.chat-page[data-chat-theme="ocean"] .conversation {
  background-image:
    linear-gradient(
      rgb(5 13 18 / var(--chat-overlay)),
      rgb(5 13 18 / var(--chat-overlay))
    ),
    var(--chat-photo), linear-gradient(145deg, #062c3d, #0d6070 55%, #071e35);
}
.chat-page[data-chat-theme="forest"] .conversation {
  background-image:
    linear-gradient(
      rgb(7 13 10 / var(--chat-overlay)),
      rgb(7 13 10 / var(--chat-overlay))
    ),
    var(--chat-photo), linear-gradient(145deg, #132b23, #2d5131 55%, #101d1d);
}
.theme-presets {
  display: grid;
  grid-template-columns: repeat(5, minmax(72px, 1fr));
  gap: 8px;
  margin: 12px 0;
}
.theme-presets button {
  display: grid;
  gap: 6px;
  min-height: 68px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface-2);
  color: var(--text);
}
.theme-presets button.active {
  border-color: #8fbaff;
  box-shadow: 0 0 0 2px rgb(90 150 255 / 20%);
}
.theme-presets i {
  height: 26px;
  border-radius: 6px;
  background: linear-gradient(135deg, #162c4a, #594168);
}
.theme-presets button:nth-child(2) i {
  background: linear-gradient(135deg, #124254, #2a795b, #704579);
}
.theme-presets button:nth-child(3) i {
  background: linear-gradient(135deg, #763752, #d87342, #2c315f);
}
.theme-presets button:nth-child(4) i {
  background: linear-gradient(135deg, #07506a, #16a2aa);
}
.theme-presets button:nth-child(5) i {
  background: linear-gradient(135deg, #183f30, #4b773d);
}
.tiktok-brand {
  font-size: 1.5rem;
  font-weight: 900;
  letter-spacing: -0.04em;
  text-shadow:
    -2px 0 #25f4ee,
    2px 0 #fe2c55;
}
.tiktok-preview {
  display: grid;
  place-items: center;
  min-height: 220px;
  margin: 12px 0;
  border: 1px solid var(--line);
  border-radius: 14px;
  overflow: hidden;
  background: #08090b;
}
.tiktok-preview iframe,
.tiktok-message iframe {
  width: 100%;
  height: min(62vh, 620px);
  border: 0;
}
.tiktok-message {
  width: min(330px, 76vw);
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #07080a;
}
.tiktok-message a {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 10px;
  color: #fff;
}
@media (max-width: 600px) {
  .theme-presets {
    grid-template-columns: repeat(2, 1fr);
  }
  .tiktok-preview iframe {
    height: 54vh;
  }
}

/* 2026-09 chat polish: activity rail, GPS, media share, iOS PWA */
@media (min-width: 901px) { .chat-shell { grid-template-columns: 280px minmax(0, 1fr) auto; } }
.location-auto-card,
.location-auto-note {
  display: flex;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 13px;
  background: var(--panel2);
}
.location-auto-card > span,
.location-auto-note > svg {
  color: var(--accent);
  flex: 0 0 auto;
}
.location-auto-card > div,
.location-auto-note > span { flex: 1; min-width: 0; }
.location-auto-card small,
.location-auto-note small { display: block; color: var(--muted); margin-top: 3px; }
.location-auto-card p { margin: 7px 0 0; color: var(--soft); font-size: .7rem; line-height: 1.55; }

.chat-shell { position: relative; }
.activity-rail {
  width: 286px;
  min-width: 286px;
  border-left: 1px solid var(--line);
  background: color-mix(in srgb, var(--panel) 96%, transparent);
  min-height: 0;
  overflow: auto;
  animation: activityRailIn .18s ease-out;
}
.activity-rail > header {
  min-height: 62px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  position: sticky;
  top: 0;
  background: var(--panel);
  z-index: 2;
}
.activity-rail > header strong { display: block; font-size: .76rem; }
.activity-rail > header small { display: block; font-size: .58rem; color: var(--soft); margin-top: 3px; }
#activityRailBody { padding: 10px; }
.activity-card {
  display: grid;
  grid-template-columns: 52px minmax(0,1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel2);
  margin-bottom: 8px;
}
.activity-card > img,
.activity-art {
  width: 52px;
  height: 52px;
  border-radius: 8px;
  object-fit: cover;
}
.activity-art { display: grid; place-items: center; background: var(--panel3); color: var(--accent); }
.activity-art svg { width: 22px; }
.activity-copy { min-width: 0; }
.activity-copy small,
.activity-copy em { display: block; color: var(--soft); font-size: .56rem; font-style: normal; }
.activity-copy strong,
.activity-copy span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.activity-copy strong { font-size: .72rem; margin: 3px 0; }
.activity-copy span { font-size: .64rem; color: var(--muted); margin-bottom: 4px; }
.activity-actions { display: flex; flex-direction: column; gap: 4px; }
.activity-empty { text-align: center; padding: 38px 16px; color: var(--muted); }
.activity-empty > svg { width: 28px; margin-bottom: 12px; color: var(--accent); }
.activity-empty strong { display: block; color: var(--text); font-size: .8rem; }
.activity-empty p { font-size: .66rem; line-height: 1.6; }
@keyframes activityRailIn { from { opacity: 0; transform: translateX(10px); } }

.share-media-intro { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 16px; }
.share-media-intro h3 { margin: 0; font-size: 1rem; }
.share-media-intro p { margin: 4px 0 0; color: var(--muted); font-size: .72rem; line-height: 1.55; }
.share-media-icon { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; background: var(--panel2); color: var(--accent); border: 1px solid var(--line); }
.link-paste-row { display: flex; align-items: end; gap: 8px; }
.link-paste-row .grow { flex: 1; min-width: 0; }
.media-send-actions { margin-top: 12px; justify-content: flex-end; }
.tiktok-preview[hidden] { display: none; }
.tiktok-preview:not([hidden]) { margin-top: 12px; animation: previewIn .18s ease-out; }
@keyframes previewIn { from { opacity: 0; transform: translateY(4px); } }

/* Keep the chat stable while media finishes loading. */
.message-list { overflow-anchor: auto; overscroll-behavior: contain; }
.message { overflow-anchor: none; }
.message:last-child { overflow-anchor: auto; }

@media (max-width: 900px) {
  .activity-rail {
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    z-index: 30;
    width: min(310px, 88vw);
    min-width: 0;
    box-shadow: -20px 0 60px #0008;
  }
}
@media (max-width: 640px) {
  body:has(.chat-page) .topbar { padding-top: env(safe-area-inset-top); height: calc(54px + env(safe-area-inset-top)); }
  #content.chat-page { height: calc(var(--visible-height, 100dvh) - 54px - env(safe-area-inset-top)); }
  .conversation-header { padding-left: max(10px, env(safe-area-inset-left)); padding-right: max(10px, env(safe-area-inset-right)); }
  .composer-wrap { padding-left: max(10px, env(safe-area-inset-left)); padding-right: max(10px, env(safe-area-inset-right)); padding-bottom: max(12px, env(safe-area-inset-bottom)); background: linear-gradient(transparent, var(--bg) 16%); }
  .composer-wrap textarea { font-size: 16px; resize: none; }
  .message-list { -webkit-overflow-scrolling: touch; padding-bottom: 14px; }
  .composer-bottom > div { overflow-x: auto; scrollbar-width: none; max-width: calc(100vw - 94px); }
  .composer-bottom > div::-webkit-scrollbar { display: none; }
  .conversation-tools { gap: 1px; }
}

.call-meta { display: flex; align-items: center; gap: 9px; margin-top: 3px; }
.call-quality { display: inline-flex; align-items: center; gap: 4px; font-size: .58rem; color: #9ba8b5; padding: 3px 6px; border-radius: 999px; background: #ffffff0a; border: 1px solid #ffffff10; }
.call-quality svg { width: 11px; height: 11px; }
.call-quality[data-quality="good"] { color: #83c89a; }
.call-quality[data-quality="fair"] { color: #d8b86c; }
.call-quality[data-quality="poor"] { color: #ed7e88; }
.call-stage { background: radial-gradient(circle at 50% 35%, #1c2630 0, #0d1116 64%); }
#remoteVideo { background: #090c10; }
#localVideo { transform: scaleX(-1); }
.local-tile:has(video[srcObject]) { box-shadow: 0 12px 35px #0007; }
@media (max-width: 640px) {
  .call-overlay { padding-top: max(12px, env(safe-area-inset-top)); padding-bottom: max(12px, env(safe-area-inset-bottom)); }
  .call-controls { padding-bottom: env(safe-area-inset-bottom); }
  .call-control, .call-end { min-width: 44px; min-height: 44px; }
}


/* 2026-09 settings workspace redesign: one full-width panel, compact internal grid */
#content.settings-page { max-width: none; padding-left: clamp(22px, 3vw, 48px); padding-right: clamp(22px, 3vw, 48px); }
.settings-workspace {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
  overflow: hidden;
}
.settings-overview {
  min-height: 78px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg, color-mix(in srgb, var(--panel2) 78%, transparent), var(--panel));
}
.settings-profile-summary { display: flex; align-items: center; gap: 12px; min-width: 0; }
.settings-profile-summary .avatar { width: 42px; height: 42px; min-width: 42px; }
.settings-profile-summary strong { display: block; font-size: .9rem; color: var(--text); }
.settings-profile-summary span { display: block; margin-top: 3px; font-size: .65rem; color: var(--muted); }
.settings-health { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.settings-health > span { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 5px 9px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg); color: var(--muted); font-size: .62rem; white-space: nowrap; }
.settings-health svg { width: 12px; height: 12px; }
.settings-health b { color: var(--text); font-weight: 550; }
.settings-health-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 3px color-mix(in srgb, var(--green) 15%, transparent); }
.settings-layout { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.settings-group { min-width: 0; padding: 18px 20px 20px; background: transparent; border: 0; border-radius: 0; }
.settings-group:nth-child(3n+2), .settings-group:nth-child(3n+3) { border-left: 1px solid var(--line); }
.settings-group:nth-child(n+4) { border-top: 1px solid var(--line); }
.settings-group > header { min-height: 46px; display: flex; align-items: flex-start; gap: 10px; margin-bottom: 6px; }
.settings-group > header > span { width: 30px; height: 30px; flex: 0 0 30px; display: grid; place-items: center; border-radius: 8px; background: var(--accent-bg); color: var(--accent); }
.settings-group > header > span svg { width: 15px; height: 15px; }
.settings-group > header h2 { margin: 0; font-size: .78rem; color: var(--text); }
.settings-group > header p { margin: 4px 0 0; color: var(--soft); font-size: .62rem; line-height: 1.45; }
.settings-group .setting-row { min-height: 58px; padding: 10px 0; gap: 10px; }
.settings-group .setting-row strong { font-size: .75rem; }
.settings-group .setting-row small { margin-top: 3px; font-size: .61rem; line-height: 1.4; }
.settings-group .setting-row select,
.settings-group .setting-row input:not([type="checkbox"]) { width: min(138px, 44%); min-width: 96px; height: 34px; font-size: .68rem; }
.settings-inline-action { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 12px; }
.settings-inline-action strong { display: block; font-size: .7rem; }
.settings-inline-action small { display: block; margin-top: 2px; font-size: .6rem; color: var(--muted); }
.settings-inline-action button { white-space: nowrap; font-size: .64rem; }
.settings-live-group .location-auto-card { margin: 8px 0 13px; padding: 11px; align-items: flex-start; }
.settings-live-group .location-auto-card strong { font-size: .72rem; }
.settings-live-group .location-auto-card small { font-size: .61rem; }
.settings-live-group .location-auto-card p { font-size: .61rem; line-height: 1.45; }
.settings-live-group .location-auto-card button { align-self: center; padding: 7px 9px; min-height: 32px; font-size: .61rem; }
.integration-block { border-top: 1px solid var(--line); padding-top: 13px; }
.integration-heading { display: grid; grid-template-columns: 28px minmax(0,1fr) auto; gap: 9px; align-items: center; }
.integration-heading > span:first-child { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 8px; background: #5865f218; color: #aeb6ff; }
.integration-heading svg { width: 14px; height: 14px; }
.integration-heading strong { display: block; font-size: .7rem; }
.integration-heading small { display: block; margin-top: 2px; color: var(--soft); font-size: .58rem; }
.integration-badge { justify-self: end; border: 1px solid var(--line); border-radius: 999px; padding: 3px 7px; color: var(--muted); font-size: .55rem; }
.integration-input { display: block; margin-top: 11px; color: var(--muted); font-size: .58rem; }
.integration-input input { width: 100%; height: 35px; margin-top: 5px; font-size: .68rem; }
.integration-status { display: grid; grid-template-columns: 34px minmax(0,1fr) auto; gap: 9px; align-items: center; min-height: 54px; margin-top: 9px; padding: 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--bg); }
.integration-status-icon, .integration-art { width: 34px; height: 34px; border-radius: 7px; object-fit: cover; display: grid; place-items: center; background: var(--panel2); color: var(--accent); }
.integration-status-icon svg { width: 15px; height: 15px; }
.integration-status strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .68rem; }
.integration-status small { display: block; margin-top: 3px; color: var(--muted); font-size: .58rem; line-height: 1.35; }
.integration-status.connected { border-color: color-mix(in srgb, var(--green) 35%, var(--line)); }
.integration-status.disconnected { opacity: .9; }
.live-pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 4px color-mix(in srgb, var(--green) 13%, transparent); }
.integration-help { display: flex; justify-content: space-between; gap: 10px; align-items: center; margin-top: 8px; color: var(--soft); font-size: .56rem; }
.integration-help a { white-space: nowrap; display: inline-flex; align-items: center; gap: 4px; }
.integration-help svg { width: 11px; }
.class-connection-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 78px; }
.class-connection-row strong { display: block; font-size: .72rem; }
.class-connection-row small { display: block; margin-top: 4px; color: var(--muted); font-size: .6rem; line-height: 1.4; }
.class-connection-row > div:last-child { display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.class-connection-row button { font-size: .62rem; padding: 7px 9px; }
.compact-sync { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; background: transparent; border: 0; padding: 0; }
.compact-sync label { font-size: .58rem; color: var(--muted); }
.compact-sync input { width: 100%; margin-top: 5px; height: 34px; font-size: .66rem; }
.settings-account-actions { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; }
.settings-account-actions button { white-space: nowrap; font-size: .62rem; }
.settings-account-actions small { margin: 0; font-size: .57rem; line-height: 1.35; }
.settings-group .data-actions { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.settings-group .data-actions button { font-size: .62rem; }

.activity-card.spotify-activity { grid-template-columns: 58px minmax(0,1fr) auto; }
.activity-card.spotify-activity > img { width: 58px; height: 58px; border-radius: 9px; box-shadow: 0 6px 16px #0005; }
.activity-card.spotify-activity .activity-copy small { color: #8fcaa4; }
.activity-progress { height: 3px; margin-top: 7px; border-radius: 999px; overflow: hidden; background: var(--panel3); }
.activity-progress i { display: block; height: 100%; border-radius: inherit; background: currentColor; color: #8fcaa4; transition: width .25s linear; }

@media (max-width: 1180px) {
  .settings-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .settings-group { border-left: 0 !important; border-top: 0; }
  .settings-group:nth-child(even) { border-left: 1px solid var(--line) !important; }
  .settings-group:nth-child(n+3) { border-top: 1px solid var(--line); }
}
@media (max-width: 760px) {
  #content.settings-page { padding-left: 14px; padding-right: 14px; }
  .settings-overview { align-items: flex-start; flex-direction: column; }
  .settings-health { justify-content: flex-start; }
  .settings-layout { grid-template-columns: 1fr; }
  .settings-group { border-left: 0 !important; border-top: 1px solid var(--line) !important; padding: 16px; }
  .settings-group:first-child { border-top: 0 !important; }
  .compact-sync { grid-template-columns: 1fr; }
  .settings-account-actions { grid-column: 1; align-items: flex-start; flex-direction: column; }
  .class-connection-row { align-items: flex-start; flex-direction: column; }
  .class-connection-row > div:last-child { justify-content: flex-start; }
}

/* 2026-09-16 v4: live activity + settings density fixes */
.settings-kicker {
  display: block;
  margin-bottom: 2px;
  color: var(--accent);
  font-size: .52rem;
  font-weight: 750;
  letter-spacing: .11em;
}
.settings-profile-summary strong { font-size: .96rem; }
#content.settings-page { padding-top: 18px; padding-bottom: 24px; }
@media (min-width: 1320px) {
  .settings-layout { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .settings-group { padding: 16px 18px 18px; }
  .settings-group .setting-row { min-height: 52px; padding: 8px 0; }
}

.activity-section + .activity-section {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.activity-section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 2px 2px 8px;
  color: var(--muted);
}
.activity-section-title > span {
  color: var(--text);
  font-size: .66rem;
  font-weight: 700;
}
.activity-section-title > small { font-size: .54rem; }
.activity-card.mine-activity {
  border-color: color-mix(in srgb, var(--accent) 35%, var(--line));
  background: color-mix(in srgb, var(--accent-bg) 44%, var(--panel2));
}
.activity-empty.compact {
  padding: 24px 14px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: var(--panel2);
}
.activity-empty.compact p { margin: 8px auto 12px; max-width: 230px; }
.activity-empty.compact button { font-size: .62rem; }

.spotify-message {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  gap: 10px;
  align-items: center;
  width: min(430px, 100%);
  margin-top: 4px;
  padding: 10px;
  border: 1px solid color-mix(in srgb, #1ed760 30%, var(--line));
  border-radius: 10px;
  background: color-mix(in srgb, #1ed760 6%, var(--panel2));
}
.spotify-message-mark {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: #1ed76018;
  color: #7de9a3;
}
.spotify-message-mark svg { width: 19px; height: 19px; }
.spotify-message small,
.spotify-message strong,
.spotify-message a { display: block; }
.spotify-message small { color: #7de9a3; font-size: .56rem; }
.spotify-message strong { margin: 3px 0 5px; font-size: .72rem; line-height: 1.35; }
.spotify-message a { width: fit-content; font-size: .6rem; }

/* Let the browser keep the visible message anchored while images and embeds finish loading. */
.message-list { overflow-anchor: auto; }
.message { overflow-anchor: auto; }
.message:last-child { overflow-anchor: auto; }

/* ===== Black River v6 social + school overhaul ===== */
.chat-page{--chat-photo-fit:cover;--chat-photo-position:center;--chat-accent:#8ab4ff}
.chat-page .conversation{background-position:center,var(--chat-photo-position),center;background-size:auto,var(--chat-photo-fit),cover;background-repeat:no-repeat,no-repeat,no-repeat}
.message.own .message-content{border:1px solid color-mix(in srgb,var(--chat-accent) 24%,var(--line));box-shadow:inset 3px 0 color-mix(in srgb,var(--chat-accent) 72%,transparent)}
.message.own .receipt,.message.own .message-author strong{color:color-mix(in srgb,var(--chat-accent) 74%,var(--text))}
.send-button{background:var(--chat-accent,var(--accent));border-color:transparent;color:#07111c}.send-button svg{width:15px;height:15px}

/* Composer: important actions stay visible, everything else lives under + */
.composer-bottom{position:relative;display:flex;align-items:center;gap:8px}.composer-menu-wrap{position:relative;display:flex}.composer-primary-tools{display:flex;align-items:center;gap:2px}.composer-primary-tools .icon-btn,.composer-plus{width:38px;height:38px;border-radius:11px}.composer-plus[aria-expanded="true"]{background:var(--accent-bg);color:var(--accent);transform:rotate(45deg)}
.composer-tools-menu{position:absolute;left:0;bottom:48px;width:260px;padding:8px;border:1px solid var(--line);border-radius:15px;background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:0 18px 50px #0009;backdrop-filter:blur(18px);z-index:40}.composer-tools-menu[hidden]{display:none}.composer-tools-menu button{width:100%;display:flex;align-items:center;gap:11px;border:0;background:transparent;color:var(--text);padding:10px;border-radius:10px;text-align:left}.composer-tools-menu button:hover{background:var(--surface-2)}.composer-tools-menu svg{width:17px;height:17px;color:var(--soft)}.composer-tools-menu span{display:grid;gap:2px}.composer-tools-menu strong{font-size:.75rem}.composer-tools-menu small{font-size:.61rem;color:var(--muted)}
.composer-wrap{border-top-color:color-mix(in srgb,var(--line) 82%,transparent)}#messageForm{border-color:var(--line);box-shadow:0 10px 35px #0004}.send-button span{display:inline}

/* persistent, obvious live activity */
.header-activity-card{border:1px solid color-mix(in srgb,#1ed760 32%,var(--line));background:color-mix(in srgb,var(--panel2) 90%,#1ed760 10%);color:var(--text);border-radius:12px;min-width:190px;max-width:280px;height:48px;padding:5px 9px;display:flex;align-items:center;gap:8px;text-align:left;position:relative;overflow:hidden}.header-activity-card[hidden]{display:none}.header-activity-card>img,.header-activity-card>span{width:34px;height:34px;min-width:34px;border-radius:8px;object-fit:cover;display:grid;place-items:center;background:#1d232a}.header-activity-card>span svg{width:15px;height:15px}.header-activity-card>div{min-width:0;display:grid}.header-activity-card small{font-size:.55rem;color:#77ec9f}.header-activity-card strong,.header-activity-card em{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-activity-card strong{font-size:.69rem}.header-activity-card em{font-size:.56rem;color:var(--muted);font-style:normal}.header-activity-card>i{position:absolute;right:8px;top:8px;width:6px;height:6px;border-radius:50%;background:#1ed760;box-shadow:0 0 0 4px #1ed7601f;animation:br-live-pulse 2s ease infinite}@keyframes br-live-pulse{50%{box-shadow:0 0 0 7px #1ed76000}}
.activity-rail{width:min(360px,34vw)}.activity-card{border-radius:16px;padding:10px}.activity-card>img{width:58px;height:58px;border-radius:10px}.activity-copy strong{font-size:.77rem}.activity-copy span{font-size:.65rem}.activity-progress{height:4px;border-radius:999px;overflow:hidden;background:#ffffff15;margin-top:8px}.activity-progress i{display:block;height:100%;border-radius:inherit;background:#1ed760;transition:width 1s linear}.activity-section-title{position:sticky;top:0;background:var(--panel);z-index:2;padding:9px 0}

/* voice notes + transcript */
#recordingBar{display:flex;align-items:center;gap:12px;padding:9px 12px;border:1px solid color-mix(in srgb,#ff5f6d 40%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--panel) 92%,#ff5f6d 8%);margin-bottom:8px}#recordingBar[hidden]{display:none}.recording-live{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.recording-live>div:nth-child(2){display:grid;min-width:110px}.recording-live strong{font-size:.75rem}.recording-live small{font-size:.58rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recording-wave{height:28px;display:flex;align-items:center;gap:2px;overflow:hidden;flex:1}.recording-wave i{display:block;width:3px;height:8px;border-radius:999px;background:#ff7884;animation:br-wave .7s ease-in-out infinite alternate;animation-delay:calc(var(--i)*-45ms)}@keyframes br-wave{to{height:25px}}.voice-review{display:grid;gap:14px}.voice-review-player{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface-2)}.voice-review-player audio{width:100%}.voice-review textarea{min-height:96px;resize:vertical}.voice-transcript{margin-top:8px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--surface-2) 80%,transparent);overflow:hidden}.voice-transcript summary{cursor:pointer;display:flex;align-items:center;gap:7px;padding:8px 10px;color:var(--soft);font-size:.65rem;font-weight:700;list-style:none}.voice-transcript summary::-webkit-details-marker{display:none}.voice-transcript summary svg{width:13px;height:13px}.voice-transcript p{margin:0;padding:0 10px 10px;font-size:.75rem;line-height:1.5;color:var(--text)}

/* transparent GIFs/stickers do not get forced black boxes */
.image-attachment.transparent-media{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important}.image-attachment.transparent-media img{background:transparent!important;object-fit:contain;max-height:300px}.gif-grid button{background:transparent!important}.gif-grid img{background:transparent;object-fit:cover}.gif-tabs{border:1px solid var(--line);padding:3px;border-radius:11px;background:var(--surface-2)}

/* Background editor with real preview before apply */
.chat-theme-editor{display:grid;gap:16px}.chat-theme-preview{--preview-overlay:.72;--preview-fit:cover;--preview-pos:center;--preview-photo:none;--preview-accent:#8ab4ff;position:relative;min-height:330px;border:1px solid var(--line);border-radius:18px;overflow:hidden;padding:14px;display:grid;grid-template-rows:auto 1fr auto;background-image:linear-gradient(rgb(10 13 16/var(--preview-overlay)),rgb(10 13 16/var(--preview-overlay))),var(--preview-photo),radial-gradient(circle at 80% 0,#23446d,#0b0e12 65%);background-position:center,var(--preview-pos),center;background-size:auto,var(--preview-fit),cover;background-repeat:no-repeat}.chat-theme-preview[data-preview-theme="aurora"]{background-image:linear-gradient(rgb(7 13 18/var(--preview-overlay)),rgb(7 13 18/var(--preview-overlay))),var(--preview-photo),linear-gradient(135deg,#10243c,#1a514a 50%,#392652)}.chat-theme-preview[data-preview-theme="sunset"]{background-image:linear-gradient(rgb(15 9 14/var(--preview-overlay)),rgb(15 9 14/var(--preview-overlay))),var(--preview-photo),linear-gradient(135deg,#441f3b,#9a452e 55%,#161b35)}.chat-theme-preview[data-preview-theme="ocean"]{background-image:linear-gradient(rgb(5 13 18/var(--preview-overlay)),rgb(5 13 18/var(--preview-overlay))),var(--preview-photo),linear-gradient(145deg,#062c3d,#0d6070 55%,#071e35)}.chat-theme-preview[data-preview-theme="forest"]{background-image:linear-gradient(rgb(7 13 10/var(--preview-overlay)),rgb(7 13 10/var(--preview-overlay))),var(--preview-photo),linear-gradient(145deg,#132b23,#2d5131 55%,#101d1d)}.theme-preview-top{display:flex;align-items:center;gap:8px;border-bottom:1px solid #ffffff14;padding-bottom:10px}.theme-preview-top>div{display:grid}.theme-preview-top strong{font-size:.72rem}.theme-preview-top small{font-size:.56rem;color:#bdc5cf}.theme-preview-messages{display:flex;flex-direction:column;justify-content:center;gap:10px;padding:22px 6%}.theme-demo-message{display:flex;align-items:flex-start;gap:8px;max-width:78%}.theme-demo-message>div{padding:9px 11px;background:#171c22dd;border-radius:4px 12px 12px 12px;font-size:.72rem}.theme-demo-message.own{align-self:flex-end}.theme-demo-message.own>div{border:1px solid color-mix(in srgb,var(--preview-accent) 35%,#ffffff18);box-shadow:inset 3px 0 var(--preview-accent);border-radius:12px 4px 12px 12px}.theme-preview-composer{height:42px;border:1px solid #ffffff20;border-radius:12px;background:#11151bcc;padding:0 12px;display:flex;align-items:center;justify-content:space-between;color:#85909d;font-size:.67rem}.theme-preview-composer span{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:var(--preview-accent);color:#07111c}.theme-preview-composer svg{width:13px}.theme-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.theme-editor-grid section{min-width:0}.theme-editor-grid h3{margin:0 0 8px;font-size:.72rem}.theme-fit-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.theme-editor-grid label{font-size:.62rem}.theme-editor-grid select{width:100%}.theme-editor-grid input[type=color]{width:48px;height:34px;padding:2px;border-radius:9px}.theme-editor-actions{display:flex;justify-content:flex-end;gap:8px}.theme-upload{margin-top:9px}

/* Games are a Black River surface, not a foreign modal */
.games-hub{display:grid;gap:14px}.games-hub-hero{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent-bg) 80%,transparent),var(--panel2))}.games-hub-hero small{font-size:.55rem;letter-spacing:.16em;color:var(--accent)}.games-hub-hero h3{margin:4px 0;font-size:1rem}.games-hub-hero p{margin:0;color:var(--muted);font-size:.65rem}.games-hub-hero>span{width:46px;height:46px;display:grid;place-items:center;border-radius:13px;background:var(--accent);color:#08111c}.games-toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between}.game-categories{display:flex;gap:5px;overflow:auto;padding-bottom:2px}.game-categories button{white-space:nowrap;border:1px solid var(--line);background:var(--surface-2);color:var(--muted);border-radius:999px;padding:7px 10px;font-size:.62rem}.game-categories button.active{background:var(--accent-bg);border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--accent)}.search-field.compact{max-width:220px}.game-catalog-v6{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.game-card-v6{display:grid!important;grid-template-columns:54px 1fr auto!important;align-items:center!important;gap:11px!important;min-height:86px!important;text-align:left!important;border-radius:14px!important;padding:10px!important}.game-card-v6>svg{width:15px;color:var(--muted)}.game-card-art{width:54px;height:54px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,#212c39,#13181e);color:#a9c8ff}.game-card-art[data-game-art="ai"]{background:linear-gradient(135deg,#32264f,#161824);color:#c8aaff}.game-card-art[data-game-art="short"]{background:linear-gradient(135deg,#183447,#151a21);color:#79cff5}.game-card-art svg{width:23px;height:23px}.game-card-top{display:flex;justify-content:space-between;gap:8px}.game-card-top span{font-size:.5rem;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 6px}.game-card-v6 strong{font-size:.72rem}.game-card-v6 small{font-size:.56rem;color:var(--muted)}.game-card-v6 p{font-size:.58rem!important;margin:4px 0 0!important;line-height:1.4!important}.game-panel-v6 header>span{display:flex;align-items:center;gap:9px}.game-panel-v6 header>span>div{display:grid}.game-panel-v6 header small{font-size:.52rem;color:var(--muted);font-weight:500}.game-panel-v6 footer{display:flex;align-items:center;justify-content:space-between;gap:12px}

/* Calls: clearer transitions, effects, and mini chat */
.incoming-call{animation:br-call-in .28s cubic-bezier(.2,.8,.2,1)}@keyframes br-call-in{from{opacity:0;transform:translate(-50%,16px) scale(.96)}}.call-overlay{animation:br-call-stage-in .34s cubic-bezier(.2,.8,.2,1)}@keyframes br-call-stage-in{from{opacity:0;transform:scale(.985)}}.call-ending>*:not(.call-end-state){animation:br-call-out .35s ease forwards}@keyframes br-call-out{to{opacity:.18;filter:blur(5px);transform:scale(.985)}}.call-end-state{position:absolute;inset:0;z-index:100;display:grid;place-items:center;align-content:center;gap:8px;background:#080a0dd9;backdrop-filter:blur(16px);animation:br-call-end .28s ease}.call-end-state>svg{width:34px;height:34px;padding:8px;border-radius:50%;background:var(--panel2)}.call-end-state strong{font-size:1.05rem}.call-end-state small{font-size:.64rem;color:var(--muted)}@keyframes br-call-end{from{opacity:0}}.local-tile.hearts-effect::after{content:'♥  ♡  ♥';position:absolute;inset:10px;color:#ff8aa1;font-size:24px;letter-spacing:9px;text-shadow:0 2px 12px #000;pointer-events:none;animation:br-hearts 2s ease-in-out infinite alternate}@keyframes br-hearts{to{transform:translateY(8px);opacity:.65}}.call-chat-panel{border-radius:17px;box-shadow:0 20px 70px #0009}.call-chat-head{height:44px}.call-chat-messages{padding:10px}.call-chat-composer{padding:8px;background:color-mix(in srgb,var(--panel) 90%,transparent)}

/* School classes page */
.school-classes-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:14px}.school-schedule-card,.school-upcoming{border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:15px}.school-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.school-card-head h2{margin:3px 0 0;font-size:.9rem}.school-day-chip{border:1px solid var(--line);border-radius:999px;padding:6px 9px;color:var(--muted);font-size:.56rem}.school-periods{display:grid;grid-template-columns:1fr 1fr;gap:7px}.school-period{display:grid;grid-template-columns:27px 35px 1fr auto;align-items:center;gap:9px;border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:12px;padding:9px;text-align:left}.period-number{width:27px;height:27px;display:grid;place-items:center;border-radius:8px;background:var(--bg);font-size:.62rem;color:var(--muted)}.school-period>i{width:35px;height:35px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--course) 16%,var(--bg));color:var(--course)}.school-period>i svg{width:16px}.school-period>span:nth-child(3){display:grid;gap:2px}.school-period strong{font-size:.68rem}.school-period small{font-size:.55rem;color:var(--muted)}.school-period>svg{width:14px;color:var(--muted)}.school-upcoming{display:flex;flex-direction:column}.school-upcoming-item{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:9px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--text);padding:10px 2px;text-align:left}.school-upcoming-item>span{width:34px;height:34px;border-radius:9px;background:color-mix(in srgb,var(--course) 15%,var(--surface-2));color:var(--course);display:grid;place-items:center}.school-upcoming-item svg{width:15px}.school-upcoming-item div{display:grid;gap:2px}.school-upcoming-item strong{font-size:.65rem}.school-upcoming-item small{font-size:.54rem;color:var(--muted)}.school-upcoming-item b{font-size:.55rem;color:var(--soft)}.school-course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.school-course-card{border:1px solid var(--line);border-radius:15px;background:var(--panel);color:var(--text);overflow:hidden;text-align:left;padding:0}.school-course-cover{height:92px;position:relative;overflow:hidden;background:var(--surface-2)}.school-course-cover img{width:100%;height:100%;object-fit:cover;opacity:.7;transition:transform .3s ease}.school-course-card:hover .school-course-cover img{transform:scale(1.04)}.school-course-cover>span{position:absolute;left:10px;bottom:10px;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--course) 85%,#111);color:#fff;box-shadow:0 5px 18px #0007}.school-course-cover svg{width:16px}.school-course-copy{padding:11px;display:grid;gap:3px}.school-course-copy>small{font-size:.52rem;color:var(--course);font-weight:800}.school-course-copy>strong{font-size:.74rem}.school-course-copy>span{font-size:.57rem;color:var(--muted)}.school-course-copy>div{display:flex;align-items:center;gap:7px;margin-top:7px}.school-course-copy>div>i{height:4px;flex:1;border-radius:999px;background:var(--surface-2);overflow:hidden}.school-course-copy>div>i>i{display:block;height:100%;background:var(--course)}.school-course-copy b{font-size:.5rem;color:var(--muted)}

/* Settings: use desktop width instead of endless vertical stacks */
@media(min-width:1380px){.settings-layout{grid-template-columns:repeat(4,minmax(0,1fr))!important}.settings-group:nth-child(n){border-left:0!important;border-top:0!important}.settings-group:not(:nth-child(4n+1)){border-left:1px solid var(--line)!important}.settings-group:nth-child(n+5){border-top:1px solid var(--line)!important}.settings-group{padding:14px 17px 16px!important}.settings-group .setting-row{min-height:48px!important;padding:7px 0!important}.settings-workspace{max-width:1680px;margin:0 auto}}
.settings-overview{position:sticky;top:0;z-index:15;backdrop-filter:blur(18px);background:color-mix(in srgb,var(--panel) 92%,transparent)}

@media(max-width:980px){.header-activity-card{min-width:0;width:46px;padding:5px}.header-activity-card>div{display:none}.header-activity-card>i{right:5px;top:5px}.game-catalog-v6{grid-template-columns:1fr}.school-classes-layout{grid-template-columns:1fr}.school-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.theme-editor-grid{grid-template-columns:1fr}.games-toolbar{align-items:stretch;flex-direction:column}.search-field.compact{max-width:none}}
@media(max-width:700px){.composer-wrap{padding-bottom:max(8px,env(safe-area-inset-bottom))}.composer-hint{display:none}.composer-primary-tools .icon-btn,.composer-plus{width:36px;height:36px}.send-button{width:40px;padding:0;justify-content:center}.send-button span{display:none}.composer-tools-menu{position:fixed;left:12px;right:12px;bottom:calc(86px + env(safe-area-inset-bottom));width:auto;max-width:none}.activity-rail{position:fixed!important;inset:calc(58px + env(safe-area-inset-top)) 0 0 0!important;width:auto!important;z-index:80}.theme-presets{grid-template-columns:repeat(3,1fr)}.chat-theme-preview{min-height:280px}.school-periods{grid-template-columns:1fr}.school-course-grid{grid-template-columns:1fr 1fr}.school-course-cover{height:75px}.game-panel-v6 footer span{display:none}.recording-wave{display:none}#recordingBar{gap:6px}.settings-overview{position:static}}
@media(max-width:430px){.school-course-grid{grid-template-columns:1fr}.composer-primary-tools{gap:0}.conversation-header .conversation-tools{gap:0}.header-activity-card{display:none!important}}

/* v6 camera capture */
.camera-capture{display:grid;gap:14px}.camera-toolbar{display:flex;align-items:end;justify-content:space-between;gap:12px;min-height:28px}.camera-toolbar label{display:grid;gap:5px;font-size:.68rem;color:var(--muted);min-width:min(320px,60vw)}.camera-toolbar select{min-height:38px}.camera-toolbar>span{font-size:.68rem;color:var(--muted);margin-left:auto}.camera-preview{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:#050607;aspect-ratio:4/3;min-height:260px}.camera-preview video,.camera-preview img{width:100%;height:100%;object-fit:cover;display:block}.camera-preview video.mirror{transform:scaleX(-1)}.camera-preview [hidden]{display:none}.camera-countdown{position:absolute;inset:0;display:grid;place-items:center;background:#0005;color:#fff;font:800 clamp(54px,12vw,110px)/1 system-ui;backdrop-filter:blur(2px)}.camera-actions{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap}.camera-shutter{width:64px;height:64px;border-radius:999px;border:3px solid #fff;background:transparent;padding:5px;display:grid;place-items:center;cursor:pointer}.camera-shutter span{display:block;width:100%;height:100%;border-radius:50%;background:#fff;transition:transform .12s ease}.camera-shutter:active span{transform:scale(.88)}
@media(max-width:700px){.camera-toolbar{align-items:stretch;flex-direction:column}.camera-toolbar label{min-width:0;width:100%}.camera-toolbar>span{margin-left:0}.camera-preview{border-radius:14px;min-height:0;aspect-ratio:3/4}.camera-actions{position:sticky;bottom:0;padding:8px 0}.camera-actions .secondary,.camera-actions .primary{min-height:44px}.camera-shutter{width:68px;height:68px}}

/* =========================================================
   Black River v7 final — platform aware settings + chat polish
   ========================================================= */
.settings-v7 .settings-overview{position:relative;top:auto}
.settings-commandbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 14px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 72%,var(--panel));position:sticky;top:0;z-index:14;backdrop-filter:blur(16px)}
.settings-tabs{display:flex;align-items:center;gap:5px;min-width:0;overflow:auto;scrollbar-width:none}
.settings-tabs::-webkit-scrollbar{display:none}
.settings-tabs button{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;border:1px solid transparent;background:transparent;color:var(--muted);min-height:36px;border-radius:9px;padding:7px 10px;font-size:.64rem;font-weight:700}
.settings-tabs button svg{width:14px;height:14px}
.settings-tabs button:hover{background:var(--panel2);color:var(--text)}
.settings-tabs button.active{background:var(--accent-bg);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 25%,var(--line))}
.settings-search{display:flex;align-items:center;gap:7px;width:min(260px,30vw);min-width:180px;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--muted)}
.settings-search svg{width:14px;flex:0 0 auto}
.settings-search input{width:100%;min-width:0;border:0!important;background:transparent!important;padding:0!important;outline:0!important;font-size:.66rem!important}
.settings-tabbed{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0}
.settings-tabbed .settings-group{border:0!important;border-left:0!important;border-top:0!important;padding:20px 22px!important}
.settings-tabbed .settings-group:nth-of-type(even):not([hidden]){border-left:1px solid var(--line)!important}
.settings-tabbed .settings-group:not([hidden])~.settings-group:not([hidden]){border-top:0!important}
.settings-tabbed .settings-group[hidden]{display:none!important}
.settings-tabbed.searching{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.settings-tabbed.searching .settings-group{border:1px solid var(--line)!important;margin:-1px 0 0 -1px!important}
.settings-no-results{grid-column:1/-1;min-height:260px;display:grid;place-items:center;align-content:center;text-align:center;gap:7px;color:var(--muted)}
.settings-no-results[hidden]{display:none}
.settings-no-results svg{width:28px;height:28px;color:var(--soft)}
.settings-no-results strong{font-size:.8rem;color:var(--text)}
.settings-no-results small{font-size:.62rem}
.device-summary-card{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--bg);margin:8px 0 10px}
.device-summary-card strong{display:block;font-size:.74rem}
.device-summary-card small{display:block;margin-top:4px;color:var(--muted);font-size:.6rem;line-height:1.45}
.platform-chip{flex:0 0 auto;border:1px solid var(--line);border-radius:999px;padding:4px 8px;font-size:.55rem;color:var(--soft);background:var(--panel2)}
.settings-device-actions{display:flex;gap:7px;flex-wrap:wrap}.settings-device-actions button{font-size:.61rem}
.storage-summary{display:flex;align-items:center;gap:10px;margin-top:10px;padding:10px 2px;border-top:1px solid var(--line)}
.storage-summary>span{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--panel2);color:var(--accent)}
.storage-summary svg{width:14px}.storage-summary strong{display:block;font-size:.68rem}.storage-summary small{display:block;margin-top:2px;color:var(--muted);font-size:.57rem}
.capability-list{display:grid;gap:7px;margin-top:7px}.capability-list.compact{margin-top:12px}
.capability-row{display:grid;grid-template-columns:27px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:49px;padding:8px 9px;border:1px solid var(--line);border-radius:9px;background:var(--bg)}
.capability-row>span{width:27px;height:27px;border-radius:8px;display:grid;place-items:center;background:var(--panel2);color:var(--muted)}.capability-row>span svg{width:13px}
.capability-row.supported>span{color:var(--green);background:color-mix(in srgb,var(--green) 10%,var(--panel2))}.capability-row.unavailable{opacity:.68}
.capability-row strong{display:block;font-size:.66rem}.capability-row small{display:block;margin-top:2px;color:var(--muted);font-size:.55rem;line-height:1.35}.capability-row b{font-size:.54rem;color:var(--soft);font-weight:700}
.attachment-capability{padding:13px;border:1px solid var(--line);border-radius:10px;background:var(--bg)}.attachment-capability strong{display:block;font-size:.7rem}.attachment-capability small{display:block;margin-top:4px;font-size:.59rem;line-height:1.5;color:var(--muted)}
.settings-chat-preview{display:grid;gap:7px;padding:14px;border:1px solid var(--line);border-radius:13px;background:radial-gradient(circle at 90% 10%,color-mix(in srgb,var(--settings-chat-accent) 14%,transparent),transparent 55%),#0d1117;margin:8px 0 10px;min-height:150px;color:#eef4fb;overflow:hidden}
.settings-chat-preview>div{display:flex;align-items:flex-end;gap:6px}.settings-chat-preview>div.own{justify-content:flex-end}.settings-chat-preview p{margin:0;padding:8px 10px;border-radius:12px 12px 12px 4px;background:#1a2029;font-size:.59rem;max-width:78%}.settings-chat-preview .own p{background:color-mix(in srgb,var(--settings-chat-accent) 24%,#151a22);box-shadow:inset 3px 0 color-mix(in srgb,var(--settings-chat-accent) 75%,transparent);border-radius:12px 12px 4px 12px}.mini-avatar{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#283241;font-size:.52rem}.settings-chat-preview footer{margin-top:auto;height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 8px 0 11px;border:1px solid #ffffff12;border-radius:10px;background:#0a0d11;color:#7f8b99;font-size:.56rem}.settings-chat-preview footer i{width:25px;height:25px;display:grid;place-items:center;border-radius:8px;background:var(--settings-chat-accent);color:#07111c}.settings-chat-preview footer svg{width:12px}

/* Composer: primary actions stay visible, everything else lives in one intentional menu. */
.composer-bottom{gap:7px}.composer-primary-tools{display:flex;align-items:center;gap:2px;padding:2px;border-radius:10px;background:color-mix(in srgb,var(--panel2) 70%,transparent)}
.composer-plus{border-radius:10px!important}.composer-tools-menu{width:340px!important;grid-template-columns:1fr 1fr!important;padding:7px!important;gap:4px!important}.composer-tools-menu button{border-radius:10px!important;min-height:58px!important}.composer-tools-menu button span{display:grid;gap:2px}.composer-tools-menu button strong{font-size:.65rem}.composer-tools-menu button small{font-size:.53rem;color:var(--muted);font-weight:500}
.staged-file.video-staged video{width:58px;height:44px;border-radius:7px;object-fit:cover;background:#050607}

/* Live activity is always discoverable and behaves like a compact now-playing surface. */
.header-activity-card{display:grid!important;grid-template-columns:34px minmax(0,1fr) 8px;align-items:center;gap:8px;min-width:190px;max-width:280px;min-height:44px;padding:5px 8px 5px 5px!important;border:1px solid var(--line)!important;border-radius:11px!important;background:color-mix(in srgb,var(--panel2) 94%,transparent)!important;color:var(--text)!important;text-align:left;overflow:hidden;position:relative}
.header-activity-card[hidden]{display:none!important}.header-activity-card>img,.header-activity-card>span{width:34px;height:34px;border-radius:8px;object-fit:cover;display:grid;place-items:center;background:var(--bg);color:var(--accent)}.header-activity-card>span svg{width:15px}.header-activity-card>div{min-width:0;display:grid;gap:1px}.header-activity-card small{font-size:.5rem;color:var(--soft)}.header-activity-card strong,.header-activity-card em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-activity-card strong{font-size:.62rem}.header-activity-card em{font-style:normal;font-size:.51rem;color:var(--muted)}.header-live-dot{width:7px!important;height:7px!important;border-radius:50%;background:#4dc17b!important;box-shadow:0 0 0 3px #4dc17b1c}.header-activity-card[data-state="setup"] .header-live-dot{display:none}.header-activity-progress{display:block;height:2px;border-radius:999px;background:#ffffff12;margin-top:3px;overflow:hidden}.header-activity-progress i{display:block;height:100%;background:#1ed760;width:0;border-radius:inherit;transition:width .6s linear}
.activity-time{font-size:.5rem!important;margin-top:3px!important;color:var(--soft)!important;font-variant-numeric:tabular-nums}.activity-card.spotify-activity{background:linear-gradient(145deg,color-mix(in srgb,#1ed760 7%,var(--panel2)),var(--panel2))}
.live-activity-message{display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:10px;width:min(390px,78vw);padding:9px;border:1px solid var(--line);border-radius:13px;background:var(--panel2);color:var(--text);text-align:left;margin-top:5px}.live-activity-message>img,.live-activity-message-icon{width:48px;height:48px;border-radius:9px;object-fit:cover;display:grid;place-items:center;background:var(--bg);color:var(--accent)}.live-activity-message>img{box-shadow:0 5px 16px #0005}.live-activity-message>div{min-width:0}.live-activity-message small,.live-activity-message span,.live-activity-message em{display:block}.live-activity-message small{font-size:.52rem;color:var(--soft)}.live-activity-message strong{display:block;font-size:.68rem;margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-activity-message span{font-size:.57rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.live-activity-message em{font-style:normal}.live-activity-message.spotify{border-color:color-mix(in srgb,#1ed760 24%,var(--line))}.live-activity-message.unavailable{opacity:.72}

/* Chat appearance preview now makes crop/fit obvious on desktop and phone. */
.theme-preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.theme-preview-toolbar>span{font-size:.61rem;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.theme-preview-toolbar>div{display:flex;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}.theme-preview-toolbar button{display:flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--muted);border-radius:6px;padding:5px 8px;font-size:.57rem}.theme-preview-toolbar button svg{width:12px}.theme-preview-toolbar button.active{background:var(--bg);color:var(--text)}.chat-theme-preview{transition:max-width .2s ease,aspect-ratio .2s ease,background-position .15s ease}.chat-theme-preview.phone-preview{max-width:340px;aspect-ratio:9/16;margin-inline:auto;min-height:420px}.theme-image-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.theme-image-actions .theme-upload{margin:0}.theme-image-actions button{font-size:.61rem}

/* Call controls only expose features the platform can actually provide. */
.call-platform-note{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel2)}.call-platform-note>svg{width:17px;color:var(--accent);flex:0 0 auto}.call-platform-note strong{display:block;font-size:.66rem}.call-platform-note small{display:block;margin-top:3px;font-size:.56rem;line-height:1.45;color:var(--muted)}.call-device-settings label>small{display:block;margin-top:4px;font-size:.54rem;color:var(--muted);line-height:1.4}
.call-chat-panel{overflow:hidden}.call-chat-messages{scrollbar-width:thin}.call-chat-composer textarea{min-height:38px;max-height:100px}.call-chat-message .call-chat-text{line-height:1.45}

/* Platform-specific: remove desktop affordances instead of leaving dead controls in the PWA. */
html[data-display-mode="standalone"][data-platform="ios"] .desktop-only{display:none!important}
html[data-input="touch"] .desktop-drag-hint{display:none!important}

@media(min-width:1200px){
  .settings-v7{max-width:1760px;margin:0 auto}.settings-tabbed{min-height:470px}.settings-tabbed .settings-group{min-height:390px}
}
@media(max-width:980px){
  .settings-tabbed,.settings-tabbed.searching{grid-template-columns:1fr!important}.settings-tabbed .settings-group{border-left:0!important;border-top:1px solid var(--line)!important;min-height:0}.settings-tabbed .settings-group:first-of-type:not([hidden]){border-top:0!important}.settings-commandbar{align-items:stretch;flex-direction:column}.settings-search{width:100%;min-width:0}.settings-tabs{width:100%}
  .header-activity-card{min-width:44px!important;width:44px!important;grid-template-columns:34px!important;padding:4px!important}.header-activity-card>div,.header-activity-card>.header-live-dot{display:none!important}
}
@media(max-width:700px){
  #content.settings-page{padding:10px 8px max(18px,env(safe-area-inset-bottom))}.settings-v7{border-radius:11px}.settings-overview{padding:12px}.settings-health{display:none}.settings-commandbar{position:sticky;top:0;padding:8px;background:color-mix(in srgb,var(--panel) 96%,transparent)}.settings-tabs button{min-height:34px;padding:6px 8px}.settings-tabbed .settings-group{padding:16px!important}.settings-tabbed .settings-group .setting-row{min-height:54px}.settings-tabbed .settings-group .setting-row select,.settings-tabbed .settings-group .setting-row input:not([type="checkbox"]){max-width:45%}.settings-chat-preview{min-height:142px}
  .composer-tools-menu{grid-template-columns:1fr 1fr!important;width:auto!important;max-height:min(62vh,480px);overflow:auto}.composer-tools-menu button{min-height:62px!important}.composer-primary-tools{background:transparent;padding:0}.header-activity-card{display:grid!important}
  .call-chat-panel{position:fixed!important;left:8px!important;right:8px!important;top:auto!important;bottom:max(86px,calc(76px + env(safe-area-inset-bottom)))!important;width:auto!important;height:min(54vh,430px)!important;border-radius:16px!important}.call-chat-head{cursor:default!important}.call-overlay .call-note{display:none}
  .theme-preview-toolbar{align-items:flex-start}.theme-preview-toolbar>div{flex:0 0 auto}.chat-theme-preview.phone-preview{min-height:360px;max-width:280px}.theme-image-actions>*{flex:1;justify-content:center}
}
@media(max-width:430px){
  .header-activity-card{display:grid!important}.conversation-header{gap:5px}.conversation-header #roomIdentity{min-width:0}.conversation-tools .icon-btn{width:34px;height:34px}.composer-tools-menu{grid-template-columns:1fr!important}.settings-profile-summary .avatar{width:38px;height:38px;min-width:38px}.settings-profile-summary span{max-width:60vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}


/* v7 final: platform-aware chat polish */
.jump-latest{position:absolute;left:50%;bottom:118px;transform:translateX(-50%);z-index:26;display:flex;align-items:center;gap:6px;min-height:34px;padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--panel) 94%,transparent);color:var(--text);box-shadow:0 10px 32px #0007;backdrop-filter:blur(16px);font-size:.61rem;font-weight:750}
.jump-latest[hidden]{display:none!important}.jump-latest svg{width:14px}.jump-latest b{min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:grid;place-items:center;background:var(--accent);color:var(--bg);font-size:.5rem}.jump-latest b[hidden]{display:none}
.pwa-capability-note,.attachment-picker-note{display:flex;align-items:flex-start;gap:9px;margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.pwa-capability-note>svg,.attachment-picker-note>svg{width:16px;color:var(--accent);flex:0 0 auto}.pwa-capability-note strong,.attachment-picker-note strong{display:block;font-size:.65rem}.pwa-capability-note small,.attachment-picker-note small{display:block;margin-top:3px;font-size:.55rem;line-height:1.45;color:var(--muted)}
.settings-tabbed .settings-group{align-content:start}.settings-group .capability-list:empty{display:none}.settings-device-actions,.settings-inline-action{flex-wrap:wrap}
html[data-platform="ios"][data-display-mode="standalone"] .desktop-only,html[data-platform="ios"][data-display-mode="standalone"] [data-desktop-only="true"]{display:none!important}
html[data-input="touch"] .composer-tools-menu{overscroll-behavior:contain}
@media(max-width:700px){
  .jump-latest{bottom:calc(92px + env(safe-area-inset-bottom));min-height:36px}
  .composer-tools-menu{left:8px!important;right:8px!important;bottom:calc(76px + env(safe-area-inset-bottom))!important;border-radius:18px!important;padding:8px!important;box-shadow:0 -18px 60px #0009!important}
  .composer-tools-menu::before{content:"";grid-column:1/-1;width:34px;height:4px;border-radius:999px;background:var(--line-strong,var(--line));justify-self:center;margin:0 auto 3px}
  .composer-primary-tools{gap:1px}.composer-primary-tools .icon-btn{min-width:36px}
  .settings-tabbed .settings-group{min-height:0!important}.settings-commandbar{backdrop-filter:blur(20px)}
}
@media(min-width:1200px){
  .settings-tabbed{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .settings-tabbed .settings-group{min-height:0!important;padding:18px 22px!important}
}


/* ===== v7.1 composer repair: accessible tool drawer + compact Discord-style message bar ===== */
#messageForm{
  overflow:visible!important;
  position:relative;
  border-radius:12px;
}
#messageForm .composer-row{
  display:flex;
  align-items:flex-end;
  gap:4px;
  min-height:50px;
  padding:6px 7px;
}
#messageForm #messageInput{
  flex:1;
  min-width:0;
  min-height:38px;
  max-height:150px;
  padding:9px 8px 8px;
  resize:none;
  line-height:1.45;
}
#messageForm .composer-menu-wrap{
  align-self:flex-end;
  flex:0 0 auto;
}
#messageForm .composer-primary-tools{
  align-self:flex-end;
  display:flex;
  align-items:center;
  gap:0;
  padding:0;
  background:transparent;
  flex:0 0 auto;
}
#messageForm .composer-primary-tools .icon-btn,
#messageForm .composer-plus{
  width:34px;
  min-width:34px;
  height:34px;
  border-radius:8px;
  color:var(--muted);
}
#messageForm .composer-primary-tools .icon-btn:hover,
#messageForm .composer-plus:hover,
#messageForm .composer-primary-tools .icon-btn:focus-visible,
#messageForm .composer-plus:focus-visible{
  background:var(--surface-2);
  color:var(--text);
}
#messageForm .composer-plus[aria-expanded="true"]{
  transform:rotate(45deg);
  background:var(--surface-2);
  color:var(--text);
}
.gif-quick .gif-mark{
  display:grid;
  place-items:center;
  height:18px;
  min-width:25px;
  padding:0 3px;
  border-radius:4px;
  background:currentColor;
  color:var(--panel);
  font-size:9px;
  line-height:1;
  font-weight:950;
  letter-spacing:-.04em;
}
.gif-quick:hover .gif-mark,
.gif-quick:focus-visible .gif-mark{color:var(--surface-2)}
#messageForm .send-button{
  align-self:flex-end;
  width:34px;
  min-width:34px;
  height:34px;
  min-height:34px;
  padding:0;
  border-radius:8px;
  display:grid;
  place-items:center;
}
#messageForm .send-button span{display:none}
#messageForm .send-button svg{width:15px;height:15px}
.composer-tools-menu{
  display:grid;
  grid-template-columns:1fr!important;
  left:0!important;
  bottom:44px!important;
  width:min(310px,calc(100vw - 32px))!important;
  max-height:min(70vh,520px);
  overflow:auto;
  padding:6px!important;
  border-radius:12px!important;
  background:var(--panel)!important;
  box-shadow:0 18px 55px #000b!important;
  z-index:250!important;
  overscroll-behavior:contain;
}
.composer-tools-menu[hidden]{display:none!important}
.composer-tools-section{display:grid;gap:2px}
.composer-tools-divider{height:1px;background:var(--line);margin:5px 4px}
.composer-tools-menu button{
  min-height:46px!important;
  padding:7px 9px!important;
  border-radius:8px!important;
}
.composer-tools-menu button>svg{width:17px;height:17px}
.composer-tools-menu button strong{font-size:.68rem!important}
.composer-tools-menu button small{font-size:.55rem!important;line-height:1.35}
@media(max-width:820px){
  .composer-wrap{padding-left:8px;padding-right:8px}
  #messageForm .composer-row{gap:2px;padding:5px}
  #messageForm .composer-primary-tools .icon-btn,
  #messageForm .composer-plus{width:33px;min-width:33px;height:33px}
  #messageForm .composer-attach-quick{display:none}
  #messageForm .send-button{width:33px;min-width:33px;height:33px}
  .composer-tools-menu{
    position:fixed!important;
    left:8px!important;
    right:8px!important;
    bottom:calc(72px + env(safe-area-inset-bottom))!important;
    width:auto!important;
    max-height:min(58vh,460px)!important;
    border-radius:16px!important;
    padding:8px!important;
  }
  .composer-tools-menu::before{display:none!important}
}
@media(max-width:430px){
  #messageForm .composer-primary-tools #emojiBtn{display:none}
  #messageForm .composer-row{align-items:flex-end}
  #messageForm #messageInput{padding-inline:6px}
}

/* ===== v7.2 density pass: compact chat + automatic activity ===== */
body:has(.chat-page) .topbar{
  height:40px!important;
  min-height:40px!important;
  padding:0 14px!important;
}
body:has(.chat-page) .topbar .brand,
body:has(.chat-page) .topbar .crumbs{font-size:.68rem!important}
#content.chat-page{height:calc(100dvh - 40px)!important}
.chat-shell{grid-template-columns:220px minmax(0,1fr)!important}
.chat-sidebar{padding:12px 9px 8px!important}
.chat-brand{gap:8px!important;padding:0 6px!important}
.chat-brand h2{font-size:.86rem!important;line-height:1.1!important}
.chat-brand small{display:none!important}
.space-mark{width:30px!important;height:30px!important;border-radius:8px!important}
.space-mark svg{width:15px!important;height:15px!important}
.back-study{margin:10px 0 10px!important;padding:6px 7px!important;font-size:.62rem!important;min-height:30px!important}
.member-search{margin-bottom:9px!important;padding:0 8px!important;border-radius:8px!important;gap:7px!important}
.member-search input{padding:7px 0!important;font-size:.66rem!important;min-height:30px!important}
.room-link,.member-link{gap:8px!important;padding:7px!important;min-height:42px!important;border-radius:8px!important}
.room-link .avatar,.member-link .avatar,.chat-self .avatar{width:28px!important;height:28px!important;min-width:28px!important;font-size:.58rem!important}
.room-link span:nth-child(2),.member-link span:nth-child(2){font-size:.7rem!important}
.room-link small{display:none!important}
.member-link small{font-size:.53rem!important;margin-top:1px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.member-location,.member-activity{display:none!important}
.chat-section-label{margin:8px 0 4px!important;padding-left:7px!important;font-size:.49rem!important}
.chat-section-label button{width:23px!important;min-width:23px!important;height:23px!important;min-height:23px!important}
.chat-self{padding-top:7px!important;gap:4px!important}
.chat-self>button:first-child{padding:3px!important}
.chat-self>button span:nth-child(2){font-size:.66rem!important}
.chat-self small{font-size:.5rem!important;margin-top:1px!important}

.conversation-header{
  height:48px!important;
  min-height:48px!important;
  gap:7px!important;
  padding:0 12px!important;
}
#roomIdentity{gap:7px!important;min-width:88px!important}
#roomIdentity .avatar{width:28px!important;height:28px!important;min-width:28px!important;font-size:.58rem!important}
#roomIdentity strong{font-size:.73rem!important;font-weight:600!important}
#roomIdentity small{font-size:.5rem!important;margin-top:1px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
#connectionState{font-size:.49rem!important}
.conversation-tools{gap:1px!important}
.conversation-tools .icon-btn{width:30px!important;min-width:30px!important;height:30px!important;min-height:30px!important;padding:6px!important}
.conversation-tools .icon-btn svg{width:14px!important;height:14px!important}

/* The activity chip exists only while there is actual activity. No setup icon, no status label. */
.header-activity-card{
  display:grid!important;
  grid-template-columns:30px minmax(0,1fr)!important;
  align-items:center!important;
  gap:6px!important;
  width:auto!important;
  min-width:128px!important;
  max-width:218px!important;
  min-height:36px!important;
  height:36px!important;
  padding:3px 7px 3px 3px!important;
  border:1px solid var(--line)!important;
  border-radius:9px!important;
  background:color-mix(in srgb,var(--panel2) 88%,transparent)!important;
  overflow:hidden!important;
}
.header-activity-card[hidden]{display:none!important}
.header-activity-card.no-art{grid-template-columns:minmax(0,1fr)!important;padding-left:8px!important;min-width:105px!important}
.header-activity-card>img{width:30px!important;height:30px!important;border-radius:7px!important;object-fit:cover!important}
.header-activity-card>span,.header-activity-card>i,.header-activity-card small,.header-live-dot{display:none!important}
.header-activity-card>div{display:grid!important;gap:0!important;min-width:0!important}
.header-activity-card strong{font-size:.58rem!important;line-height:1.15!important;font-weight:700!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header-activity-card em{font-size:.49rem!important;line-height:1.15!important;margin-top:1px!important;color:var(--muted)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header-activity-progress{height:2px!important;margin-top:3px!important}

.message-list{
  padding:7px 12px 8px!important;
  scrollbar-width:thin!important;
}
.message-date{gap:10px!important;font-size:.5rem!important;margin:8px 0 9px!important}
.message{
  gap:8px!important;
  padding:4px 4px!important;
  margin:0!important;
  border-radius:6px!important;
}
.message>.avatar{width:27px!important;height:27px!important;min-width:27px!important;font-size:.56rem!important}
.message-content{max-width:94%!important}
.message-author{gap:6px!important;margin-bottom:1px!important;line-height:1.1!important}
.message-author strong{font-size:.7rem!important;font-weight:650!important}
.message-author time,.message-author small{font-size:.49rem!important}
.message-text{font-size:.78rem!important;line-height:1.38!important}
.message-actions{top:-15px!important;right:3px!important}
.message-actions .icon-btn{width:25px!important;min-width:25px!important;height:25px!important;min-height:25px!important;padding:5px!important}
.quoted-message{font-size:.62rem!important;padding:4px 7px!important;margin:2px 0 4px!important}
.reactions{gap:3px!important;margin-top:4px!important}
.reactions button{font-size:.58rem!important;min-height:21px!important;padding:1px 6px!important}
.image-attachment{margin:4px 0!important;max-width:min(320px,100%)!important}
.image-attachment img{max-height:220px!important;border-radius:7px!important}
.image-attachment.transparent-media img{max-height:160px!important;max-width:190px!important}
.video-attachment{width:min(360px,100%)!important;max-height:220px!important;margin:4px 0!important}
.audio-attachment{margin:4px 0!important;gap:7px!important}
.audio-attachment audio{height:34px!important}
.file-attachment{padding:8px!important;margin:4px 0!important;font-size:.68rem!important}
.voice-transcript{margin-top:3px!important;font-size:.63rem!important}
#typingIndicator{min-height:14px!important;height:14px!important;padding:0 15px!important;font-size:.5rem!important;line-height:14px!important}

.composer-wrap{padding:0 8px 7px!important}
.composer-hint{display:none!important}
#messageForm{border-radius:9px!important}
#messageForm .composer-row{min-height:40px!important;padding:4px 5px!important;gap:1px!important;align-items:center!important}
#messageForm #messageInput{min-height:30px!important;max-height:104px!important;padding:6px!important;font-size:.77rem!important;line-height:1.35!important;resize:none!important}
#messageForm .composer-menu-wrap,#messageForm .composer-primary-tools,#messageForm .send-button{align-self:center!important}
#messageForm .composer-primary-tools .icon-btn,#messageForm .composer-plus,#messageForm .send-button{width:30px!important;min-width:30px!important;height:30px!important;min-height:30px!important;border-radius:7px!important}
#messageForm .composer-primary-tools .icon-btn svg,#messageForm .composer-plus svg,#messageForm .send-button svg{width:14px!important;height:14px!important}
.gif-quick .gif-mark{height:16px!important;min-width:22px!important;font-size:8px!important}
.composer-tools-menu{bottom:38px!important;width:min(270px,calc(100vw - 22px))!important;max-height:min(70vh,430px)!important;padding:5px!important}
.composer-tools-menu button{min-height:38px!important;padding:6px 8px!important;gap:8px!important}
.composer-tools-menu button strong{font-size:.63rem!important}
.composer-tools-menu button small{display:none!important}
.composer-tools-divider{margin:3px!important}

.activity-rail{width:min(300px,90vw)!important}
.activity-rail header{min-height:44px!important;padding:0 10px!important}
.activity-rail header strong{font-size:.7rem!important}
.activity-rail header small{display:none!important}
.activity-section-title{display:none!important}
.activity-section{padding-top:6px!important}
.activity-card{margin:5px 8px!important}

@media (min-width:901px){
  .chat-shell{grid-template-columns:220px minmax(0,1fr) auto!important}
}
@media (max-width:900px){
  body:has(.chat-page) .topbar{height:38px!important;min-height:38px!important}
  #content.chat-page{height:calc(100dvh - 38px)!important}
  .conversation-header{height:45px!important;min-height:45px!important;padding:0 7px!important}
  #connectionState{display:none!important}
  .message-list{padding:6px 7px!important}
  .composer-wrap{padding:0 5px max(5px,env(safe-area-inset-bottom))!important}
  .image-attachment img{max-height:190px!important}
  .video-attachment{max-height:190px!important}
  .composer-tools-menu{left:6px!important;right:6px!important;bottom:calc(50px + env(safe-area-inset-bottom))!important;width:auto!important;max-height:min(56vh,390px)!important;border-radius:13px!important}
}
@media (max-width:620px){
  #roomIdentity{min-width:64px!important}
  #roomIdentity small{display:none!important}
  .header-activity-card{min-width:108px!important;max-width:142px!important;height:34px!important;min-height:34px!important;grid-template-columns:28px minmax(0,1fr)!important}
  .header-activity-card>img{width:28px!important;height:28px!important}
  .header-activity-card.no-art{grid-template-columns:minmax(0,1fr)!important;min-width:92px!important}
  .header-activity-card strong{font-size:.54rem!important}
  .header-activity-card em{font-size:.46rem!important}
  .conversation-tools #chatThemeBtn{display:none!important}
  .message{gap:7px!important;padding:3px 2px!important}
  .message>.avatar{width:25px!important;height:25px!important;min-width:25px!important}
  .message-text{font-size:.76rem!important;line-height:1.34!important}
  #messageForm .composer-primary-tools .icon-btn,#messageForm .composer-plus,#messageForm .send-button{width:29px!important;min-width:29px!important;height:29px!important;min-height:29px!important}
}
@media (max-width:430px){
  .header-activity-card{display:grid!important}
  .header-activity-card[hidden]{display:none!important}
  #messageForm .composer-primary-tools #emojiBtn{display:none!important}
  #messageForm .composer-primary-tools #attachBtn{display:none!important}
}
body:has(.chat-page) .topbar .term{display:none!important}

/* v7.3 game frame reliability */
.game-frame-wrap{position:relative;min-height:0;flex:1;background:#0b0d10;overflow:hidden}.game-frame-wrap>iframe{width:100%;height:100%;display:block;border:0;background:#0b0d10}.game-frame-state{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#0b0d10;color:var(--text);font-size:.72rem;text-align:center;padding:20px}.game-frame-state.hidden{display:none}.game-frame-state>div{display:flex;align-items:center;gap:8px}.game-frame-state .spinner{width:20px;height:20px;border:2px solid color-mix(in srgb,var(--muted) 30%,transparent);border-top-color:var(--text);border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}

/* v7.4 game hub polish */
.game-catalog-v6{gap:10px}.game-card-v6{grid-template-columns:58px minmax(0,1fr) auto!important;min-height:102px!important;padding:11px!important;border:1px solid var(--line)!important;background:linear-gradient(180deg,color-mix(in srgb,var(--surface-2) 92%,transparent),color-mix(in srgb,var(--surface) 94%,transparent))!important;transition:transform .16s ease,border-color .16s ease,background .16s ease!important}.game-card-v6:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 32%,var(--line))!important;background:color-mix(in srgb,var(--accent-bg) 24%,var(--surface-2))!important}.game-card-art{width:58px;height:58px;border-radius:15px}.game-card-art[data-game-id="airhockey"]{background:radial-gradient(circle at 58% 40%,#d9f5ff 0 8%,#5bbbf0 9% 18%,#0b1a25 19% 100%);color:#fff}.game-card-art[data-game-id="darts"]{background:radial-gradient(circle,#f0e8d2 0 12%,#b74d59 13% 24%,#20392e 25% 38%,#10151a 39% 100%);color:#fff}.game-card-art[data-game-id="connect4"]{background:linear-gradient(135deg,#213c58,#111923);color:#ffd45e}.game-card-art[data-game-id="memory"]{background:linear-gradient(135deg,#30274a,#151822);color:#d7baff}.game-card-art[data-game-id="wordrace"]{background:linear-gradient(135deg,#273749,#121821);color:#b7d6ff}.game-card-art[data-game-id="ai20"],.game-card-art[data-game-id="mystery"],.game-card-art[data-game-id="wordduel"]{background:linear-gradient(135deg,#352950,#171622);color:#d1b7ff}.game-card-v6 p{max-width:56ch}.game-card-v6 em{display:block;margin-top:5px;color:var(--accent);font-size:.52rem;font-style:normal;font-weight:750}.game-card-play{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-size:.55rem;font-weight:750;padding-left:4px}.game-card-play svg{width:13px;height:13px}.game-panel-v6 header{min-height:48px}.game-panel-v6 header strong{font-size:.73rem}.game-panel-v6 .game-frame-state{backdrop-filter:blur(8px)}
@media(max-width:700px){.game-catalog-v6{grid-template-columns:1fr}.game-card-v6{min-height:92px!important;grid-template-columns:52px minmax(0,1fr) auto!important}.game-card-art{width:52px;height:52px}.game-card-play{font-size:0}.game-card-play svg{width:16px;height:16px}}

/* ===== v8 two-person workspace + iPhone chat repair ===== */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body,#app{max-width:100%;overflow-x:hidden}
.duo-card{display:flex;gap:10px;align-items:flex-start;max-width:min(520px,100%);padding:10px 11px;margin:4px 0;border:1px solid color-mix(in srgb,var(--line) 88%,transparent);border-radius:12px;background:color-mix(in srgb,var(--panel) 92%,transparent);box-sizing:border-box}.duo-card>svg{width:18px;height:18px;flex:0 0 auto;color:var(--accent);margin-top:2px}.duo-card>div{min-width:0;display:grid;gap:4px}.duo-card small{font-size:.56rem;color:var(--muted)}.duo-card strong{font-size:.72rem;line-height:1.25}.duo-card span,.duo-card p{font-size:.62rem;line-height:1.4;color:var(--muted);margin:0}.duo-card .compact{width:max-content;min-height:28px;padding:5px 9px;font-size:.58rem}.poll-card{display:block}.poll-head{display:flex;gap:8px;align-items:flex-start}.poll-head>svg{width:18px;color:var(--accent)}.poll-options{display:grid;gap:6px;margin-top:9px}.poll-options button{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;text-align:left;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:.64rem;color:var(--text)}.poll-options button>i{position:absolute;inset:0 auto 0 0;background:color-mix(in srgb,var(--accent) 13%,transparent);z-index:0;pointer-events:none}.poll-options button>span,.poll-options button>b{position:relative;z-index:1}.poll-options button.selected{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));box-shadow:inset 3px 0 0 var(--accent)}.thread-pill{margin-top:3px;padding:2px 6px;border:0;background:transparent;color:var(--accent);font-size:.54rem;display:inline-flex;gap:4px;align-items:center}.thread-pill svg{width:12px;height:12px}.thread-view{display:grid;gap:12px}.thread-root,.thread-replies>div{padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.thread-root{display:grid;gap:4px}.thread-replies{display:grid;gap:7px;max-height:45vh;overflow:auto}.thread-replies p{margin:3px 0 0;white-space:pre-wrap}.thread-view form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:end}.thread-view textarea{min-height:44px}.conversation-filters{display:flex;gap:3px;margin:3px 0 6px;padding:0 4px}.conversation-filters button{border:0;background:transparent;color:var(--muted);font-size:.5rem;padding:4px 6px;border-radius:6px;display:flex;align-items:center;gap:3px}.conversation-filters button svg{width:10px;height:10px}.conversation-filters button.active{background:var(--panel2);color:var(--text)}.saved-list{display:grid;gap:6px}.saved-list>button{display:grid;text-align:left;gap:3px;padding:10px;border:1px solid var(--line);background:var(--panel2);border-radius:9px}.saved-list small{color:var(--muted);font-size:.55rem}.saved-list strong{font-size:.68rem}.form-stack{display:grid;gap:11px}.form-stack label{display:grid;gap:5px}.form-stack textarea,.form-stack input,.form-stack select{width:100%;box-sizing:border-box}.forward-targets{display:grid;gap:6px}.forward-targets button{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--text)}.reminder-options{display:grid;gap:7px}.reminder-options>button{padding:9px;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:8px;text-align:left}.attachment-library{display:grid;gap:10px}.attachment-results{display:grid;gap:5px;max-height:60vh;overflow:auto}.attachment-results>a{display:grid;grid-template-columns:28px minmax(0,1fr) 18px;gap:8px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);color:var(--text);text-decoration:none}.attachment-results>a>span{width:28px;height:28px;display:grid;place-items:center}.attachment-results>a strong,.attachment-results>a small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-results>a strong{font-size:.63rem}.attachment-results>a small{font-size:.5rem;color:var(--muted)}.scanner{display:grid;gap:12px}.scanner-drop{display:grid;place-items:center;text-align:center;gap:5px;padding:20px;border:1px dashed var(--line);border-radius:12px}.scanner-drop>span svg{width:28px;height:28px}.scan-pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(95px,1fr));gap:8px}.scan-pages>div{position:relative;display:grid;gap:3px}.scan-pages img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:7px;border:1px solid var(--line)}.scan-pages .icon-btn{position:absolute;top:4px;right:4px;background:#0009}.whiteboard-shell{display:grid;gap:8px}.whiteboard-tools{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.whiteboard-tools label{display:flex;align-items:center;gap:4px;font-size:.55rem}.whiteboard-stage{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff;touch-action:none}.whiteboard-stage canvas{display:block;width:100%;height:auto;min-width:520px;background:#fff;touch-action:none}.watch-together{display:grid;gap:8px}.watch-frame{aspect-ratio:16/9;background:#000;border-radius:10px;overflow:hidden}.watch-frame iframe{width:100%;height:100%;border:0}.watch-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.watch-controls button{padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:var(--panel2);color:var(--text)}.watch-controls span{margin-left:auto;font-size:.53rem;color:var(--muted)}.study-timer{display:grid;place-items:center;gap:12px;padding:24px}.study-timer>strong{font-size:2.2rem;font-variant-numeric:tabular-nums}.diagnostics{display:grid;gap:6px}.diagnostics>div{display:grid;grid-template-columns:24px 130px minmax(0,1fr);align-items:center;gap:8px;padding:8px;border:1px solid var(--line);border-radius:8px}.diagnostics>div>span{display:grid;place-items:center}.diagnostics>div small{color:var(--muted)}.diagnostics .ok>span{color:#58c99a}.diagnostics .bad>span{color:#e56d79}.command-palette{display:grid;gap:8px}.command-palette #commandResults{display:grid;gap:3px;max-height:50vh;overflow:auto}.command-palette #commandResults button{text-align:left;padding:9px;border:0;border-radius:7px;background:transparent;color:var(--text)}.command-palette #commandResults button:hover{background:var(--panel2)}.profile-editor-preview{min-height:92px;border-radius:12px;padding:14px;display:flex;gap:10px;align-items:end;background:var(--profile-banner);background-size:cover}.profile-editor-preview>div:last-child{display:grid;gap:2px;text-shadow:0 1px 6px #000}.profile-editor-preview small{color:#fff}.chat-self{position:relative;overflow:hidden}.chat-self::before{content:"";position:absolute;inset:0;background:var(--profile-banner,none);opacity:.15;pointer-events:none}.tiktok-preview-meta{display:grid;gap:2px;padding:8px 4px}.tiktok-preview-meta strong{font-size:.62rem}.tiktok-preview-meta span{font-size:.55rem;color:var(--muted);line-height:1.35}.tiktok-short-link{display:inline-flex;align-items:center;gap:5px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}
.call-captions{position:absolute;left:50%;bottom:18%;transform:translateX(-50%);z-index:8;max-width:min(620px,80%);padding:8px 12px;border-radius:9px;background:#000c;color:#fff;font-size:.82rem;line-height:1.35;text-align:center;pointer-events:none}.call-annotation-canvas{position:absolute;inset:0;z-index:7;width:100%;height:100%;touch-action:none;cursor:crosshair}.call-control.active{background:color-mix(in srgb,var(--accent) 30%,var(--panel2));color:var(--accent)}.call-audio-processing{display:grid;gap:7px;padding:9px;border:1px solid var(--line);border-radius:9px}.mic-meter{height:5px;border-radius:999px;background:var(--line);overflow:hidden}.mic-meter i{display:block;width:0;height:100%;background:var(--accent);transition:width .08s linear}

@media(max-width:700px){
  body:has(.chat-page) .topbar{display:none!important}
  body:has(.chat-page) .app-main,body:has(.chat-page) #content,body:has(.chat-page) #content.chat-page{margin:0!important;padding:0!important;width:100%!important;max-width:none!important;height:100dvh!important;min-height:0!important;overflow:hidden!important}
  body:has(.chat-page) .chat-shell{display:block!important;grid-template-columns:none!important;width:100%!important;max-width:none!important;height:100%!important;min-height:0!important;padding-top:env(safe-area-inset-top)!important;box-sizing:border-box!important;overflow:hidden!important}
  body:has(.chat-page) .conversation{display:flex!important;flex-direction:column!important;grid-column:1!important;width:100%!important;max-width:none!important;min-width:0!important;height:100%!important;min-height:0!important;overflow:hidden!important}
  body:has(.chat-page) .chat-sidebar{position:absolute!important;top:env(safe-area-inset-top)!important;bottom:0!important;left:0!important;width:min(300px,88vw)!important;z-index:80!important}
  body:has(.chat-page) .chat-shell:not(.people-open) .chat-sidebar{display:none!important}
  body:has(.chat-page) .chat-shell.people-open .chat-sidebar{display:flex!important}
  .conversation-header{flex:0 0 44px!important;height:44px!important;min-height:44px!important;width:100%!important;box-sizing:border-box!important;padding:0 8px!important;gap:3px!important;background:color-mix(in srgb,var(--panel) 96%,transparent)!important}
  #togglePeople{width:32px!important;min-width:32px!important;height:32px!important}
  #roomIdentity{flex:1 1 auto!important;min-width:0!important;max-width:none!important;overflow:hidden!important}
  #roomIdentity .avatar{width:27px!important;height:27px!important;min-width:27px!important}
  #roomIdentity strong{font-size:12px!important;max-width:34vw!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  #roomIdentity small{display:none!important}
  .conversation-tools{flex:0 0 auto!important;gap:0!important}
  .conversation-tools .icon-btn{width:31px!important;min-width:31px!important;height:31px!important;padding:6px!important}
  .conversation-tools #chatThemeBtn{display:none!important}
  .header-activity-card{max-width:105px!important;min-width:0!important;width:auto!important;height:31px!important;min-height:31px!important;padding:3px 5px!important;grid-template-columns:24px minmax(0,1fr)!important}
  .header-activity-card>img{width:24px!important;height:24px!important}
  .header-activity-card strong{font-size:9px!important}.header-activity-card em{font-size:8px!important}
  .message-list{flex:1 1 auto!important;min-height:0!important;width:100%!important;box-sizing:border-box!important;padding:7px 8px 6px!important;overflow-y:auto!important;overflow-x:hidden!important;-webkit-overflow-scrolling:touch!important}
  .message{width:100%!important;max-width:100%!important;box-sizing:border-box!important;gap:7px!important;padding:3px 1px!important}
  .message>.avatar{width:28px!important;height:28px!important;min-width:28px!important;font-size:10px!important}
  .message-content{min-width:0!important;max-width:calc(100% - 36px)!important;width:auto!important}
  .message-author{gap:5px!important}.message-author strong{font-size:12px!important}.message-author time,.message-author small{font-size:9px!important}
  .message-text{font-size:15px!important;line-height:1.32!important;overflow-wrap:anywhere!important}
  .quoted-message{font-size:11px!important;max-width:100%!important}
  .image-attachment{max-width:min(280px,100%)!important}.image-attachment img{max-height:300px!important;width:auto!important;max-width:100%!important}
  #typingIndicator{flex:0 0 16px!important;height:16px!important;min-height:16px!important;font-size:9px!important;line-height:16px!important;padding:0 10px!important}
  .composer-wrap{flex:0 0 auto!important;width:100%!important;box-sizing:border-box!important;padding:0 7px max(7px,env(safe-area-inset-bottom))!important;background:linear-gradient(180deg,transparent,var(--panel) 22%)!important}
  #messageForm{width:100%!important;box-sizing:border-box!important;border-radius:14px!important}
  #messageForm .composer-row{display:flex!important;align-items:flex-end!important;width:100%!important;min-width:0!important;min-height:46px!important;box-sizing:border-box!important;padding:5px 6px!important;gap:2px!important}
  #messageForm #messageInput{flex:1 1 auto!important;min-width:0!important;width:0!important;min-height:36px!important;max-height:96px!important;font-size:16px!important;line-height:1.3!important;padding:7px 5px!important;box-sizing:border-box!important}
  #messageForm .composer-menu-wrap,#messageForm .composer-primary-tools,#messageForm .send-button{flex:0 0 auto!important}
  #messageForm .composer-primary-tools{display:flex!important;gap:0!important}
  #messageForm .composer-primary-tools #gifBtn,#messageForm .composer-primary-tools #emojiBtn,#messageForm .composer-primary-tools #attachBtn{display:none!important}
  #messageForm .composer-primary-tools .icon-btn,#messageForm .composer-plus,#messageForm .send-button{width:36px!important;min-width:36px!important;height:36px!important;min-height:36px!important;border-radius:10px!important}
  #messageForm .composer-primary-tools .icon-btn svg,#messageForm .composer-plus svg,#messageForm .send-button svg{width:18px!important;height:18px!important}
  .composer-tools-menu{position:fixed!important;left:7px!important;right:7px!important;bottom:calc(59px + env(safe-area-inset-bottom))!important;width:auto!important;max-width:none!important;max-height:min(62dvh,520px)!important;border-radius:14px!important;padding:6px!important;z-index:300!important}
  .composer-tools-menu button{min-height:42px!important;padding:7px 9px!important}.composer-tools-menu button strong{font-size:11px!important}.composer-tools-menu button small{display:none!important}
  .duo-card{max-width:100%;padding:9px}.duo-card strong{font-size:12px}.duo-card span,.duo-card p{font-size:11px}.poll-options button{font-size:12px}
  .whiteboard-stage canvas{min-width:720px}
  .watch-controls span{width:100%;margin:0}
}
@media(max-width:390px){
  .conversation-tools #findMessages{display:none!important}
  #roomIdentity strong{max-width:29vw!important}
  .header-activity-card{max-width:88px!important}
  #messageForm .composer-primary-tools .icon-btn,#messageForm .composer-plus,#messageForm .send-button{width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important}
}
/* v8 games hub: two-person site, daily challenge and records */
.games-hub-v8{display:grid;gap:14px}.game-feature-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.game-feature-card{min-width:0;border:1px solid var(--line);border-radius:14px;background:var(--panel);padding:11px;text-align:left;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;color:inherit;cursor:pointer}.game-feature-card>span:first-child{width:34px;height:34px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;background:var(--panel-2)}.game-feature-card>div{min-width:0;display:grid;gap:2px}.game-feature-card small{font-size:8px;letter-spacing:.09em;color:var(--muted);font-weight:800}.game-feature-card strong{font-size:12px}.game-feature-card p{font-size:10px;color:var(--muted);margin:0;white-space:normal}.game-feature-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.recent-games{display:grid;gap:6px}.recent-games>small{font-size:8px;color:var(--muted);letter-spacing:.12em;font-weight:800}.recent-games>div{display:flex;gap:6px;overflow:auto;padding-bottom:2px}.recent-games button{flex:0 0 auto;border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:6px 9px;display:flex;align-items:center;gap:5px;color:inherit;font-size:10px}.game-stats-list{display:grid;gap:7px}.game-stats-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:9px 2px}.game-stats-list>div>span{display:flex;align-items:center;gap:8px}.game-stats-list b{font-variant-numeric:tabular-nums}
@media(max-width:700px){.game-feature-row{grid-template-columns:1fr}.game-feature-card{padding:9px}.games-hub-v8 .games-hub-hero p{display:none}}

/* ===== v8.0.1 iPhone viewport + message density repair ===== */
.message.message-grouped{padding-top:1px!important;padding-bottom:1px!important}
@media (max-width:700px){
  html,body,#app,.app-main{width:100%!important;max-width:100%!important;min-width:0!important;margin:0!important;overflow-x:hidden!important}
  #content.chat-page{
    position:fixed!important;
    left:0!important;
    right:0!important;
    top:var(--viewport-top,0px)!important;
    bottom:auto!important;
    width:100vw!important;
    max-width:100vw!important;
    height:var(--visible-height,100dvh)!important;
    min-height:0!important;
    margin:0!important;
    padding:0!important;
    overflow:hidden!important;
    z-index:30!important;
    animation:none!important;
  }
  #content.chat-page .chat-shell{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:100%!important;
    min-height:0!important;
    padding-top:max(env(safe-area-inset-top),0px)!important;
    padding-left:0!important;
    padding-right:0!important;
    box-sizing:border-box!important;
    overflow:hidden!important;
  }
  #content.chat-page .conversation{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    height:100%!important;
    min-height:0!important;
    margin:0!important;
    overflow:hidden!important;
  }
  body:has(#content.chat-page) .topbar,body:has(#content.chat-page) .site-footer{display:none!important}
  .conversation-header{height:42px!important;min-height:42px!important;flex-basis:42px!important;padding:0 6px!important;border-bottom:1px solid color-mix(in srgb,var(--line) 86%,transparent)!important}
  #togglePeople{width:30px!important;min-width:30px!important;height:30px!important}
  #roomIdentity{gap:5px!important;min-width:0!important;overflow:hidden!important}
  #roomIdentity .avatar{width:25px!important;height:25px!important;min-width:25px!important}
  #roomIdentity strong{font-size:11px!important;max-width:30vw!important}
  .conversation-tools .icon-btn{width:29px!important;min-width:29px!important;height:29px!important;padding:5px!important}
  .conversation-tools #findMessages{display:none!important}
  .header-activity-card{height:29px!important;min-height:29px!important;max-width:96px!important;grid-template-columns:23px minmax(0,1fr)!important;padding:2px 4px 2px 2px!important}
  .header-activity-card>img{width:23px!important;height:23px!important;border-radius:6px!important}
  .header-activity-card strong{font-size:8.5px!important}.header-activity-card em{font-size:7.5px!important}
  .message-list{padding:5px 6px 4px!important;overscroll-behavior:contain!important}
  .message-date{margin:5px 0 6px!important;font-size:8px!important}
  .message{gap:6px!important;padding:2px 0!important;min-width:0!important}
  .message>.avatar{width:24px!important;height:24px!important;min-width:24px!important;font-size:9px!important}
  .message-content{max-width:calc(100% - 31px)!important;min-width:0!important}
  .message-author{gap:4px!important;margin:0 0 1px!important;min-height:12px!important}
  .message-author strong{font-size:11px!important}.message-author time,.message-author small{font-size:8px!important}
  .message-text{font-size:14px!important;line-height:1.26!important}
  .message.message-grouped{padding-top:0!important;padding-bottom:1px!important}
  .message.message-grouped>.avatar{visibility:hidden!important;height:15px!important;min-height:15px!important}
  .message.message-grouped .message-author{display:none!important}
  .message.message-grouped .message-content{padding-top:0!important}
  .quoted-message{font-size:10px!important;padding:3px 6px!important;margin:1px 0 3px!important}
  .reactions{margin-top:2px!important}.reactions button{min-height:19px!important;padding:0 5px!important;font-size:10px!important}
  .image-attachment{max-width:min(240px,88vw)!important;margin:3px 0!important}.image-attachment img{max-height:245px!important}
  .image-attachment.transparent-media img{max-height:150px!important;max-width:175px!important}
  .video-attachment{width:min(270px,88vw)!important;max-height:190px!important;margin:3px 0!important}
  .audio-attachment{margin:2px 0!important}.audio-attachment audio{height:30px!important}
  #typingIndicator{height:13px!important;min-height:13px!important;flex-basis:13px!important;line-height:13px!important;padding:0 7px!important;font-size:8px!important}
  .composer-wrap{padding:0 6px max(5px,env(safe-area-inset-bottom))!important;background:linear-gradient(180deg,transparent,var(--panel) 18%)!important}
  #messageForm{width:100%!important;border-radius:12px!important}
  #messageForm .composer-row{width:100%!important;min-height:43px!important;padding:4px!important;gap:1px!important;align-items:center!important}
  #messageForm #messageInput{min-height:34px!important;max-height:76px!important;padding:6px 4px!important;font-size:16px!important;line-height:1.25!important}
  #messageForm .composer-primary-tools .icon-btn,#messageForm .composer-plus,#messageForm .send-button{width:34px!important;min-width:34px!important;height:34px!important;min-height:34px!important;border-radius:9px!important}
  #messageForm .composer-primary-tools #gifBtn,#messageForm .composer-primary-tools #emojiBtn,#messageForm .composer-primary-tools #attachBtn{display:none!important}
  .composer-tools-menu{left:6px!important;right:6px!important;bottom:calc(52px + env(safe-area-inset-bottom))!important;width:auto!important;max-width:none!important;max-height:min(60dvh,460px)!important;z-index:400!important}
  .message-actions{right:1px!important;top:-13px!important}
}
@media (max-width:390px){
  #roomIdentity strong{max-width:25vw!important}
  .conversation-tools #roomOptions{display:none!important}
  .header-activity-card{max-width:78px!important}
  #messageForm .composer-primary-tools .icon-btn,#messageForm .composer-plus,#messageForm .send-button{width:32px!important;min-width:32px!important;height:32px!important;min-height:32px!important}
  .message-text{font-size:13.5px!important}
}
/* v8.1 Snap Camera Kit */
.snap-lens-launch{width:100%;display:grid;grid-template-columns:32px minmax(0,1fr) 18px;align-items:center;gap:9px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);text-align:left}.snap-lens-launch>svg:first-child{width:18px;height:18px;color:#fffc00}.snap-lens-launch>svg:last-child{width:14px;height:14px;color:var(--muted)}.snap-lens-launch span{display:grid;gap:1px}.snap-lens-launch strong{font-size:.66rem}.snap-lens-launch small{font-size:.52rem;color:var(--muted)}
.snap-lens-browser{display:grid;gap:10px}.snap-lens-loading{min-height:210px;display:grid;place-items:center;align-content:center;gap:7px;text-align:center}.snap-lens-loading small{color:var(--muted);max-width:330px}.snap-lens-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.snap-lens-head>div{display:grid;gap:2px}.snap-lens-head strong{font-size:.72rem}.snap-lens-head small{font-size:.54rem;color:var(--muted)}.snap-lens-none{border:1px solid var(--line);background:var(--panel2);color:var(--text);padding:7px 11px;border-radius:999px;font-size:.58rem}.snap-lens-none.active{border-color:var(--accent);color:var(--accent)}
.snap-lens-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:7px;max-height:min(58vh,520px);overflow:auto;padding:1px}.snap-lens-card{min-width:0;display:grid;gap:5px;justify-items:center;padding:7px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);color:var(--text);text-align:center}.snap-lens-card>span{width:64px;height:64px;border-radius:13px;background:#090b0e;display:grid;place-items:center;overflow:hidden}.snap-lens-card>span img{width:100%;height:100%;object-fit:cover}.snap-lens-card>span svg{width:22px;height:22px}.snap-lens-card strong{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.58rem}.snap-lens-card small{font-size:.46rem;color:var(--muted)}.snap-lens-card.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.snap-lens-note{display:grid;gap:4px;padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);font-size:.56rem}.snap-lens-note span{color:var(--muted)}.snap-lens-note a{color:var(--accent);width:max-content}
@media(max-width:600px){.snap-lens-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.snap-lens-card>span{width:58px;height:58px}.snap-lens-head small{display:none}}

/* ===== v8.1 interaction polish ===== */
#messageForm .gif-quick{
  opacity:1!important;
  color:var(--text)!important;
  background:color-mix(in srgb,var(--panel2) 92%,#fff 8%)!important;
  border:1px solid color-mix(in srgb,var(--line) 82%,var(--text) 18%)!important;
}
#messageForm .gif-quick .gif-mark{
  background:var(--text)!important;
  color:var(--panel)!important;
  opacity:1!important;
}
#messageForm .gif-quick:hover .gif-mark,#messageForm .gif-quick:focus-visible .gif-mark{color:var(--panel)!important}
@media(max-width:700px){
  #messageForm .composer-primary-tools #gifBtn{display:grid!important}
  .shared-activity-card{width:min(100%,430px)!important;grid-template-columns:70px minmax(0,1fr) auto!important;padding:9px!important;gap:9px!important}
  .shared-activity-art{width:70px!important;height:70px!important;border-radius:10px!important}
  .shared-activity-copy strong{font-size:13px!important}
}
@media(max-width:360px){#messageForm .composer-primary-tools #gifBtn{display:none!important}}

.shared-activity-card{
  width:min(520px,86vw);box-sizing:border-box;display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:12px;align-items:center;
  padding:12px;margin:5px 0;border:1px solid color-mix(in srgb,var(--line) 78%,transparent);border-radius:16px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--panel) 96%,transparent),color-mix(in srgb,var(--panel2) 90%,transparent));overflow:hidden;
}
.shared-activity-card.spotify{box-shadow:inset 3px 0 0 #1ed760}
.shared-activity-card.game{box-shadow:inset 3px 0 0 var(--chat-accent,var(--accent))}
.shared-activity-art{width:88px;height:88px;object-fit:cover;border-radius:12px;background:var(--surface);border:1px solid var(--line)}
.shared-activity-art.fallback{display:grid;place-items:center}.shared-activity-art.fallback svg{width:30px;height:30px}
.shared-activity-copy{min-width:0;display:grid;gap:4px}.shared-activity-copy small{font-size:10px;color:var(--muted);font-weight:700}.shared-activity-copy strong{font-size:15px;line-height:1.18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shared-activity-copy span,.shared-activity-copy em{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:normal}.shared-activity-copy .shared-progress{height:6px;margin-top:5px;border-radius:99px;background:color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden}.shared-activity-copy .shared-progress i{display:block;height:100%;border-radius:inherit;background:currentColor}.shared-activity-card.spotify .shared-progress{color:#1ed760}.shared-activity-card.game .shared-progress{color:var(--chat-accent,var(--accent))}.shared-activity-copy .activity-time{font-size:9px;color:var(--muted);font-weight:650;font-variant-numeric:tabular-nums}.shared-activity-open{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;color:var(--text);background:var(--surface);text-decoration:none}.shared-activity-open svg{width:15px;height:15px}

.chat-theme-preview.draggable-photo{cursor:grab;touch-action:none;user-select:none}.chat-theme-preview.draggable-photo.dragging{cursor:grabbing}.theme-drag-hint{position:absolute;top:9px;right:10px;z-index:3;display:flex;align-items:center;gap:4px;padding:4px 7px;border-radius:7px;background:#0009;color:#fff;font-size:9px;pointer-events:none}.theme-drag-hint svg{width:11px;height:11px}.theme-position-readout{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:7px;font-size:10px;color:var(--muted)}.theme-position-readout span{display:flex;gap:4px}.theme-position-readout b{color:var(--text);font-variant-numeric:tabular-nums}.theme-position-readout .text-btn{margin-left:auto}

.drawing-shell{display:grid;gap:10px}.drawing-tools{display:flex;flex-wrap:wrap;gap:7px;align-items:center}.drawing-tools label{display:flex;align-items:center;gap:6px;font-size:11px}.drawing-tools input[type="range"]{width:110px}.drawing-tools input[type="color"]{width:34px;height:30px;padding:2px}.drawing-stage{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff;touch-action:none;max-height:min(68vh,760px)}.drawing-stage canvas{display:block;width:100%;height:auto;min-width:560px;background:#fff;touch-action:none;cursor:crosshair}.drawing-tools .active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
@media(max-width:700px){.drawing-stage canvas{min-width:720px}.drawing-tools{position:sticky;top:0;z-index:2;background:var(--panel);padding:4px 0}.drawing-tools label{font-size:10px}}

/* ===== v8.2 Snap + shared activity reliability ===== */
.snap-group-manager{display:grid;gap:7px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.snap-group-manager>div:first-child{display:grid;gap:2px}.snap-group-manager strong{font-size:.62rem}.snap-group-manager small{font-size:.52rem;color:var(--muted);line-height:1.35}
.snap-group-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}.snap-group-row input{min-width:0}
.shared-activity-card{grid-template-columns:104px minmax(0,1fr) auto;min-height:128px;padding:12px 13px}
.shared-activity-art{width:104px;height:104px;border-radius:14px}
.shared-activity-copy strong{font-size:16px}.shared-activity-copy span,.shared-activity-copy em{font-size:12px}.shared-activity-copy .shared-progress{height:7px;margin-top:7px}
@media(max-width:700px){
  .shared-activity-card{grid-template-columns:82px minmax(0,1fr) auto!important;min-height:102px!important;padding:10px!important}
  .shared-activity-art{width:82px!important;height:82px!important}
  .snap-group-row{grid-template-columns:1fr}.snap-group-row button{width:100%}
}

/* ===== v8.3 dual camera + screen share ===== */
.call-stage .remote-screen-video {
  display: none;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #050607;
  z-index: 2;
}
.call-stage.remote-screen-active .remote-screen-video {
  display: block;
}
.call-stage.remote-screen-active #remoteVideo {
  position: absolute;
  left: 18px;
  bottom: 18px;
  width: min(220px, 24vw);
  height: min(145px, 18vw);
  min-width: 132px;
  min-height: 84px;
  object-fit: cover;
  border: 1px solid #414851;
  border-radius: 10px;
  background: #0b0e11;
  box-shadow: 0 12px 36px #0009;
  z-index: 5;
}
.local-screen-tile {
  position: absolute;
  left: 18px;
  bottom: 18px;
  width: 230px;
  height: 132px;
  border: 1px solid #434b52;
  background: #0a0d10;
  border-radius: 9px;
  overflow: hidden;
  z-index: 6;
  cursor: grab;
  box-shadow: 0 12px 28px #0007;
  touch-action: none;
}
.local-screen-tile[hidden] { display: none !important; }
.local-screen-tile.dragging { cursor: grabbing; }
.local-screen-tile video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
  background: #050607;
}
.call-overlay.focus-remote .call-stage.remote-screen-active .remote-screen-video {
  object-fit: contain;
}
.call-overlay.minimized .local-screen-tile { display: none !important; }
@media (max-width: 700px) {
  .call-stage.remote-screen-active #remoteVideo {
    left: 8px;
    bottom: 8px;
    width: 108px;
    height: 72px;
    min-width: 0;
    min-height: 0;
  }
  .local-screen-tile {
    left: 8px;
    bottom: 8px;
    width: 112px;
    height: 72px;
  }
}

/* ===== v8.4 self camera fullscreen + direct Lens controls ===== */
.local-fullscreen-btn {
  position: absolute;
  top: 7px;
  right: 7px;
  width: 30px;
  height: 30px;
  min-height: 30px;
  padding: 0;
  display: grid;
  place-items: center;
  border: 1px solid #ffffff26;
  border-radius: 9px;
  background: #07090cbf;
  color: #fff;
  z-index: 9;
  opacity: .78;
  backdrop-filter: blur(12px);
  transition: opacity .15s ease, transform .15s ease, background .15s ease;
}
.local-fullscreen-btn:hover { opacity: 1; background: #11161ddd; transform: scale(1.04); }
.local-fullscreen-btn svg { width: 15px; height: 15px; }

.self-camera-tools {
  display: none;
  position: absolute;
  left: 50%;
  bottom: 88px;
  transform: translateX(-50%);
  z-index: 14;
  align-items: center;
  gap: 7px;
  padding: 7px;
  border: 1px solid #ffffff24;
  border-radius: 18px;
  background: #0b0e12d9;
  box-shadow: 0 16px 50px #0009;
  backdrop-filter: blur(18px);
}
.self-camera-tool,
.self-camera-lens {
  border: 1px solid #ffffff1c;
  background: #1b2129;
  color: #f4f7fa;
  min-height: 42px;
}
.self-camera-tool {
  width: 42px;
  height: 42px;
  padding: 0;
  border-radius: 13px;
  display: grid;
  place-items: center;
}
.self-camera-tool svg { width: 18px; height: 18px; }
.self-camera-lens {
  height: 42px;
  min-width: 150px;
  padding: 6px 11px;
  border-radius: 13px;
  display: flex;
  align-items: center;
  gap: 8px;
  text-align: left;
}
.self-camera-lens > svg { width: 17px; height: 17px; color: #fffc00; flex: 0 0 auto; }
.self-camera-lens span { min-width: 0; display: grid; gap: 1px; }
.self-camera-lens small { color: #9ba6b1; font-size: .48rem; line-height: 1; }
.self-camera-lens strong { max-width: 175px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .61rem; }
.self-camera-exit { margin-left: 3px; }

.call-overlay.focus-self { padding: 0; background: #000; }
.call-overlay.focus-self .call-top {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  z-index: 15;
  padding: max(16px, env(safe-area-inset-top)) 20px 48px;
  background: linear-gradient(#000d, transparent);
  pointer-events: none;
}
.call-overlay.focus-self .call-top > * { pointer-events: auto; }
.call-overlay.focus-self .call-stage {
  position: absolute;
  inset: 0;
  border-radius: 0;
  background: #000;
}
.call-overlay.focus-self .remote-placeholder { display: none; }
.call-overlay.focus-self .local-tile {
  inset: 0 !important;
  left: 0 !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  height: 100% !important;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  cursor: default;
  z-index: 4;
  animation: none;
}
.call-overlay.focus-self .local-tile #localVideo { object-fit: cover; background: #000; }
.call-overlay.focus-self .local-tile .local-label,
.call-overlay.focus-self .local-fullscreen-btn { display: none; }
.call-overlay.focus-self .self-camera-tools { display: flex; }
.call-overlay.focus-self #remoteVideo {
  position: absolute;
  left: 18px;
  top: 84px;
  width: min(200px, 22vw);
  height: min(132px, 15vw);
  min-width: 132px;
  min-height: 86px;
  object-fit: cover;
  border: 1px solid #ffffff32;
  border-radius: 12px;
  background: #080a0d;
  box-shadow: 0 12px 36px #000a;
  z-index: 9;
}
.call-overlay.focus-self .call-stage.remote-screen-active .remote-screen-video {
  display: block;
  position: absolute;
  left: 18px;
  top: 226px;
  right: auto;
  bottom: auto;
  width: min(260px, 28vw);
  height: min(146px, 16vw);
  border: 1px solid #ffffff32;
  border-radius: 12px;
  box-shadow: 0 12px 36px #000a;
  z-index: 9;
}
.call-overlay.focus-self .local-screen-tile {
  left: auto !important;
  right: 18px !important;
  bottom: 88px !important;
  top: auto !important;
  z-index: 9;
}
.call-overlay.focus-self .call-controls {
  position: absolute;
  z-index: 15;
  left: 50%;
  bottom: max(14px, env(safe-area-inset-bottom));
  transform: translateX(-50%);
  margin: 0;
  padding: 8px 10px;
  border: 1px solid #ffffff24;
  background: #0b0e12dc;
  border-radius: 30px;
  box-shadow: 0 10px 34px #000a;
  backdrop-filter: blur(18px);
}
.call-overlay.focus-self .call-note { display: none; }
.call-overlay.focus-self .call-chat-panel { z-index: 18; }

@media (max-width: 700px) {
  .local-fullscreen-btn { width: 28px; height: 28px; min-height: 28px; top: 5px; right: 5px; }
  .call-overlay.focus-self #remoteVideo {
    left: 9px;
    top: calc(max(10px, env(safe-area-inset-top)) + 58px);
    width: 108px;
    height: 72px;
    min-width: 0;
    min-height: 0;
    border-radius: 10px;
  }
  .call-overlay.focus-self .call-stage.remote-screen-active .remote-screen-video {
    left: 9px;
    top: calc(max(10px, env(safe-area-inset-top)) + 138px);
    width: 136px;
    height: 78px;
    border-radius: 10px;
  }
  .self-camera-tools {
    bottom: calc(max(72px, env(safe-area-inset-bottom) + 66px));
    gap: 5px;
    padding: 5px;
    max-width: calc(100vw - 16px);
  }
  .self-camera-tool { width: 38px; height: 38px; min-height: 38px; border-radius: 11px; }
  .self-camera-lens { min-width: 128px; max-width: 48vw; height: 38px; min-height: 38px; padding: 5px 9px; border-radius: 11px; }
  .self-camera-lens strong { max-width: 118px; }
  .call-overlay.focus-self .call-controls {
    gap: 6px;
    max-width: calc(100vw - 12px);
    overflow-x: auto;
    scrollbar-width: none;
  }
  .call-overlay.focus-self .call-controls::-webkit-scrollbar { display: none; }
  .call-overlay.focus-self .local-screen-tile {
    right: 9px !important;
    bottom: calc(max(72px, env(safe-area-inset-bottom) + 66px)) !important;
    width: 124px;
    height: 72px;
  }
}

/* ===== v8.4.2 interactive Camera Kit live canvas ===== */
.local-tile .snap-live-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  display: block;
  background: #000;
  border: 0;
  border-radius: inherit;
  z-index: 2;
  cursor: crosshair;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
  outline: none;
}
.local-tile .snap-live-canvas[hidden] { display: none !important; }
.local-tile.snap-lens-active { cursor: default; }
.local-tile.snap-lens-active .local-label { z-index: 8; }
.local-tile.snap-lens-active .local-fullscreen-btn { z-index: 10; }
.snap-interaction-hint {
  position: absolute;
  left: 50%;
  top: 12px;
  transform: translateX(-50%);
  z-index: 11;
  display: flex;
  align-items: center;
  gap: 6px;
  width: max-content;
  max-width: calc(100% - 22px);
  padding: 6px 9px;
  border: 1px solid #ffffff29;
  border-radius: 999px;
  background: #080b10c7;
  color: #fff;
  font-size: .55rem;
  font-weight: 700;
  line-height: 1;
  pointer-events: none;
  backdrop-filter: blur(12px);
  box-shadow: 0 6px 24px #0008;
  transition: opacity .22s ease, transform .22s ease;
}
.snap-interaction-hint svg { width: 13px; height: 13px; }
.snap-interaction-hint.used { opacity: 0; transform: translate(-50%,-6px); }
.snap-interaction-hint[hidden] { display: none !important; }
.call-overlay.focus-self .local-tile .snap-live-canvas {
  border-radius: 0;
  cursor: crosshair;
}
.call-overlay.focus-self .snap-interaction-hint {
  top: max(66px, calc(env(safe-area-inset-top) + 56px));
  padding: 7px 11px;
  font-size: .61rem;
}
.snap-lens-keyboard {
  position: absolute;
  left: 50%;
  bottom: 150px;
  transform: translateX(-50%);
  z-index: 30;
  width: min(520px, calc(100vw - 28px));
  display: grid;
  grid-template-columns: minmax(0,1fr) 42px 42px;
  gap: 6px;
  padding: 7px;
  border: 1px solid #ffffff28;
  border-radius: 15px;
  background: #0b0e12e8;
  box-shadow: 0 16px 50px #000a;
  backdrop-filter: blur(18px);
}
.snap-lens-keyboard input {
  min-width: 0;
  height: 42px;
  border-radius: 10px;
  border: 1px solid #ffffff20;
  background: #171d25;
  color: #fff;
  padding: 0 12px;
  font-size: 14px;
}
.snap-lens-keyboard button {
  width: 42px;
  height: 42px;
  min-height: 42px;
  padding: 0;
  border-radius: 10px;
  display: grid;
  place-items: center;
}
.snap-lens-keyboard button svg { width: 17px; height: 17px; }
@media(max-width:700px) {
  .snap-interaction-hint { top: 8px; font-size: .5rem; padding: 5px 7px; }
  .call-overlay.focus-self .snap-interaction-hint { top: calc(max(8px,env(safe-area-inset-top)) + 48px); }
  .snap-lens-keyboard { bottom: calc(max(126px,env(safe-area-inset-bottom) + 116px)); }
}

/* v8.6 screen-share setup */
.screen-share-setup{display:grid;gap:14px}.screen-share-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.screen-share-presets button{min-width:0;display:grid;gap:3px;padding:11px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--text);text-align:left}.screen-share-presets button:hover,.screen-share-presets button.active{border-color:color-mix(in srgb,var(--accent) 58%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}.screen-share-presets strong{font-size:.68rem}.screen-share-presets small{font-size:.5rem;line-height:1.35;color:var(--muted)}.screen-share-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.screen-share-grid label{display:grid;gap:5px}.screen-share-grid label>span{font-size:.56rem;font-weight:750;color:var(--muted)}.screen-share-grid select{width:100%;min-width:0}.screen-share-audio{display:flex;align-items:flex-start;gap:9px;border:1px solid var(--line);border-radius:12px;padding:11px;background:var(--panel2)}.screen-share-audio input{margin-top:2px}.screen-share-audio span{display:grid;gap:2px}.screen-share-audio strong{font-size:.64rem}.screen-share-audio small{font-size:.52rem;line-height:1.42;color:var(--muted)}.screen-share-note{font-size:.52rem;line-height:1.5;color:var(--muted);border-left:2px solid var(--line2);padding-left:9px}.screen-share-start{width:100%;min-height:42px}.local-screen-tile .local-label{max-width:calc(100% - 12px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:720px){.screen-share-presets{grid-template-columns:1fr 1fr}.screen-share-grid{grid-template-columns:1fr}}

/* v8.7 voice effects + caption repair */
.call-captions[hidden],.call-captions:empty{display:none!important}.call-captions.interim{opacity:.82}.voice-fx{display:grid;gap:13px}.voice-fx-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.voice-fx-head>div{display:grid;gap:2px}.voice-fx-head strong{font-size:.72rem}.voice-fx-head small{font-size:.53rem;line-height:1.4;color:var(--muted)}.voice-fx-head>span{flex:0 0 auto;padding:6px 9px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);font-size:.55rem;color:var(--soft)}.voice-fx-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;max-height:48vh;overflow:auto;padding:1px}.voice-fx-card{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:8px;min-width:0;padding:9px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);color:var(--text);text-align:left}.voice-fx-card:hover,.voice-fx-card.active{border-color:color-mix(in srgb,var(--accent) 62%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}.voice-fx-card>svg{width:18px;height:18px;color:var(--soft)}.voice-fx-card.active>svg{color:var(--accent)}.voice-fx-card span{display:grid;gap:2px;min-width:0}.voice-fx-card strong{font-size:.62rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-fx-card small{font-size:.49rem;line-height:1.35;color:var(--muted)}.voice-tuner{display:none;gap:10px;padding:11px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.voice-tuner.open{display:grid}.voice-tuner-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.voice-tuner-title>div{display:grid;gap:2px}.voice-tuner-title strong{font-size:.66rem}.voice-tuner-title small{font-size:.5rem;color:var(--muted)}.voice-tuner label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px;align-items:center;font-size:.56rem;color:var(--soft)}.voice-tuner label output{font-variant-numeric:tabular-nums;color:var(--text)}.voice-tuner label input[type="range"]{grid-column:1/-1;width:100%}.voice-reverse-toggle{display:flex!important;align-items:flex-start!important;gap:9px!important}.voice-reverse-toggle span{display:grid;gap:2px}.voice-reverse-toggle strong{font-size:.59rem}.voice-reverse-toggle small{font-size:.49rem;color:var(--muted);line-height:1.35}.voice-fx-note{margin:0;font-size:.5rem;line-height:1.45;color:var(--muted)}.voice-fx-launch{width:100%;display:grid;grid-template-columns:26px minmax(0,1fr) 16px;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);color:var(--text);text-align:left}.voice-fx-launch>svg{width:16px;height:16px}.voice-fx-launch span{display:grid;gap:1px}.voice-fx-launch strong{font-size:.61rem}.voice-fx-launch small{font-size:.5rem;color:var(--muted)}
@media(max-width:700px){.voice-fx-grid{grid-template-columns:1fr 1fr;max-height:45vh}.voice-fx-head{align-items:flex-start}.voice-fx-head>span{font-size:.5rem}.voice-fx-card{grid-template-columns:25px minmax(0,1fr);padding:8px}.voice-fx-card>svg{width:16px;height:16px}}

/* ===== v8.7 conversation creation drawer, canvas, document viewer, transcript UI ===== */
/* Plus drawer: anchored, structured, theme-aware. */
#messageForm .composer-tools-menu{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:0!important;
  width:min(390px,calc(100vw - 24px))!important;
  max-height:min(72vh,650px)!important;
  padding:0!important;
  overflow:auto!important;
  left:0!important;
  right:auto!important;
  bottom:50px!important;
  border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 18%,var(--line))!important;
  border-radius:16px!important;
  background:color-mix(in srgb,var(--panel) 97%,var(--chat-accent,var(--accent)) 3%)!important;
  box-shadow:0 20px 70px #000a!important;
  backdrop-filter:blur(22px)!important;
  overscroll-behavior:contain;
}
#messageForm .composer-tools-menu[hidden]{display:none!important}
.composer-drawer-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 12px 9px;background:color-mix(in srgb,var(--panel) 96%,transparent);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
.composer-drawer-head>div{display:grid;gap:1px}.composer-drawer-head small{font-size:8px;letter-spacing:.15em;font-weight:850;color:var(--chat-accent,var(--accent))}.composer-drawer-head strong{font-size:14px}.composer-drawer-head .icon-btn{width:32px;height:32px}
.composer-featured-draw{margin:10px 10px 6px!important;width:calc(100% - 20px)!important;min-height:74px!important;display:grid!important;grid-template-columns:42px minmax(0,1fr) 18px!important;gap:10px!important;align-items:center!important;padding:10px 12px!important;border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 35%,var(--line))!important;border-radius:14px!important;background:linear-gradient(135deg,color-mix(in srgb,var(--chat-accent,var(--accent)) 12%,var(--panel2)),var(--panel2))!important;color:var(--text)!important;text-align:left!important}
.composer-featured-draw:hover{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 70%,var(--line))!important}.composer-featured-icon{width:42px;height:42px;border-radius:12px;display:grid!important;place-items:center;background:var(--chat-accent,var(--accent));color:#07111c}.composer-featured-icon svg{width:20px!important;height:20px!important;color:inherit!important}.composer-featured-draw>span:nth-child(2){display:grid!important;gap:2px!important;min-width:0}.composer-featured-draw small{font-size:8px!important;letter-spacing:.11em;color:var(--chat-accent,var(--accent))!important}.composer-featured-draw strong{font-size:12px!important}.composer-featured-draw em{font-size:9px;font-style:normal;color:var(--muted);line-height:1.35}.composer-featured-draw>svg{width:16px!important;height:16px!important;color:var(--muted)!important}
.composer-tool-group{display:grid;gap:6px;padding:7px 10px 10px;border-top:1px solid var(--line)}.composer-tool-group>header{display:flex;align-items:center;justify-content:space-between;padding:2px 2px}.composer-tool-group>header span{font-size:8px;letter-spacing:.12em;text-transform:uppercase;font-weight:850;color:var(--muted)}.composer-tool-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.composer-tool-grid>button{width:100%!important;min-height:52px!important;display:grid!important;grid-template-columns:28px minmax(0,1fr)!important;gap:8px!important;align-items:center!important;padding:7px 8px!important;border:1px solid transparent!important;border-radius:10px!important;background:transparent!important;color:var(--text)!important;text-align:left!important}.composer-tool-grid>button:hover{border-color:var(--line)!important;background:var(--panel2)!important}.composer-tool-grid>button>svg{width:16px!important;height:16px!important;color:var(--soft)!important;justify-self:center}.composer-tool-grid>button span{display:grid!important;gap:1px!important;min-width:0}.composer-tool-grid>button strong{font-size:10px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.composer-tool-grid>button small{display:block!important;font-size:8px!important;color:var(--muted)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.composer-tool-group.compact .composer-tool-grid>button{min-height:46px!important}
.composer-plus[aria-expanded="true"]{background:color-mix(in srgb,var(--chat-accent,var(--accent)) 14%,var(--panel2))!important;color:var(--chat-accent,var(--accent))!important;transform:rotate(45deg)}

/* Painting workspace. */
.paint-app{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:min(72vh,760px);border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel2)}
.paint-sidebar{min-width:0;padding:12px;border-right:1px solid var(--line);background:var(--panel);overflow:auto;display:grid;align-content:start;gap:14px}.paint-sidebar section{display:grid;gap:7px}.paint-brand{display:flex;align-items:center;gap:9px;padding-bottom:10px;border-bottom:1px solid var(--line)}.paint-brand>span{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;background:var(--chat-accent,var(--accent));color:#07111c}.paint-brand>span svg{width:17px;height:17px}.paint-brand>div{display:grid;gap:1px}.paint-brand small{font-size:7px;letter-spacing:.12em;color:var(--muted);font-weight:850}.paint-brand strong{font-size:12px}.paint-label{font-size:8px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:850}.paint-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.paint-label-row input[type="color"]{width:38px;height:30px;padding:2px;border-radius:8px}
.paint-tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.paint-tool-grid button{min-height:42px;display:grid;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:6px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:var(--soft);padding:7px;text-align:left;font-size:9px}.paint-tool-grid button svg{width:15px;height:15px}.paint-tool-grid button.active{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 65%,var(--line));background:color-mix(in srgb,var(--chat-accent,var(--accent)) 10%,var(--panel2));color:var(--text)}
.paint-palette-tabs{display:flex;gap:3px}.paint-palette-tabs button{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--muted);padding:5px 4px;font-size:8px}.paint-palette-tabs button.active{color:var(--text);background:var(--panel2);border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 45%,var(--line))}.paint-swatches{display:grid;grid-template-columns:repeat(8,1fr);gap:4px}.paint-swatch{aspect-ratio:1;border-radius:999px;border:2px solid color-mix(in srgb,var(--line) 85%,transparent);background:var(--swatch);padding:0;min-height:0}.paint-swatch.active{outline:2px solid var(--chat-accent,var(--accent));outline-offset:1px}.paint-sliders label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;font-size:9px;color:var(--soft)}.paint-sliders output{font-size:8px;color:var(--muted);font-variant-numeric:tabular-nums}.paint-sliders input[type="range"]{grid-column:1/-1;width:100%}.paint-board-settings select{width:100%;font-size:10px}.paint-size-row{display:grid;grid-template-columns:1fr auto 1fr auto;gap:5px;align-items:center}.paint-size-row input{min-width:0;width:100%;padding:7px;font-size:10px}.paint-size-row button{padding:7px 9px;font-size:9px}
.paint-workspace{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);background:color-mix(in srgb,var(--panel3) 90%,#000)}.paint-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--panel)}.paint-history{display:flex;align-items:center;gap:5px}.paint-history .icon-btn{width:32px;height:32px}.paint-status{display:flex;align-items:center;gap:8px;min-width:0;color:var(--muted);font-size:8px}.paint-status span+span{padding-left:8px;border-left:1px solid var(--line)}.paint-topbar .primary{min-height:34px;padding:7px 11px;font-size:10px}.paint-stage{max-height:none!important;height:100%;border:0!important;border-radius:0!important;background:repeating-conic-gradient(#20252d 0 25%,#191e25 0 50%) 50%/20px 20px!important;padding:18px;display:grid;place-items:start center}.paint-canvas-wrap{max-width:100%;overflow:auto;box-shadow:0 18px 55px #0008;border-radius:2px}.paint-stage canvas{width:min(100%,1000px)!important;height:auto!important;min-width:520px!important;background:#fff;cursor:crosshair;touch-action:none}.paint-stage canvas[data-tool="bucket"]{cursor:cell}.paint-stage canvas[data-tool="eraser"]{cursor:crosshair}

/* Conversation options are grouped instead of loose buttons. */
.conversation-options{display:grid;gap:12px}.conversation-option-section{display:grid;gap:10px;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--panel2)}.conversation-option-section>header{display:flex;align-items:center;gap:9px}.conversation-option-section>header>span{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--chat-accent,var(--accent))}.conversation-option-section>header>span svg{width:15px;height:15px}.conversation-option-section>header>div{display:grid;gap:1px}.conversation-option-section>header strong{font-size:11px}.conversation-option-section>header small{font-size:8px;color:var(--muted)}.conversation-option-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.option-button{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;padding:9px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);text-align:left}.option-button>svg{width:15px;height:15px;color:var(--soft)}.option-button>span{display:grid;gap:1px;min-width:0}.option-button strong{font-size:9px}.option-button small{font-size:8px;color:var(--muted)}.option-button:hover{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 45%,var(--line))}.danger-option{border-color:color-mix(in srgb,#ff5f6d 30%,var(--line));color:#ff8b95}.conversation-accent-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.conversation-accent{width:30px;height:30px;min-height:30px;border-radius:999px;border:2px solid var(--panel2);background:var(--choice);box-shadow:0 0 0 1px var(--line);padding:0}.conversation-accent.active{box-shadow:0 0 0 2px var(--panel2),0 0 0 4px var(--choice)}.conversation-accent.custom{display:grid;place-items:center;background:var(--panel);color:var(--soft);position:relative;overflow:hidden}.conversation-accent.custom input{position:absolute;inset:0;opacity:0;cursor:pointer}.conversation-accent.custom svg{width:14px;height:14px}.conversation-select{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:9px;border-top:1px solid var(--line)}.conversation-select>span{display:grid;gap:1px}.conversation-select strong{font-size:9px}.conversation-select small{font-size:8px;color:var(--muted)}.conversation-select select{width:auto;min-width:110px}.blocked-members:empty{display:none}.blocked-members{padding-top:7px;border-top:1px solid var(--line)}

/* DOCX cards + in-app viewer. */
.docx-attachment{display:grid!important;grid-template-columns:36px minmax(0,1fr) auto 32px!important;align-items:center!important;gap:9px!important;text-decoration:none!important}.docx-file-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:9px;background:color-mix(in srgb,#2b73d2 18%,var(--panel2));color:#78aef5}.docx-file-icon svg{width:17px;height:17px}.file-attachment-copy{display:grid;gap:2px;min-width:0}.file-attachment-copy strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-attachment-copy small{font-size:8px;color:var(--muted)}.docx-view-button{display:flex;align-items:center;gap:5px;border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 35%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--chat-accent,var(--accent)) 8%,var(--panel2));color:var(--text);padding:7px 9px;font-size:9px}.docx-view-button svg{width:13px;height:13px}.docx-attachment>a.icon-btn{width:32px;height:32px}
.docx-viewer{display:grid;gap:0;min-height:min(72vh,720px);background:var(--panel2);border:1px solid var(--line);border-radius:13px;overflow:hidden}.docx-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--panel)}.docx-viewer-title{display:flex;align-items:center;gap:9px;min-width:0}.docx-viewer-title>svg{width:20px;height:20px;color:#78aef5;flex:0 0 auto}.docx-viewer-title span{display:grid;gap:1px;min-width:0}.docx-viewer-title strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.docx-viewer-title small{font-size:8px;color:var(--muted)}.docx-viewer-actions{display:flex;align-items:center;gap:4px}.docx-viewer-actions .icon-btn{width:32px;height:32px}.docx-zoom-value{border:0;background:transparent;color:var(--muted);font-size:9px;min-width:42px}.docx-loading,.docx-error{min-height:500px;display:grid;place-items:center;align-content:center;gap:8px;text-align:center;padding:30px}.docx-loading strong,.docx-error strong{font-size:13px}.docx-loading small,.docx-error p{font-size:9px;color:var(--muted);margin:0}.docx-error>svg{width:30px;height:30px;color:#ff8b95}.docx-page-scroller{overflow:auto;padding:28px;background:#85898e;overscroll-behavior:contain}.docx-page{--docx-zoom:1;width:min(760px,100%);min-height:880px;margin:0 auto;padding:64px 72px;background:#fff;color:#16191e;font:calc(14px * var(--docx-zoom))/1.65 Georgia,'Times New Roman',serif;box-shadow:0 8px 40px #0004;transform-origin:top center}.docx-page h1,.docx-page h2,.docx-page h3,.docx-page h4{font-family:system-ui,-apple-system,'Segoe UI',sans-serif;line-height:1.2;color:#111827}.docx-page h1{font-size:calc(28px * var(--docx-zoom));margin:0 0 20px}.docx-page h2{font-size:calc(22px * var(--docx-zoom));margin:24px 0 12px}.docx-page h3{font-size:calc(18px * var(--docx-zoom));margin:20px 0 10px}.docx-page p{margin:0 0 12px}.docx-page img{max-width:100%;height:auto}.docx-page table{width:100%;border-collapse:collapse;margin:16px 0}.docx-page td,.docx-page th{border:1px solid #cfd4da;padding:6px 8px;vertical-align:top}.docx-page a{color:#1d5fab}.docx-page ul,.docx-page ol{padding-left:24px}.docx-page blockquote{margin:16px 0;padding:10px 14px;border-left:3px solid #9ba3af;color:#4b5563;background:#f5f6f8}

/* Captions: a readable transcript card, not a tiny black dot. */
.call-captions{left:50%!important;right:auto!important;bottom:16%!important;width:min(620px,calc(100% - 36px))!important;max-width:none!important;min-width:min(280px,calc(100% - 36px))!important;padding:0!important;background:transparent!important;border-radius:0!important;text-align:left!important;pointer-events:none!important;z-index:12!important}.call-caption-bubble{display:grid;gap:4px;width:100%;padding:9px 12px;border:1px solid #ffffff20;border-radius:12px;background:#080a0ee8;color:#fff;box-shadow:0 12px 40px #0008;backdrop-filter:blur(10px)}.call-caption-meta{display:flex;align-items:center;gap:6px;min-width:0}.call-caption-meta svg{width:13px;height:13px;color:#b7c7ff}.call-caption-meta b{font-size:10px;color:#fff}.call-caption-meta small{font-size:8px;color:#aeb5bf;margin-left:auto;text-transform:uppercase;letter-spacing:.08em}.call-caption-text{font-size:14px;line-height:1.42;font-weight:600;color:#fff;overflow-wrap:anywhere}.call-captions.interim .call-caption-text{color:#e2e5e9}.call-captions.interim .call-caption-bubble{opacity:.9}

@media(max-width:720px){
  #messageForm .composer-tools-menu{position:fixed!important;left:8px!important;right:8px!important;bottom:calc(62px + env(safe-area-inset-bottom))!important;width:auto!important;max-height:min(68vh,560px)!important;border-radius:18px!important}.composer-tool-grid{grid-template-columns:1fr 1fr}.composer-featured-draw{min-height:70px!important}.composer-featured-draw em{display:none}.composer-drawer-head{padding-top:10px}
  .paint-app{grid-template-columns:1fr;min-height:0}.paint-sidebar{border-right:0;border-bottom:1px solid var(--line);max-height:300px;grid-template-columns:1fr 1fr;align-items:start}.paint-brand{grid-column:1/-1}.paint-sidebar section{min-width:0}.paint-tool-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.paint-tool-grid button{display:grid;grid-template-columns:1fr;justify-items:center;text-align:center;gap:3px}.paint-swatches{grid-template-columns:repeat(8,1fr)}.paint-board-settings{grid-column:1/-1}.paint-topbar{flex-wrap:wrap}.paint-status{order:3;width:100%;justify-content:center}.paint-stage{padding:10px;max-height:55vh!important}.paint-stage canvas{min-width:440px!important}
  .conversation-option-grid{grid-template-columns:1fr}.conversation-option-section{padding:10px}.conversation-select{align-items:flex-start;flex-direction:column}.conversation-select select{width:100%}
  .docx-attachment{grid-template-columns:34px minmax(0,1fr) auto!important}.docx-attachment>a.icon-btn{display:none}.docx-view-button{padding:7px}.docx-viewer{min-height:70vh}.docx-page-scroller{padding:12px}.docx-page{padding:34px 24px;min-height:760px}.docx-viewer-head{align-items:flex-start}.docx-viewer-actions{flex:0 0 auto}
  .call-captions{bottom:19%!important;width:calc(100% - 20px)!important;min-width:0!important}.call-caption-text{font-size:13px}
}

/* ===== v8.8 Aceternity-inspired interaction system =====
   Interaction patterns are ported from Aceternity UI's public 3D Card,
   Card Hover Effect, Animated Tooltip, Animated Modal, Floating Dock and
   Moving Border components into Black River's existing vanilla stack.
   https://ui.aceternity.com/components | https://ui.aceternity.com/licence */
:root{
  --ace-ease:cubic-bezier(.2,.8,.2,1);
  --ace-spring:cubic-bezier(.16,1,.3,1);
  --ace-surface:color-mix(in srgb,var(--panel) 94%,#000 6%);
  --ace-surface-2:color-mix(in srgb,var(--panel2) 94%,#000 6%);
  --ace-hairline:color-mix(in srgb,var(--line) 78%,transparent);
  --ace-highlight:color-mix(in srgb,var(--chat-accent,var(--accent)) 16%,transparent);
}

/* Keep the app neutral/OLED rather than turning Aceternity into a blue skin. */
html[data-theme="dark"] #sidebar.canvas-rail{
  background:#0b0c0e!important;
  border-right:1px solid #ffffff0d!important;
}
html[data-theme="dark"] .topbar{background:#0e0f11!important}
#sidebar.canvas-rail{transition:background .25s var(--ace-ease),border-color .25s var(--ace-ease)}
.canvas-rail nav button{position:relative;overflow:hidden;transition:background .2s var(--ace-ease),color .2s var(--ace-ease),transform .2s var(--ace-spring)!important}
.canvas-rail nav button::after{content:"";position:absolute;left:0;top:50%;width:2px;height:0;border-radius:0 3px 3px 0;background:var(--accent);transform:translateY(-50%);transition:height .22s var(--ace-spring)}
.canvas-rail nav button.active::after{height:26px}
.canvas-rail nav button:hover{transform:translateX(1px)}

/* Aceternity-style animated modal, adapted to the native dialog already used everywhere. */
#modal.ace-modal{
  overflow:hidden;
  border-radius:18px!important;
  border:1px solid color-mix(in srgb,var(--line) 80%,transparent)!important;
  background:color-mix(in srgb,var(--panel) 97%,#000 3%)!important;
  box-shadow:0 35px 110px #000a,0 0 0 1px #ffffff05 inset!important;
  transform-origin:50% 45%;
}
#modal.ace-modal[open]{animation:ace-modal-in .42s var(--ace-spring) both}
#modal.ace-modal::backdrop{background:#000a!important;backdrop-filter:blur(10px) saturate(.85)!important;animation:ace-backdrop-in .28s ease both}
#modal.ace-modal .modal-head{
  background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 100%,transparent),color-mix(in srgb,var(--panel) 96%,transparent))!important;
  border-bottom:1px solid var(--ace-hairline)!important;
  padding:17px 20px!important;
}
#modal.ace-modal .modal-head h2{font-size:.94rem!important;letter-spacing:-.018em}
#modal.ace-modal .modal-body{padding:20px!important}
@keyframes ace-modal-in{0%{opacity:0;transform:perspective(900px) translateY(28px) scale(.92) rotateX(7deg)}100%{opacity:1;transform:perspective(900px) translateY(0) scale(1) rotateX(0)}}
@keyframes ace-backdrop-in{from{opacity:0}to{opacity:1}}

/* Animated tooltip: follows the pointer slightly and tilts like Aceternity's tooltip. */
.ace-tooltip{
  position:fixed;z-index:10000;pointer-events:none;opacity:0;transform:translateY(8px) scale(.86) rotate(var(--ace-tooltip-rotate,0deg));
  transform-origin:50% 100%;padding:7px 10px;border-radius:9px;background:#070708;color:#fff;border:1px solid #ffffff18;
  box-shadow:0 12px 30px #0009;display:grid;gap:1px;max-width:260px;transition:opacity .16s ease,transform .2s var(--ace-spring);white-space:nowrap
}
.ace-tooltip::after{content:"";position:absolute;left:18%;right:18%;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--chat-accent,var(--accent)),transparent);opacity:.9}
.ace-tooltip strong{font-size:10px;line-height:1.25}.ace-tooltip span{font-size:8px;color:#aeb3bd}.ace-tooltip.show{opacity:1;transform:translateY(0) scale(1) rotate(var(--ace-tooltip-rotate,0deg))}

/* 3D Card port: JS supplies pointer rotation values; CSS keeps the motion subtle. */
.ace-tilt{
  --ace-tilt-x:0deg;--ace-tilt-y:0deg;--ace-pointer-x:50%;--ace-pointer-y:50%;
  transform:perspective(950px) rotateX(var(--ace-tilt-x)) rotateY(var(--ace-tilt-y)) translateZ(0);
  transform-style:preserve-3d;transition:transform .2s var(--ace-ease),border-color .2s ease,background .2s ease;will-change:transform
}
.ace-tilt::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(240px circle at var(--ace-pointer-x) var(--ace-pointer-y),color-mix(in srgb,var(--chat-accent,var(--accent)) 12%,transparent),transparent 68%);transition:opacity .2s ease}
.ace-tilt:hover::after{opacity:1}

/* Card Hover Effect port: one moving background glides between items instead of each card flashing independently. */
.ace-hover-zone{position:relative!important;isolation:isolate}
.ace-hover-zone>.ace-hover-indicator{
  position:absolute;z-index:0;left:0;top:0;width:var(--ace-hover-w,0);height:var(--ace-hover-h,0);
  transform:translate(var(--ace-hover-x,0),var(--ace-hover-y,0));border-radius:13px;opacity:0;pointer-events:none;
  background:color-mix(in srgb,var(--chat-accent,var(--accent)) 9%,var(--panel2));border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 19%,var(--line));
  transition:transform .2s var(--ace-spring),width .2s var(--ace-spring),height .2s var(--ace-spring),opacity .14s ease
}
.ace-hover-zone>.ace-hover-indicator.show{opacity:1}
.ace-hover-zone>button,.ace-hover-zone>a,.ace-hover-zone>article{position:relative;z-index:1}

/* Cursor spotlight: used only on featured surfaces, not as a site-wide glow. */
.ace-spotlight{position:relative;isolation:isolate;overflow:hidden}
.ace-spotlight::before{content:"";position:absolute;z-index:-1;width:300px;height:300px;left:calc(var(--ace-spot-x,50%) - 150px);top:calc(var(--ace-spot-y,50%) - 150px);border-radius:50%;pointer-events:none;background:radial-gradient(circle,color-mix(in srgb,var(--chat-accent,var(--accent)) 8%,transparent),transparent 67%);opacity:0;transition:opacity .22s ease}
.ace-spotlight:hover::before,.ace-spotlight.ace-focus-within::before{opacity:1}

/* Magnetic button port. */
.ace-magnetic{--ace-mag-x:0px;--ace-mag-y:0px;transform:translate(var(--ace-mag-x),var(--ace-mag-y));transition:transform .2s var(--ace-spring),background .16s ease,border-color .16s ease,color .16s ease!important;will-change:transform}
.ace-magnetic:active{transform:translate(var(--ace-mag-x),var(--ace-mag-y)) scale(.94)}

/* Moving-border concept from Aceternity's moving border. Kept restrained and theme driven. */
@property --ace-border-angle{syntax:'<angle>';initial-value:0deg;inherits:false}
.ace-moving-border{position:relative!important;isolation:isolate}
.ace-moving-border::before{content:"";position:absolute;z-index:-1;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--ace-border-angle),transparent 0 72%,color-mix(in srgb,var(--chat-accent,var(--accent)) 74%,#fff 6%) 82%,transparent 91%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;animation:ace-border-run 4.2s linear infinite}
@keyframes ace-border-run{to{--ace-border-angle:360deg}}

/* Floating-dock treatment for conversation and call controls. */
.conversation-tools{
  padding:3px;border:1px solid color-mix(in srgb,var(--line) 76%,transparent);border-radius:12px;
  background:color-mix(in srgb,var(--panel2) 82%,transparent);box-shadow:0 8px 24px #0002;gap:1px!important
}
.conversation-tools .icon-btn{border-color:transparent!important;background:transparent!important;border-radius:9px!important}
@media(hover:hover) and (pointer:fine){
  .conversation-tools .icon-btn:hover,.call-controls .call-control:hover{transform:translate(var(--ace-mag-x),var(--ace-mag-y)) scale(1.12)!important;z-index:2}
  .conversation-tools .icon-btn:has(+ .icon-btn:hover),.conversation-tools .icon-btn:hover + .icon-btn{transform:translate(var(--ace-mag-x),var(--ace-mag-y)) scale(1.055)!important}
  .call-controls .call-control:has(+ .call-control:hover),.call-controls .call-control:hover + .call-control{transform:translate(var(--ace-mag-x),var(--ace-mag-y)) scale(1.045)!important}
}
.call-controls{
  border:1px solid color-mix(in srgb,var(--line) 72%,transparent)!important;border-radius:18px!important;
  padding:6px!important;gap:3px!important;background:color-mix(in srgb,#090a0c 88%,var(--panel) 12%)!important;
  box-shadow:0 18px 50px #0008,0 0 0 1px #ffffff05 inset!important
}
.call-control{border-radius:12px!important}

/* Composer drawer: a real Aceternity-style command surface, not floating buttons. */
#messageForm .composer-tools-menu{
  width:min(430px,calc(100vw - 24px))!important;display:block!important;padding:0!important;border-radius:20px!important;
  border:1px solid color-mix(in srgb,var(--line) 82%,transparent)!important;background:color-mix(in srgb,var(--panel) 98%,#000 2%)!important;
  box-shadow:0 28px 90px #0009,0 0 0 1px #ffffff04 inset!important;overflow:hidden!important;transform-origin:26px 100%
}
#messageForm .composer-tools-menu[hidden]{display:none!important}
#messageForm .composer-tools-menu.ace-drawer-enter{animation:ace-drawer-in .32s var(--ace-spring) both}
@keyframes ace-drawer-in{from{opacity:0;transform:translateY(12px) scale(.94) rotateX(5deg)}to{opacity:1;transform:translateY(0) scale(1) rotateX(0)}}
.composer-drawer-head{padding:14px 15px 10px!important;background:transparent!important;backdrop-filter:none!important}
.ace-drawer-title{min-width:0}.ace-drawer-title small{font-size:8px!important;letter-spacing:.18em!important}.ace-drawer-title strong{font-size:15px!important;letter-spacing:-.02em}.ace-drawer-title span{font-size:9px;color:var(--muted)}
.composer-drawer-notch{
  --notch-index:0;position:relative;margin:0 12px 11px;padding:3px;display:grid;grid-template-columns:repeat(3,1fr);gap:2px;
  border:1px solid var(--ace-hairline);border-radius:12px;background:color-mix(in srgb,var(--panel2) 76%,transparent);isolation:isolate
}
.composer-notch-indicator{position:absolute;z-index:0;left:3px;top:3px;bottom:3px;width:calc((100% - 10px)/3);border-radius:9px;background:color-mix(in srgb,var(--chat-accent,var(--accent)) 13%,var(--panel));border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 28%,var(--line));transform:translateX(calc(var(--notch-index) * (100% + 2px)));transition:transform .28s var(--ace-spring)}
.composer-drawer-notch button{position:relative;z-index:1;border:0!important;background:transparent!important;color:var(--muted)!important;font-size:9px!important;font-weight:760!important;min-height:30px!important;padding:5px 7px!important;border-radius:9px!important}.composer-drawer-notch button.active{color:var(--text)!important}
.composer-featured-draw{
  margin:0 12px 12px!important;min-height:84px!important;width:calc(100% - 24px)!important;display:grid!important;grid-template-columns:46px minmax(0,1fr) 24px!important;align-items:center!important;gap:11px!important;
  padding:12px!important;border-radius:16px!important;border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 29%,var(--line))!important;
  background:linear-gradient(135deg,color-mix(in srgb,var(--chat-accent,var(--accent)) 10%,var(--panel2)),var(--panel2))!important;text-align:left!important
}
.composer-featured-draw .composer-featured-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:color-mix(in srgb,var(--chat-accent,var(--accent)) 15%,#090a0c);color:var(--chat-accent,var(--accent));border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 28%,var(--line))}
.composer-featured-draw .composer-featured-icon svg{width:20px}.composer-featured-draw>span:nth-child(2){display:grid;gap:2px;min-width:0}.composer-featured-draw small{font-size:7px!important;letter-spacing:.17em;color:var(--chat-accent,var(--accent))}.composer-featured-draw strong{font-size:12px!important}.composer-featured-draw em{font-size:8px!important;line-height:1.35;color:var(--muted);font-style:normal}.featured-draw-arrow{color:var(--muted)}.featured-draw-arrow svg{width:16px}
.composer-tab-panels{max-height:min(54vh,500px);overflow:auto;padding:0 12px 12px}.composer-tool-group{display:grid;gap:7px}.composer-tool-group[hidden]{display:none!important}.composer-tool-group>header{display:flex!important;align-items:center!important;justify-content:space-between!important;padding:0 2px!important}.composer-tool-group>header span{font-size:9px!important;font-weight:780;color:var(--text)!important}.composer-tool-group>header small{font-size:7.5px;color:var(--muted)}
.composer-tool-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}
.composer-tool-grid>button{
  min-height:63px!important;display:grid!important;grid-template-columns:28px minmax(0,1fr)!important;align-items:center!important;gap:9px!important;
  padding:9px!important;border:1px solid var(--ace-hairline)!important;border-radius:12px!important;background:color-mix(in srgb,var(--panel2) 70%,transparent)!important;color:var(--text)!important;text-align:left!important
}
.composer-tool-grid>button>svg{width:15px;height:15px;color:var(--chat-accent,var(--accent))}.composer-tool-grid>button>span{display:grid;gap:2px;min-width:0}.composer-tool-grid strong{font-size:9.5px!important}.composer-tool-grid small{font-size:7.5px!important;color:var(--muted)!important;line-height:1.25}.composer-tool-grid>button:hover{border-color:transparent!important;background:transparent!important}

/* Composer itself gets the clean expanding-input treatment without becoming glassy. */
#messageForm{border-radius:15px!important;border:1px solid var(--ace-hairline)!important;background:color-mix(in srgb,var(--panel2) 92%,var(--panel))!important;transition:border-color .2s ease,box-shadow .2s ease,transform .2s var(--ace-ease)}
#messageForm:focus-within{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 35%,var(--line))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--chat-accent,var(--accent)) 7%,transparent),0 14px 40px #0003!important}
#messageForm textarea{background:transparent!important}
.send-button{border-radius:11px!important}

/* Conversation options: structured hover cards with a shared sliding background. */
.conversation-options{gap:10px!important}.conversation-option-section{border-radius:16px!important;border-color:var(--ace-hairline)!important;background:color-mix(in srgb,var(--panel2) 75%,transparent)!important;padding:11px!important}
.conversation-option-section>header>span{border-radius:10px!important;background:#090a0c!important}
.conversation-option-grid{gap:5px!important}
.option-button{border-radius:11px!important;border-color:var(--ace-hairline)!important;background:transparent!important;min-height:52px;transition:color .16s ease!important}.option-button:hover{border-color:transparent!important;background:transparent!important}
.conversation-accent{transition:transform .2s var(--ace-spring),box-shadow .2s ease}.conversation-accent:hover{transform:translateY(-2px) scale(1.06)}

/* Search / command palette: Aceternity-like expanding search field. */
.search-field,.member-search,#messageSearchBar{position:relative;transition:border-color .2s ease,box-shadow .25s ease,transform .25s var(--ace-spring)}
.search-field:focus-within,.member-search:focus-within,#messageSearchBar:focus-within{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 42%,var(--line))!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--chat-accent,var(--accent)) 7%,transparent)!important;transform:translateY(-1px)}
.command-palette #commandResults{display:grid;gap:5px;position:relative}.command-palette #commandResults button{min-height:42px;text-align:left;border:1px solid var(--ace-hairline);border-radius:11px;background:transparent;color:var(--text);padding:9px 11px}

/* Games: keep existing content/logic, replace generic list-card feel with the Aceternity 3D/hover behavior. */
.games-hub-hero{border-radius:18px!important;background:linear-gradient(135deg,color-mix(in srgb,var(--chat-accent,var(--accent)) 7%,var(--panel2)),var(--panel2))!important;border-color:var(--ace-hairline)!important}
.game-catalog-v6{gap:9px!important}.game-card-v6{position:relative!important;overflow:hidden!important;border-radius:16px!important;border:1px solid var(--ace-hairline)!important;background:#0f1012!important;box-shadow:0 12px 35px #0002!important}.game-card-v6:hover{background:#111316!important;border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 24%,var(--line))!important;transform:perspective(950px) rotateX(var(--ace-tilt-x)) rotateY(var(--ace-tilt-y)) translateY(-2px)!important}.game-card-art{box-shadow:inset 0 0 0 1px #ffffff08}.game-card-play{transition:transform .2s var(--ace-spring),color .2s ease}.game-card-v6:hover .game-card-play{transform:translateX(3px);color:var(--chat-accent,var(--accent))}

/* Activity and document surfaces get the same hierarchy, not random one-off card styling. */
.shared-activity-card,.activity-card{position:relative;border-radius:16px!important;border-color:var(--ace-hairline)!important;background:color-mix(in srgb,var(--panel2) 88%,#000 12%)!important;overflow:hidden}
.shared-activity-card:hover,.activity-card:hover{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 26%,var(--line))!important}
.docx-viewer{border-radius:16px;overflow:hidden}.docx-viewer-head{background:linear-gradient(180deg,color-mix(in srgb,var(--panel2) 90%,transparent),var(--panel2));border-bottom:1px solid var(--ace-hairline)}

/* Drawing app: professional editor chrome, same Aceternity language as the rest of chat. */
.paint-app{border:1px solid var(--ace-hairline)!important;border-radius:17px!important;overflow:hidden!important;background:#0d0e10!important}
.paint-sidebar{background:#101114!important;border-color:var(--ace-hairline)!important}.paint-sidebar section{border:1px solid transparent;border-radius:12px;padding:8px;transition:border-color .2s ease,background .2s ease}.paint-sidebar section:hover,.paint-sidebar section.ace-focus-within{border-color:var(--ace-hairline);background:color-mix(in srgb,var(--panel2) 55%,transparent)}
.paint-topbar{background:#101114!important;border-color:var(--ace-hairline)!important}.paint-tool-grid button{border-radius:10px!important}.paint-tool-grid button.active{background:color-mix(in srgb,var(--chat-accent,var(--accent)) 13%,var(--panel2))!important;border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 32%,var(--line))!important}

/* General buttons and fields: consistent micro-interactions without coating every surface in glass. */
button,.primary,.secondary,.danger,input,textarea,select{transition:border-color .16s ease,background .16s ease,color .16s ease,box-shadow .18s ease,transform .18s var(--ace-ease)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 68%,#fff 8%)!important;outline-offset:2px!important}

@media(max-width:700px){
  .ace-tooltip{display:none!important}
  .ace-tilt{transform:none!important}.ace-tilt::after{display:none!important}.ace-magnetic{transform:none!important}
  #modal.ace-modal{border-radius:18px!important}
  #messageForm .composer-tools-menu{left:7px!important;right:7px!important;bottom:calc(58px + env(safe-area-inset-bottom))!important;width:auto!important;max-height:min(74vh,620px)!important;border-radius:18px!important}
  .composer-drawer-head{padding:11px 12px 8px!important}.composer-drawer-notch{margin:0 9px 9px}.composer-featured-draw{margin:0 9px 9px!important;width:calc(100% - 18px)!important}.composer-tab-panels{padding:0 9px 10px;max-height:min(55vh,500px)}
  .composer-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.composer-tool-grid>button{min-height:58px!important;padding:8px!important}
  .conversation-tools{padding:1px;border-radius:10px}.call-controls{border-radius:16px!important;padding:5px!important}
}
@media(max-width:390px){.composer-tool-grid{grid-template-columns:1fr 1fr!important}.composer-tool-grid>button{grid-template-columns:24px minmax(0,1fr)!important;gap:6px!important}.composer-featured-draw{grid-template-columns:40px minmax(0,1fr) 20px!important}.composer-featured-draw .composer-featured-icon{width:40px;height:40px}.ace-drawer-title span{display:none}}
@media(prefers-reduced-motion:reduce){.ace-moving-border::before{animation:none!important}.ace-tooltip,.ace-tilt,.ace-magnetic,.ace-hover-indicator,#modal.ace-modal[open],#messageForm .composer-tools-menu.ace-drawer-enter{animation:none!important;transition:none!important;transform:none!important}}


/* ===== v8.9 Aceternity registry + scroll repair ===== */
/* Global scrolling: v8.8 accidentally let several fixed-height shells trap wheel/touch input. */
html,body{min-height:100%;overflow-y:auto!important;overscroll-behavior-y:auto}
body:has(.chat-page){overflow:hidden!important}
#content:not(.chat-page){overflow:visible!important}
#content.chat-page{overflow:hidden!important}
.message-list,#memberList,.composer-tab-panels,.modal-body,.docx-page-scroller,.paint-sidebar,.paint-stage,.attachment-results,.thread-replies,.command-palette #commandResults{scrollbar-width:thin!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.message-list,#memberList,.composer-tab-panels,.docx-page-scroller,.paint-sidebar,.paint-stage,.modal-body{touch-action:pan-y pinch-zoom}

/* Native dialog gets the same structure as Aceternity's Animated Modal: fixed shell, independently scrollable content. */
dialog,#modal.ace-modal{display:none;grid-template-rows:auto minmax(0,1fr);overflow:hidden!important;max-height:min(90dvh,920px)!important}
dialog[open],#modal.ace-modal[open]{display:grid!important}
#modal.ace-modal.wide{width:min(1120px,calc(100vw - 24px));height:min(88dvh,900px)}
#modal.ace-modal .modal-head{position:relative!important;top:auto!important;flex:0 0 auto;z-index:3}
.modal-title-wrap{display:grid;gap:2px;min-width:0}.modal-title-wrap>small{font-size:7px;letter-spacing:.18em;color:var(--chat-accent,var(--accent));font-weight:900}.modal-title-wrap h2{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#modal.ace-modal .modal-body{min-height:0!important;overflow:auto!important;max-height:none!important;padding:18px!important}
#modal.ace-modal.wide .modal-body{height:100%;display:block}

/* Aceternity 3D Card: intentionally obvious now. */
.ace-tilt{--ace-pointer-x:50%;--ace-pointer-y:50%;position:relative;transform-style:preserve-3d;transition:transform .2s linear,border-color .2s ease,box-shadow .2s ease!important;will-change:transform}
.ace-tilt>*{transform-style:preserve-3d}.ace-tilt:hover{box-shadow:0 20px 46px #0005!important;z-index:2}.ace-tilt.ace-tilt-active::after{opacity:1}
.ace-tilt::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(360px circle at var(--ace-pointer-x) var(--ace-pointer-y),color-mix(in srgb,var(--chat-accent,var(--accent)) 18%,transparent),transparent 66%);transition:opacity .2s ease}
.game-card-v6.ace-tilt .game-card-art,.composer-featured-draw.ace-tilt .composer-featured-icon,.option-button.ace-tilt>svg,.docx-attachment.ace-tilt .docx-file-icon{transform:translateZ(34px)}
.game-card-v6.ace-tilt .game-card-copy,.composer-featured-draw.ace-tilt>span:nth-child(2),.option-button.ace-tilt>span{transform:translateZ(18px)}

/* Aceternity Floating Dock: 40px -> 80px magnification from the official component's mapping. */
.ace-dock{align-items:flex-end!important;min-height:54px!important;padding:6px 8px!important;overflow:visible!important}
.ace-dock>button,.ace-dock>a{width:var(--ace-dock-size,40px)!important;height:var(--ace-dock-size,40px)!important;min-width:var(--ace-dock-size,40px)!important;min-height:var(--ace-dock-size,40px)!important;border-radius:999px!important;transition:width .18s cubic-bezier(.2,.8,.2,1),height .18s cubic-bezier(.2,.8,.2,1),transform .18s ease!important}
.ace-dock>button svg,.ace-dock>a svg{width:var(--ace-dock-icon,20px)!important;height:var(--ace-dock-icon,20px)!important;transition:width .18s ease,height .18s ease!important}
.conversation-header{overflow:visible!important}.conversation-tools{overflow:visible!important}

/* Moving Border: actual moving light point along a rect rather than a barely visible conic wash. */
.ace-moving-border{position:relative!important;overflow:hidden!important;isolation:isolate}.ace-moving-border::before{display:none!important}.ace-border-track{position:absolute!important;inset:0!important;z-index:0!important;pointer-events:none;border-radius:inherit;overflow:hidden}.ace-border-track svg{position:absolute;inset:0;width:100%!important;height:100%!important;overflow:visible}.ace-border-track rect{fill:none;stroke:color-mix(in srgb,var(--chat-accent,var(--accent)) 45%,transparent);stroke-width:1}.ace-border-track i{position:absolute;left:var(--ace-border-progress,0%);top:0;width:70px;height:70px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,color-mix(in srgb,var(--chat-accent,var(--accent)) 82%,white 12%) 0,transparent 64%);filter:blur(5px);opacity:.9;offset-path:inset(0 round 16px);offset-distance:var(--ace-border-progress,0%)}.ace-moving-border>*:not(.ace-border-track){position:relative;z-index:1}

/* Drawer: fixed shell + independent panels. No more trapped scroll. */
#messageForm .composer-tools-menu{display:grid!important;grid-template-rows:auto auto auto minmax(0,1fr);max-height:min(78dvh,680px)!important;overflow:hidden!important;transform-style:preserve-3d}
#messageForm .composer-tools-menu[hidden]{display:none!important}.composer-tab-panels{min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;padding-bottom:16px!important}.composer-drawer-notch{position:relative;overflow:visible}.composer-notch-indicator{box-shadow:0 8px 24px color-mix(in srgb,var(--chat-accent,var(--accent)) 14%,transparent)}
.composer-tool-grid>button{transform-style:preserve-3d;transition:transform .2s ease,border-color .2s ease,background .2s ease!important}.composer-tool-grid>button:hover{transform:translateY(-2px)!important;border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 32%,var(--line))!important;background:color-mix(in srgb,var(--chat-accent,var(--accent)) 7%,var(--panel2))!important}

/* Conversation options: bento-like hierarchy instead of uniform scattered controls. */
.conversation-options{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:start}.conversation-option-section:first-child{grid-row:span 2;min-height:260px}.conversation-option-section{padding:14px!important;background:linear-gradient(145deg,color-mix(in srgb,var(--panel2) 96%,#000),color-mix(in srgb,var(--panel) 94%,#000))!important}.conversation-option-section>header{padding-bottom:9px;border-bottom:1px solid var(--ace-hairline)}.conversation-option-section>header strong{font-size:12px!important}.conversation-option-section>header small{font-size:8.5px!important}.conversation-option-grid{grid-template-columns:1fr!important}.option-button{min-height:58px!important;padding:10px 11px!important}.option-button strong{font-size:10px!important}.option-button small{font-size:8px!important}.conversation-accent-row{padding:8px 0}.conversation-accent{width:34px;height:34px;min-height:34px}.conversation-select{background:color-mix(in srgb,var(--panel) 70%,transparent);padding:10px;border:1px solid var(--ace-hairline);border-radius:12px}

/* Modern identity editors for nickname / chat name. */
.identity-editor{display:grid;gap:16px}.identity-preview{position:relative;display:flex;align-items:center;gap:13px;padding:16px;border:1px solid var(--ace-hairline);border-radius:16px;background:linear-gradient(135deg,color-mix(in srgb,var(--chat-accent,var(--accent)) 10%,var(--panel2)),var(--panel2));overflow:hidden}.identity-avatar{width:50px;height:50px;min-width:50px;border-radius:15px;display:grid;place-items:center;background:color-mix(in srgb,var(--chat-accent,var(--accent)) 16%,#090a0c);border:1px solid color-mix(in srgb,var(--chat-accent,var(--accent)) 28%,var(--line));font-size:15px;font-weight:900;color:var(--chat-accent,var(--accent))}.identity-avatar svg{width:22px;height:22px}.identity-preview>div{display:grid;gap:2px;min-width:0}.identity-preview small{font-size:7px;letter-spacing:.17em;color:var(--chat-accent,var(--accent));font-weight:900}.identity-preview strong{font-size:18px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.identity-preview span{font-size:9px;color:var(--muted)}.modern-form{padding:2px}.modern-form label>span{font-size:9px;font-weight:800;color:var(--muted)}.input-shell{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:8px;min-height:48px;border:1px solid var(--line);border-radius:13px;padding:0 12px;background:var(--panel2);transition:border-color .2s ease,box-shadow .2s ease}.input-shell:focus-within{border-color:color-mix(in srgb,var(--chat-accent,var(--accent)) 50%,var(--line));box-shadow:0 0 0 3px color-mix(in srgb,var(--chat-accent,var(--accent)) 8%,transparent)}.input-shell svg{width:16px;color:var(--muted)}.input-shell input{border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important;height:46px!important}.identity-hint{display:flex;gap:8px;align-items:flex-start;padding:10px 11px;border-radius:11px;background:color-mix(in srgb,var(--panel2) 78%,transparent);color:var(--muted);font-size:9px;line-height:1.45}.identity-hint svg{width:14px;margin-top:1px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:3px}.modal-actions .primary,.modal-actions .secondary{margin:0!important}

/* DOCX: fixed, fast-feeling reader with a real scroll viewport. */
.docx-viewer{height:100%!important;min-height:0!important;display:grid!important;grid-template-rows:auto minmax(0,1fr)!important;overflow:hidden!important}.docx-viewer-head{position:sticky;top:0;z-index:2}.docx-page-scroller{min-height:0!important;height:100%!important;overflow:auto!important;padding:22px!important;scrollbar-gutter:stable;background:linear-gradient(#767b82,#85898e)}.docx-loading,.docx-error{min-height:0!important;height:100%;overflow:auto}.docx-page{width:min(820px,calc(100% - 12px))!important;min-height:100%;padding:56px 64px!important}

/* Paint uses its own scroll containers rather than depending on modal/body scroll. */
.paint-app{height:100%!important;min-height:0!important}.paint-sidebar{min-height:0!important;overflow:auto!important}.paint-workspace{min-height:0!important}.paint-stage{min-height:0!important;overflow:auto!important}

@media(max-width:760px){
  .conversation-options{grid-template-columns:1fr}.conversation-option-section:first-child{grid-row:auto;min-height:0}
  #modal.ace-modal.wide{height:min(92dvh,920px);width:calc(100vw - 12px)}
  #modal.ace-modal .modal-body{padding:12px!important}
  .ace-dock>button,.ace-dock>a{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important}.ace-dock>button svg,.ace-dock>a svg{width:18px!important;height:18px!important}
  .docx-page-scroller{padding:10px!important}.docx-page{padding:34px 24px!important;width:100%!important}
}
@media(prefers-reduced-motion:reduce){.ace-tilt{transform:none!important}.ace-border-track{display:none!important}}

/* ===== v8.9.2 Arnie + identity color + iOS-native polish ===== */
/* Identity color is a profile property, not a chat-theme approximation. */
.message-author strong[style*="--name-color"],
.member-link strong[style*="--name-color"],
#roomIdentity strong[style*="--name-color"]{color:var(--name-color)!important}

.name-color-setting{align-items:flex-start!important}
.name-color-control{display:grid;gap:9px;justify-items:end;min-width:min(340px,46vw)}
.name-color-preview{width:min(320px,100%);display:grid;grid-template-columns:38px minmax(0,1fr);grid-template-rows:auto auto;column-gap:9px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--panel2) 94%,#000 6%)}
.name-color-preview>span{grid-row:1/3}.name-color-preview .avatar{width:36px;height:36px;min-width:36px;border-radius:11px}.name-color-preview>strong{color:var(--preview-name-color)!important;font-size:12px;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.name-color-preview>small{font-size:8px;color:var(--muted)}
.name-color-palette{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.name-color-palette input[type="color"]{width:34px!important;height:34px!important;min-width:34px!important;padding:3px!important;border-radius:10px!important;cursor:pointer}
.name-color-palette button{width:30px;height:30px;min-width:30px;min-height:30px;padding:0;border-radius:9px;border:1px solid color-mix(in srgb,var(--swatch) 65%,var(--line));background:var(--swatch);box-shadow:0 0 0 0 transparent;transition:transform .18s var(--ace-spring),box-shadow .18s ease}
.name-color-palette button[aria-pressed="true"]{transform:scale(.9);box-shadow:0 0 0 3px var(--panel),0 0 0 5px var(--swatch)}

/* Arnie intentionally uses one simple mark everywhere: A + small spark. */
.arnie-avatar{position:relative!important;display:grid!important;place-items:center!important;background:#121418!important;border:1px solid #ffffff1a!important;color:#f4f6fb!important;overflow:visible!important;font-weight:800!important}
.arnie-avatar>span{font-size:.78em;line-height:1}.arnie-avatar>i{position:absolute;right:-3px;top:-4px;width:12px;height:12px;border-radius:999px;display:grid;place-items:center;background:#eef2ff;color:#151821;font-style:normal;font-size:7px;box-shadow:0 2px 8px #0007}
.arnie-mini-mark{position:relative;width:30px;height:30px;min-width:30px;border-radius:10px;background:#121418;border:1px solid #ffffff18;display:grid;place-items:center;color:#f6f7fb}
.arnie-mini-mark b{font-size:11px}.arnie-mini-mark i{position:absolute;right:3px;top:2px;font-size:7px;font-style:normal;color:#b9c6ff}
.arnie-badge{display:inline-grid!important;place-items:center!important;height:16px!important;min-height:16px!important;padding:0 5px!important;border:1px solid #aab8ff38!important;border-radius:999px!important;background:#aab8ff12!important;color:#c4ceff!important;font-size:7px!important;font-weight:800!important;letter-spacing:.08em!important}
.arnie-message .message-content{position:relative}
.arnie-message .message-text{border-left:2px solid #9fb0ff;padding-left:9px}
.arnie-mention{display:inline-block;padding:0 4px;border-radius:5px;background:#9fb0ff18;color:#bdc9ff;font-weight:750}
.arnie-composer-hint{width:100%;display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:9px;align-items:center;margin:0 0 6px;padding:7px 9px;border:1px solid color-mix(in srgb,#9fb0ff 25%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--panel2) 94%,#9fb0ff 6%);color:var(--text);text-align:left;animation:arnie-hint-in .2s var(--ace-spring) both}
.arnie-composer-hint[hidden]{display:none!important}.arnie-composer-hint>span:nth-child(2){display:grid;gap:1px}.arnie-composer-hint strong{font-size:10px}.arnie-composer-hint small{font-size:8px;color:var(--muted)}.arnie-composer-hint kbd{border:1px solid var(--line);border-bottom-width:2px;border-radius:6px;padding:3px 6px;background:var(--panel);font:700 8px/1 inherit;color:var(--muted)}
@keyframes arnie-hint-in{from{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:none}}
#typingIndicator.arnie-typing{height:24px!important;min-height:24px!important;display:flex!important;align-items:center!important;gap:7px!important;padding:1px 14px!important;line-height:1!important;color:var(--muted)!important}
#typingIndicator.arnie-typing .arnie-avatar{width:20px!important;height:20px!important;min-width:20px!important;font-size:9px!important}
#typingIndicator.arnie-typing>span{display:flex;align-items:center;gap:5px;font-size:9px}
.arnie-dots{display:inline-flex;gap:2px}.arnie-dots i{width:3px;height:3px;border-radius:50%;background:currentColor;animation:arnie-dot .8s ease-in-out infinite}.arnie-dots i:nth-child(2){animation-delay:.12s}.arnie-dots i:nth-child(3){animation-delay:.24s}
@keyframes arnie-dot{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}
.composer-tool-grid [data-duo-tool="arnie"]>svg{color:#c0cbff!important}.composer-tool-grid [data-duo-tool="arnie"]{background:linear-gradient(145deg,color-mix(in srgb,var(--panel2) 95%,#9fb0ff 5%),var(--panel2))!important}

/* Keep feature marks/icons consistent: one Lucide-scale silhouette, no decorative pseudo-logos. */
.composer-tool-grid>button>svg,.option-button>svg,.settings-group>header>span>svg{width:18px!important;height:18px!important;stroke-width:1.8!important;flex:none}
.composer-tool-grid>button>svg{padding:7px;box-sizing:content-box;border-radius:10px;background:color-mix(in srgb,var(--panel) 82%,transparent);border:1px solid var(--line)}

/* iOS browser/PWA: bottom sheets, safe areas and native-feeling hit/press behavior. */
html[data-platform="ios"]{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display",Inter,system-ui,sans-serif;-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility}
html[data-platform="ios"] body{-webkit-tap-highlight-color:transparent}
html[data-platform="ios"] button,html[data-platform="ios"] a,html[data-platform="ios"] input,html[data-platform="ios"] textarea,html[data-platform="ios"] select{-webkit-tap-highlight-color:transparent}
html[data-platform="ios"] button:active,html[data-platform="ios"] .icon-btn:active,html[data-platform="ios"] .member-link:active,html[data-platform="ios"] .room-link:active{transform:scale(.965);transition-duration:.08s!important}
html[data-platform="ios"] input:not([type="checkbox"]):not([type="range"]),html[data-platform="ios"] textarea,html[data-platform="ios"] select{font-size:16px!important}
html[data-platform="ios"] .chat-shell,html[data-platform="ios"] .conversation{background:var(--bg)}
html[data-platform="ios"] .conversation-header{padding-left:max(7px,env(safe-area-inset-left))!important;padding-right:max(7px,env(safe-area-inset-right))!important;background:color-mix(in srgb,var(--panel) 97%,transparent)!important;backdrop-filter:saturate(1.3) blur(16px);-webkit-backdrop-filter:saturate(1.3) blur(16px)}
html[data-platform="ios"] .message-list{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;scrollbar-width:none}
html[data-platform="ios"] .message-list::-webkit-scrollbar{display:none}
html[data-platform="ios"] #messageForm{border-radius:18px!important;background:color-mix(in srgb,var(--panel2) 96%,#fff 4%)!important;box-shadow:0 1px 0 #ffffff08 inset,0 5px 24px #0002!important}
html[data-platform="ios"] #messageForm .composer-row{min-height:46px!important;padding:5px 6px!important}
html[data-platform="ios"] #messageForm #messageInput{min-height:36px!important;border:0!important;background:transparent!important}
html[data-platform="ios"] #messageForm .composer-plus,html[data-platform="ios"] #messageForm .composer-primary-tools .icon-btn,html[data-platform="ios"] #messageForm .send-button{width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;border-radius:999px!important}
html[data-platform="ios"] .composer-wrap{padding-left:max(7px,env(safe-area-inset-left))!important;padding-right:max(7px,env(safe-area-inset-right))!important;padding-bottom:max(7px,env(safe-area-inset-bottom))!important;background:linear-gradient(180deg,transparent 0,color-mix(in srgb,var(--panel) 97%,transparent) 22%)!important}

html[data-platform="ios"] #messageForm .composer-tools-menu{
  position:fixed!important;left:max(8px,env(safe-area-inset-left))!important;right:max(8px,env(safe-area-inset-right))!important;bottom:max(8px,env(safe-area-inset-bottom))!important;top:auto!important;width:auto!important;max-width:none!important;height:min(72dvh,650px)!important;max-height:min(72dvh,650px)!important;margin:0!important;padding:10px!important;border-radius:24px!important;border:1px solid #ffffff12!important;background:color-mix(in srgb,var(--panel) 98%,#000 2%)!important;box-shadow:0 -20px 70px #0008,0 0 0 .5px #ffffff0c inset!important;overflow:hidden!important;z-index:1000!important;animation:ios-sheet-in .34s cubic-bezier(.2,.86,.26,1) both!important
}
html[data-platform="ios"] #messageForm .composer-drawer-head{position:relative;padding-top:10px!important}
html[data-platform="ios"] #messageForm .composer-drawer-head::before{content:"";position:absolute;left:50%;top:-2px;transform:translateX(-50%);width:36px;height:5px;border-radius:99px;background:#ffffff30}
html[data-platform="ios"] #messageForm .composer-tab-panels{min-height:0!important;overflow-y:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;padding-bottom:max(18px,env(safe-area-inset-bottom))!important}
html[data-platform="ios"] #messageForm .composer-tool-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
html[data-platform="ios"] #messageForm .composer-tool-grid>button{min-height:68px!important;border-radius:16px!important;padding:10px!important}
html[data-platform="ios"] #messageForm .composer-featured-draw{border-radius:18px!important;min-height:86px!important}
@keyframes ios-sheet-in{from{opacity:0;transform:translateY(38px) scale(.975)}to{opacity:1;transform:none}}

html[data-platform="ios"] #modal.ace-modal[open]{position:fixed!important;inset:auto max(6px,env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))!important;margin:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:min(88dvh,860px)!important;border-radius:24px!important 24px!important 20px!important 20px!important;animation:ios-modal-sheet-in .34s cubic-bezier(.2,.86,.26,1) both!important}
html[data-platform="ios"] #modal.ace-modal.wide[open]{height:min(88dvh,860px)!important}
html[data-platform="ios"] #modal.ace-modal .modal-head{padding:15px 16px 11px!important;min-height:54px!important}
html[data-platform="ios"] #modal.ace-modal .modal-head::before{content:"";position:absolute;left:50%;top:6px;transform:translateX(-50%);width:36px;height:5px;border-radius:99px;background:#ffffff2a}
html[data-platform="ios"] #modal.ace-modal .modal-body{overflow-y:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:14px 14px max(18px,env(safe-area-inset-bottom))!important}
html[data-platform="ios"] #modal.ace-modal::backdrop{background:#0009!important;backdrop-filter:blur(5px)!important;-webkit-backdrop-filter:blur(5px)!important}
@keyframes ios-modal-sheet-in{from{opacity:0;transform:translateY(40px) scale(.985)}to{opacity:1;transform:none}}

html[data-platform="ios"] .settings-tabs{scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}
html[data-platform="ios"] .settings-tabs::-webkit-scrollbar{display:none}
html[data-platform="ios"] .settings-tabs button{scroll-snap-align:start;min-height:44px!important;border-radius:12px!important}
html[data-platform="ios"] .settings-group{border-radius:18px!important}
html[data-platform="ios"] .settings-group .setting-row{min-height:58px!important}
html[data-platform="ios"] .name-color-control{justify-items:stretch;min-width:0;width:100%}
html[data-platform="ios"] .name-color-preview{width:100%}

@media(max-width:700px){
  .name-color-setting{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}.name-color-control{min-width:0;width:100%;justify-items:stretch}.name-color-preview{width:100%}.name-color-palette{justify-content:flex-start}
  .arnie-composer-hint kbd{display:none}.arnie-composer-hint{grid-template-columns:30px minmax(0,1fr);margin-bottom:4px}
  #typingIndicator.arnie-typing{height:22px!important;min-height:22px!important;padding:0 8px!important}
}
@media(prefers-reduced-motion:reduce){.arnie-composer-hint,.arnie-dots i,html[data-platform="ios"] #messageForm .composer-tools-menu,html[data-platform="ios"] #modal.ace-modal[open]{animation:none!important}}
.chat-self strong[style*="--name-color"]{color:var(--name-color)!important;font:inherit;font-weight:700}
html[data-platform="ios"] button,html[data-platform="ios"] [role="button"]{touch-action:manipulation}
