/* Campus Hub — design system and every screen. School colours come from --ch-p and --ch-a. */

:root {
	--ch-p: #123a7a;
	--ch-a: #f2b521;
	--ch-p-d: color-mix(in srgb, var(--ch-p) 72%, #000);
	--ch-p-l: color-mix(in srgb, var(--ch-p) 82%, #fff);
	--ch-p-50: color-mix(in srgb, var(--ch-p) 6%, #fff);
	--ch-p-100: color-mix(in srgb, var(--ch-p) 12%, #fff);
	--ch-p-200: color-mix(in srgb, var(--ch-p) 22%, #fff);
	--ch-a-100: color-mix(in srgb, var(--ch-a) 18%, #fff);
	--ch-a-d: color-mix(in srgb, var(--ch-a) 70%, #000);
	--ink: #0d1b2e;
	--text: #273449;
	--muted: #667489;
	--line: #e4e9f1;
	--line-2: #eef2f7;
	--bg: #f4f6fa;
	--card: #fff;
	--ok: #0f9d6b;
	--ok-bg: #e3f7ee;
	--warn: #b7791f;
	--warn-bg: #fff5dc;
	--bad: #d93a3a;
	--bad-bg: #fdecec;
	--r: 16px;
	--r-sm: 10px;
	--sh-1: 0 1px 2px rgba(13, 27, 46, .05), 0 1px 1px rgba(13, 27, 46, .03);
	--sh-2: 0 6px 24px -8px rgba(13, 27, 46, .14), 0 2px 6px rgba(13, 27, 46, .05);
	--sh-3: 0 24px 60px -18px rgba(13, 27, 46, .32);
	--side: 264px;
	--top: 64px;
	--font: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

/* ---------- Base ---------- */
body.ch { margin: 0; background: var(--bg); color: var(--text); font: 15px/1.55 var(--font); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.ch *, .ch *::before, .ch *::after { box-sizing: border-box; }
.ch a { color: var(--ch-p); text-decoration: none; }
.ch a:hover { color: var(--ch-p-d); }
.ch h1, .ch h2, .ch h3, .ch h4 { color: var(--ink); line-height: 1.2; margin: 0; font-weight: 800; letter-spacing: -.02em; }
.ch p { margin: 0 0 .8em; }
.ch img { max-width: 100%; display: block; }
.ch button { font: inherit; cursor: pointer; }
.ch [hidden] { display: none !important; }
.ch :focus-visible { outline: 3px solid color-mix(in srgb, var(--ch-p) 40%, transparent); outline-offset: 2px; border-radius: 6px; }
.ch-i { width: 20px; height: 20px; flex: none; }
.ch-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }
.ch-muted { color: var(--muted); }
.ch-mb { margin-bottom: 14px; }
.ch-mt { margin-top: 18px !important; }
.ch-mt-sm { margin-top: 8px; }
.ch-pad { padding: 24px; }
.ch-pad-sm { padding: 6px 4px; margin: 0; }
.ch-grow { flex: 1; min-width: 0; }
.ch-eyebrow { display: inline-block; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--ch-p); margin-bottom: 10px; }
.ch-link { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: var(--ch-p); }
.ch-link .ch-i { width: 16px; height: 16px; transition: transform .2s; }
a:hover .ch-link .ch-i { transform: translateX(3px); }
.ch-link-muted { display: inline-flex; align-items: center; gap: 6px; color: var(--muted) !important; font-weight: 600; font-size: 14px; background: none; border: 0; padding: 0; }
.ch-link-muted:hover { color: var(--ink) !important; }
.ch-link-muted .ch-i { width: 16px; height: 16px; }

/* ---------- Buttons ---------- */
.ch-btn { --bg: var(--ch-p); --fg: #fff; display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 42px; padding: 0 18px; border-radius: 12px; border: 1px solid transparent; background: var(--bg); color: var(--fg) !important; font-weight: 700; font-size: 14.5px; white-space: nowrap; transition: transform .12s, box-shadow .2s, background .2s, filter .2s; text-decoration: none; }
.ch-btn .ch-i { width: 18px; height: 18px; }
.ch-btn:hover { filter: brightness(1.08); box-shadow: 0 6px 16px -6px color-mix(in srgb, var(--bg) 70%, transparent); }
.ch-btn:active { transform: translateY(1px); }
.ch-btn[disabled], .ch-btn.is-busy { opacity: .6; pointer-events: none; }
.ch-btn.is-busy::after { content: ""; width: 14px; height: 14px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: ch-spin .7s linear infinite; }
.ch-btn-p { --bg: var(--ch-p); }
.ch-btn-a { --bg: var(--ch-a); --fg: #1b1300; }
.ch-btn-soft { --bg: var(--ch-p-100); --fg: var(--ch-p); }
.ch-btn-soft:hover { box-shadow: none; filter: brightness(.97); }
.ch-btn-ghost { --bg: transparent; --fg: var(--text); border-color: var(--line); }
.ch-btn-ghost:hover { background: var(--line-2); box-shadow: none; filter: none; }
.ch-btn-glass { --bg: rgba(255, 255, 255, .12); --fg: #fff; border-color: rgba(255, 255, 255, .28); backdrop-filter: blur(8px); }
.ch-btn-danger { --bg: var(--bad); }
.ch-btn-sm { height: 34px; padding: 0 12px; font-size: 13.5px; border-radius: 10px; }
.ch-btn-lg { height: 50px; padding: 0 24px; font-size: 15.5px; border-radius: 14px; }
.ch-btn-block { width: 100%; }
.ch-btn-icon { width: 42px; padding: 0; }
.ch-icon-btn { position: relative; display: inline-grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; border: 0; background: transparent; color: var(--text); transition: background .15s, color .15s; flex: none; }
.ch-icon-btn:hover { background: var(--line-2); color: var(--ink); }
.ch-icon-btn.ch-sm { width: 32px; height: 32px; border-radius: 10px; }
.ch-icon-btn-p { background: var(--ch-p); color: #fff !important; }
.ch-icon-btn-p:hover { background: var(--ch-p-d); color: #fff; }

/* ---------- Tags, alerts, counters ---------- */
.ch-tag { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 99px; background: var(--line-2); color: var(--muted); font-size: 12px; font-weight: 700; white-space: nowrap; }
.ch-tag .ch-i { width: 13px; height: 13px; }
.ch-tag.is-p { background: var(--ch-p-100); color: var(--ch-p); }
.ch-tag.is-a { background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-tag.is-ok { background: var(--ok-bg); color: var(--ok); }
.ch-tag.is-warn { background: var(--warn-bg); color: var(--warn); }
.ch-tag.is-danger { background: var(--bad-bg); color: var(--bad); }
.ch-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.ch-alert { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-radius: 12px; background: var(--ch-p-50); border: 1px solid var(--ch-p-100); color: var(--ink); font-size: 14px; margin: 0 0 16px; }
.ch-alert .ch-i { color: var(--ch-p); margin-top: 1px; }
.ch-alert.is-ok { background: var(--ok-bg); border-color: color-mix(in srgb, var(--ok) 20%, #fff); }
.ch-alert.is-ok .ch-i { color: var(--ok); }
.ch-alert.is-warn { background: var(--warn-bg); border-color: color-mix(in srgb, var(--warn) 20%, #fff); }
.ch-alert.is-warn .ch-i { color: var(--warn); }
.ch-alert.is-error { background: var(--bad-bg); border-color: color-mix(in srgb, var(--bad) 20%, #fff); }
.ch-alert.is-error .ch-i { color: var(--bad); }
.ch-count { margin-left: auto; min-width: 22px; height: 22px; padding: 0 7px; border-radius: 99px; background: var(--ch-a); color: #1b1300; font: 800 11.5px/22px var(--font); text-align: center; font-style: normal; }
.ch-dot { position: absolute; top: 4px; right: 3px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 99px; background: var(--bad); color: #fff; font: 800 10.5px/18px var(--font); font-style: normal; text-align: center; border: 2px solid #fff; }
.ch-live-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #22c55e; box-shadow: 0 0 0 0 rgba(34, 197, 94, .6); animation: ch-pulse 2s infinite; }

/* ---------- Forms ---------- */
.ch-form { display: grid; gap: 16px; }
.ch-field { display: grid; gap: 6px; margin: 0; border: 0; padding: 0; min-width: 0; }
.ch-field > span:first-child, .ch-field legend { font-size: 13.5px; font-weight: 700; color: var(--ink); padding: 0; }
.ch input[type=text], .ch input[type=email], .ch input[type=password], .ch input[type=search], .ch input[type=url], .ch input[type=tel], .ch input[type=number], .ch input[type=date], .ch input[type=datetime-local], .ch select, .ch textarea {
	width: 100%; min-height: 46px; padding: 11px 14px; border: 1.5px solid var(--line); border-radius: 12px; background: #fff; color: var(--ink); font: 15px/1.4 var(--font); transition: border-color .15s, box-shadow .15s; appearance: none; -webkit-appearance: none; }
.ch select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23667489' stroke-width='2'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 36px; }
.ch textarea { resize: vertical; min-height: 46px; }
.ch input:focus, .ch select:focus, .ch textarea:focus { outline: 0; border-color: var(--ch-p); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ch-p) 12%, transparent); }
.ch input:disabled { background: var(--line-2); color: var(--muted); }
.ch input[type=file] { font-size: 13.5px; color: var(--muted); }
.ch input[type=file]::file-selector-button { border: 0; background: var(--ch-p-100); color: var(--ch-p); padding: 9px 14px; border-radius: 10px; font: 700 13px var(--font); margin-right: 10px; cursor: pointer; }
.ch-input-icon { position: relative; display: block; }
.ch-input-icon > .ch-i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--muted); pointer-events: none; }
.ch-input-icon input { padding-left: 42px !important; }
.ch-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); border: 0; background: none; color: var(--muted); width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; }
.ch-eye:hover { background: var(--line-2); }
.ch-strength { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; margin-top: 2px; }
.ch-strength i { height: 4px; border-radius: 4px; background: var(--line); transition: background .25s; }
.ch-strength[data-score="1"] i:nth-child(-n+1) { background: var(--bad); }
.ch-strength[data-score="2"] i:nth-child(-n+2) { background: #f59e0b; }
.ch-strength[data-score="3"] i:nth-child(-n+3) { background: #84cc16; }
.ch-strength[data-score="4"] i { background: var(--ok); }
.ch-hint { font-size: 12.5px; color: var(--muted); display: inline-flex; align-items: center; gap: 5px; }
.ch-hint .ch-i { width: 15px; height: 15px; }
.ch-err { color: var(--bad); font-size: 13px; font-weight: 600; }
.has-err input, .has-err select { border-color: var(--bad); }
.ch-check { display: inline-flex; align-items: flex-start; gap: 10px; font-size: 14px; cursor: pointer; }
.ch-check input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--ch-p); flex: none; }
.ch-switch { display: flex; gap: 14px; align-items: flex-start; padding: 14px; border: 1.5px solid var(--line); border-radius: 14px; cursor: pointer; }
.ch-switch input { position: absolute; opacity: 0; }
.ch-switch i { position: relative; flex: none; width: 42px; height: 24px; border-radius: 99px; background: var(--line); transition: background .2s; }
.ch-switch i::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: var(--sh-1); transition: transform .2s; }
.ch-switch input:checked + i { background: var(--ch-p); }
.ch-switch input:checked + i::after { transform: translateX(18px); }
.ch-switch span { display: grid; gap: 2px; }
.ch-switch b { color: var(--ink); font-size: 14px; }
.ch-switch small { color: var(--muted); font-size: 12.5px; }
.ch-seg { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 6px; padding: 5px; background: var(--line-2); border-radius: 14px; }
.ch-seg label { cursor: pointer; }
.ch-seg input { position: absolute; opacity: 0; }
.ch-seg span { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 6px; border-radius: 10px; font-weight: 700; font-size: 13px; color: var(--muted); transition: all .15s; }
.ch-seg input:checked + span { background: #fff; color: var(--ch-p); box-shadow: var(--sh-1); }
.ch-seg input:focus-visible + span { outline: 3px solid color-mix(in srgb, var(--ch-p) 40%, transparent); }
.ch-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ch-form-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.ch-row-between { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 14px; }
.ch-inline-form { display: flex; gap: 8px; }
.ch-inline-form input, .ch-inline-form select { flex: 1; }
.ch-fold-box { border: 1.5px solid var(--line); border-radius: 14px; padding: 4px 16px; }
.ch-fold-box summary { display: flex; align-items: center; gap: 8px; padding: 10px 0; font-weight: 700; cursor: pointer; color: var(--ink); list-style: none; }
.ch-fold-box[open] summary { margin-bottom: 8px; }
.ch-fold-box .ch-grid-2 { padding-bottom: 14px; }

/* ---------- Avatars and badges ---------- */
.ch-ava { --s: 40px; --h: 210; position: relative; display: inline-grid; place-items: center; width: var(--s); height: var(--s); flex: none; border-radius: 50%; overflow: hidden; background: linear-gradient(135deg, hsl(var(--h) 70% 58%), hsl(calc(var(--h) + 40) 70% 46%)); color: #fff; font-size: calc(var(--s) * .38); font-weight: 800; letter-spacing: -.02em; }
.ch-ava img { width: 100%; height: 100%; object-fit: cover; }
.ch-ava b { font-weight: 800; }
.ch-ava-wrap { position: relative; display: inline-flex; flex: none; }
.ch-online { position: absolute; right: 1px; bottom: 1px; width: 12px; height: 12px; border-radius: 50%; background: #22c55e; border: 2.5px solid #fff; }
.ch-badge { --s: 44px; --c: var(--ch-p); display: inline-grid; place-items: center; width: var(--s); height: var(--s); flex: none; border-radius: calc(var(--s) * .3); background: linear-gradient(140deg, var(--c), color-mix(in srgb, var(--c) 65%, #000)); color: #fff; font-weight: 800; font-size: calc(var(--s) * .34); letter-spacing: -.02em; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12); }
.ch-ava-stack { display: flex; flex-wrap: wrap; gap: 6px; }

/* ---------- Cards, empty states, prose ---------- */
.ch-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--sh-1); }
.ch-empty { text-align: center; padding: 48px 20px; color: var(--muted); }
.ch-empty-i { display: inline-grid; place-items: center; width: 64px; height: 64px; border-radius: 20px; background: var(--ch-p-100); color: var(--ch-p); margin-bottom: 14px; }
.ch-empty-i .ch-i { width: 28px; height: 28px; }
.ch-empty h3 { font-size: 17px; margin-bottom: 4px; }
.ch-empty p { max-width: 360px; margin: 0 auto 16px; font-size: 14px; }
.ch-prose { color: var(--text); font-size: 15px; line-height: 1.7; overflow-wrap: anywhere; }
.ch-prose p:last-child { margin-bottom: 0; }
.ch-prose h2 { font-size: 20px; margin: 0 0 12px; }
.ch-prose h3 { font-size: 16px; margin: 0 0 10px; }
.ch-prose ol, .ch-prose ul { padding-left: 20px; }
.ch-prose li { margin-bottom: 8px; }
.ch-prose img { border-radius: 12px; height: auto; }
.ch-clamp { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ch-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ch-chip { display: inline-flex; padding: 6px 12px; border-radius: 99px; background: var(--ch-p-50); border: 1px solid var(--ch-p-100); color: var(--ch-p); font-size: 13px; font-weight: 600; }
.ch-skel { height: 52px; margin: 8px 12px; border-radius: 12px; background: linear-gradient(90deg, var(--line-2), #f9fafc, var(--line-2)); background-size: 200% 100%; animation: ch-shimmer 1.2s infinite; }

/* ---------- Logo ---------- */
.ch-logo { display: inline-flex; align-items: center; gap: 10px; color: var(--ink) !important; }
.ch-logo img { height: 40px; width: auto; }
.ch-logo-mark { display: grid; place-items: center; width: 40px; height: 40px; color: var(--ch-p); }
.ch-logo-mark svg { width: 40px; height: 40px; }
.ch-logo-text { display: grid; line-height: 1.1; }
.ch-logo-text b { font-size: 16px; font-weight: 800; letter-spacing: -.02em; }
.ch-logo-text small { font-size: 11.5px; font-weight: 700; color: var(--muted); letter-spacing: .06em; text-transform: uppercase; }
.ch-logo.is-light { color: #fff !important; }
.ch-logo.is-light .ch-logo-mark { color: #fff; }
.ch-logo.is-light .ch-logo-mark svg path:first-child { fill: rgba(255, 255, 255, .14); }
.ch-logo.is-light small { color: rgba(255, 255, 255, .7); }

/* ---------- Dropdowns, modals, toasts ---------- */
.ch-drop { position: relative; }
.ch-drop-menu { position: absolute; right: 0; top: calc(100% + 8px); z-index: 60; min-width: 220px; padding: 6px; background: #fff; border: 1px solid var(--line); border-radius: 14px; box-shadow: var(--sh-3); opacity: 0; visibility: hidden; transform: translateY(-4px) scale(.98); transform-origin: top right; transition: all .15s; }
.ch-drop.is-open .ch-drop-menu { opacity: 1; visibility: visible; transform: none; }
.ch-drop-menu > a, .ch-drop-menu > button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; border: 0; background: none; border-radius: 10px; color: var(--text) !important; font-size: 14px; font-weight: 600; text-align: left; }
.ch-drop-menu > a:hover, .ch-drop-menu > button:hover { background: var(--line-2); }
.ch-drop-menu .ch-i { width: 18px; height: 18px; color: var(--muted); }
.ch-drop-menu .is-danger, .ch-drop-menu .is-danger .ch-i { color: var(--bad) !important; }
.ch-drop-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 10px 12px 8px; border-bottom: 1px solid var(--line-2); margin-bottom: 4px; }
.ch-drop-head b { color: var(--ink); }
.ch-drop-head small { color: var(--muted); }
.ch-drop-head a { font-size: 13px; font-weight: 700; }
.ch-drop-label { display: block; padding: 8px 12px 4px; font-size: 11.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); font-weight: 700; }
.ch-modal { width: min(560px, calc(100vw - 24px)); max-height: calc(100dvh - 32px); padding: 0; border: 0; border-radius: 22px; box-shadow: var(--sh-3); background: #fff; color: var(--text); }
.ch-modal::backdrop { background: rgba(10, 20, 40, .48); backdrop-filter: blur(3px); }
.ch-modal[open] { animation: ch-pop .2s ease-out; }
.ch-modal-card { display: grid; gap: 16px; padding: 24px; }
.ch-modal-head { display: flex; gap: 14px; align-items: flex-start; }
.ch-modal-head h3 { font-size: 18px; margin-bottom: 4px; }
.ch-modal-head p { color: var(--muted); font-size: 13.5px; margin: 0; }
.ch-modal-icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: var(--ch-p-100); color: var(--ch-p); flex: none; }
.ch-modal-icon.is-danger { background: var(--bad-bg); color: var(--bad); }
.ch-modal-foot { display: flex; justify-content: flex-end; gap: 10px; padding-top: 4px; }
.ch-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ch-choice { cursor: pointer; }
.ch-choice input { position: absolute; opacity: 0; }
.ch-choice span { display: block; padding: 10px 12px; border: 1.5px solid var(--line); border-radius: 12px; font-size: 13.5px; font-weight: 600; transition: all .15s; }
.ch-choice input:checked + span { border-color: var(--bad); background: var(--bad-bg); color: var(--bad); }
.ch-toasts { position: fixed; left: 50%; bottom: 88px; transform: translateX(-50%); z-index: 200; display: grid; gap: 8px; pointer-events: none; width: max-content; max-width: calc(100vw - 32px); }
.ch-toast { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: 14px; background: var(--ink); color: #fff; font-size: 14px; font-weight: 600; box-shadow: var(--sh-3); animation: ch-up .25s ease-out; }
.ch-toast.is-error { background: var(--bad); }
.ch-toast .ch-i { width: 18px; height: 18px; }
.ch-lightbox { position: fixed; inset: 0; z-index: 300; display: grid; place-items: center; background: rgba(5, 10, 20, .9); padding: 20px; cursor: zoom-out; animation: ch-fade .2s; }
.ch-lightbox img { max-width: 100%; max-height: 100%; border-radius: 10px; }

/* =========================================================
   AUTH
   ========================================================= */
.ch-auth { display: grid; grid-template-columns: minmax(380px, 46%) 1fr; min-height: 100dvh; }
.ch-auth-brand { position: relative; overflow: hidden; color: #fff; background: radial-gradient(1200px 600px at 110% -10%, color-mix(in srgb, var(--ch-a) 40%, transparent), transparent 55%), radial-gradient(800px 500px at -20% 110%, color-mix(in srgb, var(--ch-p-l) 60%, transparent), transparent 60%), linear-gradient(160deg, var(--ch-p), var(--ch-p-d)); }
.ch-auth-brand::before { content: ""; position: absolute; inset: 0; background: var(--hero, none) center/cover; opacity: .22; mix-blend-mode: luminosity; }
.ch-auth-brand::after { content: ""; position: absolute; inset: 0; background-image: radial-gradient(rgba(255, 255, 255, .12) 1px, transparent 1px); background-size: 22px 22px; mask-image: linear-gradient(180deg, transparent, #000 40%, transparent); }
.ch-auth-brand-in { position: relative; z-index: 1; height: 100%; display: flex; flex-direction: column; justify-content: space-between; gap: 40px; padding: 44px clamp(28px, 5vw, 64px); }
.ch-auth-pitch h2 { color: #fff; font-size: clamp(32px, 3.4vw, 46px); line-height: 1.08; margin-bottom: 16px; }
.ch-auth-pitch p { color: rgba(255, 255, 255, .78); font-size: 17px; max-width: 460px; }
.ch-auth-pitch .ch-eyebrow { color: var(--ch-a); }
.ch-auth-points { list-style: none; padding: 0; margin: 28px 0 0; display: grid; gap: 14px; }
.ch-auth-points li { display: flex; align-items: center; gap: 14px; font-weight: 600; color: rgba(255, 255, 255, .92); }
.ch-auth-points .ch-i { width: 40px; height: 40px; padding: 10px; border-radius: 12px; background: rgba(255, 255, 255, .1); color: var(--ch-a); border: 1px solid rgba(255, 255, 255, .14); }
.ch-auth-foot { display: flex; align-items: center; gap: 14px; color: rgba(255, 255, 255, .8); font-size: 14px; }
.ch-auth-foot p { margin: 0; }
.ch-auth-foot b { color: #fff; }
.ch-auth-faces { display: flex; }
.ch-auth-faces .ch-ava { border: 2.5px solid var(--ch-p); margin-left: -10px; }
.ch-auth-faces .ch-ava:first-child { margin-left: 0; }
.ch-auth-main { display: flex; flex-direction: column; align-items: center; padding: 28px 24px; background: #fff; }
.ch-auth-top { width: 100%; max-width: 480px; display: flex; justify-content: space-between; align-items: center; }
.ch-auth-mobile-logo { display: none; }
.ch-auth-card { width: 100%; max-width: 480px; margin: auto; padding: 32px 0; }
.ch-r-register .ch-auth-card { max-width: 540px; }
.ch-auth-head { margin-bottom: 24px; }
.ch-auth-head h1 { font-size: 30px; margin-bottom: 8px; }
.ch-auth-head p { color: var(--muted); margin: 0; }
.ch-auth-ico { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 16px; background: var(--ch-p-100); color: var(--ch-p); margin-bottom: 16px; }
.ch-auth-switch { text-align: center; margin-top: 22px; color: var(--muted); font-size: 14.5px; }
.ch-auth-switch a { font-weight: 700; display: inline-flex; align-items: center; gap: 4px; }
.ch-auth-legal { font-size: 12.5px; color: var(--muted); text-align: center; margin: 0; }
.ch-auth-legal a { color: var(--muted); }
.ch-resend { margin-top: 18px; padding: 14px; border-radius: 14px; background: var(--line-2); font-size: 14px; }
.ch-resend summary { font-weight: 700; cursor: pointer; margin-bottom: 10px; }

/* =========================================================
   PUBLIC
   ========================================================= */
.ch-wrap { width: min(1180px, 100% - 40px); margin-inline: auto; }
.ch-wrap-narrow { width: min(760px, 100% - 40px); margin-inline: auto; }
.ch-pub-nav { position: sticky; top: 0; z-index: 50; background: rgba(255, 255, 255, .86); backdrop-filter: saturate(1.6) blur(14px); border-bottom: 1px solid transparent; transition: border-color .2s, box-shadow .2s; }
.ch-pub-nav.is-stuck { border-color: var(--line); box-shadow: 0 6px 24px -14px rgba(13, 27, 46, .25); }
.ch-pub-nav .ch-wrap { display: flex; align-items: center; gap: 28px; height: 72px; }
.ch-pub-links { display: flex; gap: 4px; margin-right: auto; }
.ch-pub-links a { padding: 8px 12px; border-radius: 10px; color: var(--text) !important; font-weight: 600; font-size: 14.5px; }
.ch-pub-links a:hover, .ch-pub-links a.is-on { background: var(--ch-p-50); color: var(--ch-p) !important; }
.ch-pub-cta { display: flex; gap: 8px; align-items: center; }
.ch-pub-burger { display: none; }
.ch-hero { position: relative; overflow: hidden; color: #fff; padding: 72px 0 0; background: radial-gradient(900px 520px at 85% 10%, color-mix(in srgb, var(--ch-a) 34%, transparent), transparent 60%), radial-gradient(700px 600px at 0% 100%, color-mix(in srgb, var(--ch-p-l) 55%, transparent), transparent 60%), linear-gradient(165deg, var(--ch-p), var(--ch-p-d)); }
.ch-hero::before { content: ""; position: absolute; inset: 0; background: var(--hero, none) center/cover; opacity: .18; mix-blend-mode: luminosity; }
.ch-hero::after { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px); background-size: 56px 56px; mask-image: radial-gradient(ellipse at 70% 30%, #000, transparent 70%); pointer-events: none; }
.ch-hero > .ch-wrap { position: relative; z-index: 1; }
.ch-hero-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items: center; padding-bottom: 56px; }
.ch-pill-badge { display: inline-flex; align-items: center; gap: 10px; padding: 7px 14px; border-radius: 99px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .18); font-size: 13px; font-weight: 600; margin-bottom: 22px; }
.ch-hero h1 { color: #fff; font-size: clamp(40px, 5.6vw, 68px); line-height: 1.02; letter-spacing: -.035em; margin-bottom: 20px; }
.ch-lead { font-size: clamp(16px, 1.5vw, 19px); color: rgba(255, 255, 255, .8); max-width: 560px; line-height: 1.6; }
.ch-hero-cta { display: flex; flex-wrap: wrap; gap: 12px; margin: 30px 0 22px; }
.ch-hero-ticks { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 8px 22px; font-size: 14px; color: rgba(255, 255, 255, .82); font-weight: 600; }
.ch-hero-ticks li { display: flex; align-items: center; gap: 6px; }
.ch-hero-ticks .ch-i { width: 18px; height: 18px; color: var(--ch-a); }
.ch-hero-art { position: relative; height: 470px; }
.ch-mock { position: absolute; background: #fff; color: var(--text); border-radius: 18px; box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .45); padding: 16px; font-size: 13.5px; animation: ch-float 7s ease-in-out infinite; }
.ch-mock small { color: var(--muted); display: block; font-size: 12px; }
.ch-mock b { color: var(--ink); }
.ch-mock-post { top: 8px; left: 0; width: 340px; }
.ch-mock-head { display: flex; gap: 10px; align-items: center; margin-bottom: 10px; }
.ch-mock-post p { margin: 0 0 10px; line-height: 1.5; }
.ch-mock-react { font-size: 12.5px; color: var(--muted); padding-top: 10px; border-top: 1px solid var(--line-2); }
.ch-mock-note { top: 200px; right: 0; display: flex; gap: 12px; align-items: center; width: 290px; animation-delay: -2s; }
.ch-mock-ico { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; background: var(--ch-p-100); color: var(--ch-p); flex: none; }
.ch-mock-ico.is-a { background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-mock-chat { bottom: 0; left: 0; width: 280px; padding: 0; overflow: hidden; animation-delay: -4s; }
.ch-mock-chat-head { display: flex; gap: 8px; align-items: center; padding: 12px 14px; background: var(--ch-p-50); border-bottom: 1px solid var(--line-2); }
.ch-mock-chat-head .ch-i { color: var(--ch-p); width: 18px; height: 18px; }
.ch-mock-chat-head .ch-live-dot { margin-left: auto; }
.ch-mock-msg { margin: 10px 14px; padding: 9px 12px; border-radius: 14px 14px 14px 4px; background: var(--line-2); width: fit-content; max-width: 80%; }
.ch-mock-msg.is-me { margin-left: auto; background: var(--ch-p); color: #fff; border-radius: 14px 14px 4px 14px; }
.ch-mock-typing { display: flex; gap: 4px; margin: 4px 14px 14px; padding: 10px 12px; background: var(--line-2); width: fit-content; border-radius: 14px; }
.ch-mock-typing i { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); animation: ch-typing 1.2s infinite; }
.ch-mock-typing i:nth-child(2) { animation-delay: .15s; }
.ch-mock-typing i:nth-child(3) { animation-delay: .3s; }
.ch-mock-course { top: 345px; right: -6px; display: flex; gap: 12px; align-items: center; width: 250px; animation-delay: -5s; }
.ch-stats-strip { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .14); border-bottom: 0; border-radius: 22px 22px 0 0; backdrop-filter: blur(10px); }
.ch-stats-strip div { padding: 24px; text-align: center; border-left: 1px solid rgba(255, 255, 255, .1); }
.ch-stats-strip div:first-child { border-left: 0; }
.ch-stats-strip b { display: block; font-size: clamp(22px, 2.6vw, 32px); font-weight: 800; color: #fff; letter-spacing: -.02em; }
.ch-stats-strip span { font-size: 13px; color: rgba(255, 255, 255, .7); font-weight: 600; }
.ch-sec { padding: 88px 0; }
.ch-sec-tint { background: linear-gradient(180deg, var(--ch-p-50), #fff); }
.ch-sec-head { text-align: center; max-width: 720px; margin: 0 auto 48px; }
.ch-sec-head h2, .ch-split h2 { font-size: clamp(28px, 3.4vw, 42px); margin-bottom: 14px; }
.ch-sec-head p { color: var(--muted); font-size: 17px; }
.ch-sec-head-row { display: flex; justify-content: space-between; align-items: flex-end; text-align: left; max-width: none; gap: 20px; flex-wrap: wrap; }
.ch-sec-head-row h2 { margin: 0; }
.ch-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.ch-feature { padding: 26px; border-radius: 20px; background: #fff; border: 1px solid var(--line); transition: transform .2s, box-shadow .2s, border-color .2s; }
.ch-feature:hover { transform: translateY(-4px); box-shadow: var(--sh-2); border-color: var(--ch-p-200); }
.ch-feature h3 { font-size: 18px; margin: 16px 0 8px; }
.ch-feature p { color: var(--muted); font-size: 14.5px; margin: 0; }
.ch-feature-ico { display: grid; place-items: center; width: 50px; height: 50px; border-radius: 15px; background: linear-gradient(140deg, var(--ch-p), var(--ch-p-d)); color: var(--ch-a); box-shadow: 0 10px 20px -10px var(--ch-p); }
.ch-feature-ico .ch-i { width: 24px; height: 24px; }
.ch-fac-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 20px; }
.ch-fac-card { padding: 26px; border-radius: 22px; background: #fff; border: 1px solid var(--line); border-top: 4px solid var(--c); box-shadow: var(--sh-1); }
.ch-fac-card-head { display: flex; gap: 14px; align-items: center; margin-bottom: 18px; }
.ch-fac-card-head h3 { font-size: 18px; margin-bottom: 2px; }
.ch-fac-card-head small { color: var(--muted); font-weight: 600; }
.ch-split { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
.ch-lead-dark { color: var(--muted); font-size: 17px; }
.ch-steps { list-style: none; counter-reset: s; padding: 0; margin: 26px 0; display: grid; gap: 16px; }
.ch-steps li { counter-increment: s; display: grid; grid-template-columns: 42px 1fr; column-gap: 14px; }
.ch-steps li::before { content: counter(s); grid-row: span 2; display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: var(--ch-a); color: #1b1300; font-weight: 800; }
.ch-steps b { color: var(--ink); }
.ch-steps span { color: var(--muted); font-size: 14px; }
.ch-note-line { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; background: var(--ch-p-50); border-radius: 12px; font-size: 13.5px; color: var(--text); margin: 16px 0 0; }
.ch-note-line .ch-i { color: var(--ch-p); width: 18px; height: 18px; margin-top: 1px; }
.ch-service-list { display: grid; gap: 10px; padding: 22px; border-radius: 24px; background: #fff; border: 1px solid var(--line); box-shadow: var(--sh-2); }
.ch-service { display: flex; gap: 12px; align-items: flex-start; padding: 12px; border-radius: 14px; transition: background .15s; }
.ch-service:hover { background: var(--ch-p-50); }
.ch-service > span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--ok-bg); color: var(--ok); flex: none; }
.ch-service > span .ch-i { width: 16px; height: 16px; }
.ch-service b { display: block; color: var(--ink); font-size: 14.5px; }
.ch-service small { color: var(--muted); font-size: 13px; }
.ch-course-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 18px; }
.ch-course { display: flex; flex-direction: column; overflow: hidden; transition: transform .2s, box-shadow .2s; color: inherit !important; }
.ch-course:hover { transform: translateY(-4px); box-shadow: var(--sh-2); }
.ch-course-img { position: relative; display: grid; place-items: center; aspect-ratio: 16/9; background: linear-gradient(140deg, var(--ch-p), var(--ch-p-d)) center/cover; color: var(--ch-a); }
.ch-course-img[style] { background-size: cover; background-position: center; }
.ch-course-img .ch-i { width: 36px; height: 36px; }
.ch-course-img em { position: absolute; right: 10px; top: 10px; padding: 4px 10px; border-radius: 99px; background: #fff; color: var(--ink); font: 800 12.5px var(--font); box-shadow: var(--sh-1); }
.ch-course-body { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 18px; flex: 1; }
.ch-course-body small { color: var(--ch-p); font-weight: 700; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; }
.ch-course-body b { color: var(--ink); font-size: 16px; line-height: 1.3; }
.ch-course-body span { color: var(--muted); font-size: 13.5px; }
.ch-course-body i { margin-top: auto; padding-top: 8px; font-style: normal; font-weight: 700; color: var(--ch-p); display: flex; align-items: center; gap: 6px; font-size: 14px; }
.ch-course-body i .ch-i { width: 16px; height: 16px; }
.ch-news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.ch-news { display: flex; flex-direction: column; overflow: hidden; color: inherit !important; transition: transform .2s, box-shadow .2s; }
.ch-news:hover { transform: translateY(-4px); box-shadow: var(--sh-2); }
.ch-news-img { display: grid; place-items: center; aspect-ratio: 16/10; background: var(--ch-p-100) center/cover; color: var(--ch-p); }
.ch-news-img .ch-i { width: 36px; height: 36px; }
.ch-news-body { display: flex; flex-direction: column; gap: 6px; padding: 18px; }
.ch-news-body small { color: var(--muted); font-weight: 600; font-size: 12.5px; }
.ch-news-body b { color: var(--ink); font-size: 17px; line-height: 1.3; }
.ch-news-body span { color: var(--muted); font-size: 14px; }
.ch-news-grid.is-feature .ch-news:first-child { grid-column: span 2; grid-row: span 2; }
.ch-news-grid.is-feature .ch-news:first-child .ch-news-img { aspect-ratio: auto; flex: 1; min-height: 260px; }
.ch-news-grid.is-feature .ch-news:first-child b { font-size: 24px; }
.ch-safe-art { display: grid; gap: 14px; justify-items: start; }
.ch-safe-card { display: grid; grid-template-columns: 46px 1fr; column-gap: 14px; align-items: center; width: min(360px, 100%); padding: 16px 18px; border-radius: 18px; background: #fff; border: 1px solid var(--line); box-shadow: var(--sh-2); }
.ch-safe-card:nth-child(2) { margin-left: 40px; }
.ch-safe-card:nth-child(3) { margin-left: 16px; }
.ch-safe-card .ch-i { grid-row: span 2; width: 46px; height: 46px; padding: 12px; border-radius: 14px; background: var(--warn-bg); color: var(--warn); }
.ch-safe-card.is-ok .ch-i { background: var(--ok-bg); color: var(--ok); }
.ch-safe-card.is-a .ch-i { background: var(--bad-bg); color: var(--bad); }
.ch-safe-card b { color: var(--ink); }
.ch-safe-card small { color: var(--muted); }
.ch-ticks { list-style: none; padding: 0; margin: 20px 0 0; display: grid; gap: 14px; }
.ch-ticks li { display: flex; gap: 12px; align-items: flex-start; font-size: 15.5px; }
.ch-ticks .ch-i { width: 24px; height: 24px; padding: 4px; border-radius: 50%; background: var(--ok-bg); color: var(--ok); flex: none; }
.ch-cta-band { position: relative; overflow: hidden; padding: 84px 0; text-align: center; color: #fff; background: radial-gradient(600px 300px at 50% 0%, color-mix(in srgb, var(--ch-a) 30%, transparent), transparent), linear-gradient(160deg, var(--ch-p), var(--ch-p-d)); }
.ch-cta-band h2 { color: #fff; font-size: clamp(28px, 3.6vw, 44px); margin-bottom: 10px; }
.ch-cta-band p { color: rgba(255, 255, 255, .78); margin-bottom: 28px; font-size: 17px; }
.ch-pub-foot { background: #0b1628; color: rgba(255, 255, 255, .7); padding: 64px 0 0; font-size: 14px; }
.ch-foot-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.3fr; gap: 36px; padding-bottom: 44px; }
.ch-foot-grid h4 { color: #fff; font-size: 14px; margin-bottom: 14px; letter-spacing: 0; }
.ch-foot-grid a, .ch-foot-grid span { display: flex; align-items: flex-start; gap: 8px; color: rgba(255, 255, 255, .7) !important; margin-bottom: 10px; }
.ch-foot-grid a:hover { color: #fff !important; }
.ch-foot-grid .ch-i { width: 17px; height: 17px; margin-top: 2px; color: var(--ch-a); }
.ch-foot-grid p { margin: 16px 0; max-width: 300px; }
.ch-social { display: flex; gap: 14px; }
.ch-foot-base { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 20px 0 28px; border-top: 1px solid rgba(255, 255, 255, .1); font-size: 13px; }
.ch-page-hero { padding: 64px 0 56px; color: #fff; background: radial-gradient(700px 300px at 90% 0%, color-mix(in srgb, var(--ch-a) 28%, transparent), transparent), linear-gradient(160deg, var(--ch-p), var(--ch-p-d)); margin-bottom: 36px; }
.ch-page-hero h1 { color: #fff; font-size: clamp(32px, 4.4vw, 52px); margin-bottom: 12px; }
.ch-page-hero .ch-eyebrow { color: var(--ch-a); }
.ch-page-hero .ch-lead { margin: 0; }
.ch-about { display: grid; grid-template-columns: 1fr 340px; gap: 24px; align-items: start; padding-bottom: 72px; }
.ch-about-main { display: grid; gap: 20px; }
.ch-about-side { display: grid; gap: 20px; position: sticky; top: 92px; }
.ch-about-side h3 { font-size: 17px; margin-bottom: 14px; }
.ch-facts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.ch-facts div { padding: 18px; border-radius: 18px; background: #fff; border: 1px solid var(--line); display: grid; gap: 2px; }
.ch-facts .ch-i { color: var(--ch-p); margin-bottom: 8px; }
.ch-facts b { color: var(--ink); font-size: 17px; }
.ch-facts span { color: var(--muted); font-size: 13px; }
.ch-fac-about { border-left: 4px solid var(--c); }
.ch-fac-about .ch-prose { margin-bottom: 14px; }
.ch-contact { list-style: none; padding: 0; margin: 0; display: grid; gap: 12px; }
.ch-contact li { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; }
.ch-contact .ch-i { color: var(--ch-p); width: 18px; height: 18px; margin-top: 2px; }
.ch-promo { background: linear-gradient(160deg, var(--ch-p), var(--ch-p-d)); color: rgba(255, 255, 255, .85); border: 0; }
.ch-promo h3 { color: #fff; }
.ch-article { padding: 48px 0 80px; }
.ch-article-head h1 { font-size: clamp(30px, 4vw, 46px); margin: 16px 0 20px; }
.ch-article-meta { display: flex; gap: 12px; align-items: center; }
.ch-article-meta span { display: grid; }
.ch-article-meta b { color: var(--ink); }
.ch-article-meta small { color: var(--muted); }
.ch-article-img { margin: 32px auto; }
.ch-article-img img { width: 100%; max-height: 520px; object-fit: cover; border-radius: 24px; }
.ch-article-body { font-size: 17.5px; line-height: 1.8; margin-top: 28px; }
.ch-article-more { margin-top: 64px; }
.ch-article-more h3 { margin-bottom: 18px; font-size: 20px; }
.ch-news-page { padding-bottom: 72px; }
.ch-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 28px 0; color: var(--muted); font-weight: 600; font-size: 14px; }

/* =========================================================
   APP SHELL
   ========================================================= */
.ch-shell { display: grid; grid-template-columns: var(--side) 1fr; min-height: 100dvh; }
.ch-side { position: sticky; top: 0; height: 100dvh; display: flex; flex-direction: column; background: #fff; border-right: 1px solid var(--line); padding: 18px 14px; overflow-y: auto; scrollbar-width: thin; z-index: 80; }
.ch-side-head { display: flex; align-items: center; justify-content: space-between; padding: 0 6px 18px; }
.ch-side-close { display: none; }
.ch-side-me { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 14px; background: linear-gradient(135deg, var(--ch-p-50), var(--ch-a-100)); border: 1px solid var(--ch-p-100); margin-bottom: 14px; color: inherit !important; }
.ch-side-me span { display: grid; min-width: 0; }
.ch-side-me b { color: var(--ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-side-me small { color: var(--muted); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-side-nav { display: grid; gap: 2px; }
.ch-side-label { padding: 16px 12px 6px; font-size: 11px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #9aa6b8; }
.ch-side-nav a { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 11px; color: var(--text) !important; font-weight: 600; font-size: 14.5px; transition: background .15s, color .15s; }
.ch-side-nav a .ch-i { color: #8592a6; transition: color .15s; }
.ch-side-nav a:hover { background: var(--line-2); }
.ch-side-nav a.is-on { background: var(--ch-p); color: #fff !important; box-shadow: 0 8px 18px -10px var(--ch-p); }
.ch-side-nav a.is-on .ch-i { color: var(--ch-a); }
.ch-side-nav a.is-on .ch-count { background: var(--ch-a); }
.ch-side-foot { margin-top: auto; padding-top: 18px; border-top: 1px solid var(--line-2); display: grid; gap: 2px; }
.ch-side-foot a { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: 11px; color: var(--muted) !important; font-weight: 600; font-size: 14px; }
.ch-side-foot a:hover { background: var(--line-2); color: var(--ink) !important; }
.ch-scrim { position: fixed; inset: 0; background: rgba(10, 20, 40, .45); z-index: 70; }
.ch-body { min-width: 0; display: flex; flex-direction: column; }
.ch-top { position: sticky; top: 0; z-index: 60; display: flex; align-items: center; gap: 14px; height: var(--top); padding: 0 28px; background: rgba(244, 246, 250, .85); backdrop-filter: saturate(1.6) blur(14px); border-bottom: 1px solid var(--line); }
.ch-burger { display: none; }
.ch-search { position: relative; flex: 1; max-width: 560px; }
.ch-search > .ch-i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--muted); }
.ch-search input { min-height: 42px !important; padding-left: 42px !important; border-radius: 12px !important; background: #fff !important; }
.ch-top-actions { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.ch-me-btn { border: 0; background: none; padding: 2px; border-radius: 50%; margin-left: 6px; }
.ch-me-btn:hover .ch-ava { box-shadow: 0 0 0 3px var(--ch-p-200); }
.ch-notes-menu { width: min(380px, calc(100vw - 24px)); padding: 0; }
.ch-notes-menu .ch-drop-head { padding: 14px 16px 10px; margin: 0; }
.ch-notes-list { max-height: 420px; overflow-y: auto; padding: 6px; }
.ch-me-menu { min-width: 240px; }
.ch-banner { display: flex; align-items: center; gap: 12px; margin: 16px 28px 0; padding: 12px 12px 12px 16px; border-radius: 14px; background: linear-gradient(90deg, var(--ch-a-100), #fff7e6); border: 1px solid color-mix(in srgb, var(--ch-a) 40%, #fff); color: var(--ink); }
.ch-banner > .ch-i { color: var(--ch-a-d); }
.ch-banner p { margin: 0; flex: 1; font-size: 14px; }
.ch-banner a { font-weight: 700; margin-left: 6px; }
.ch-main { flex: 1; padding: 24px 28px 48px; min-width: 0; }
.ch-app .ch-wrap { width: 100%; }
.ch-app .ch-page-hero { border-radius: 22px; margin: 0 0 24px; padding: 40px 32px; }
.ch-app .ch-about { padding-bottom: 0; }
.ch-app .ch-about-side { top: calc(var(--top) + 20px); }
.ch-tabbar { display: none; }

/* ---------- Page scaffolding ---------- */
.ch-page { max-width: 1180px; margin: 0 auto; }
.ch-narrow { max-width: 800px; }
.ch-page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.ch-page-head h1 { font-size: 28px; margin-bottom: 4px; }
.ch-page-head p { color: var(--muted); margin: 0; }
.ch-cols { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
.ch-col-main { display: grid; gap: 16px; min-width: 0; }
.ch-col-side { display: grid; gap: 16px; position: sticky; top: calc(var(--top) + 20px); min-width: 0; }
.ch-col-main > *, .ch-col-side > * { min-width: 0; }
.ch-section-title { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.ch-section-title h2, .ch-h2 { font-size: 17px; }
.ch-h2 { margin: 12px 0 2px; }
.ch-h2:empty { display: none; }
.ch-section-title a { display: flex; align-items: center; gap: 4px; font-weight: 700; font-size: 14px; }
.ch-section-title .ch-i { width: 16px; height: 16px; }
.ch-block { padding: 18px; }
.ch-block-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.ch-block-head h2, .ch-block-head h3 { font-size: 15.5px; display: flex; align-items: center; gap: 8px; }
.ch-block-head h2 .ch-i, .ch-block-head h3 .ch-i { width: 18px; height: 18px; color: var(--ch-p); }
.ch-block-head a { font-size: 13px; font-weight: 700; }
.ch-back { display: inline-flex; align-items: center; gap: 6px; margin-bottom: 16px; color: var(--muted) !important; font-weight: 700; font-size: 14px; }
.ch-back:hover { color: var(--ink) !important; }
.ch-back .ch-i { width: 18px; height: 18px; }
.ch-crumbs { display: flex; align-items: center; gap: 6px; margin-bottom: 14px; font-size: 13.5px; font-weight: 600; color: var(--muted); flex-wrap: wrap; }
.ch-crumbs a { color: var(--muted) !important; }
.ch-crumbs a:hover { color: var(--ch-p) !important; }
.ch-crumbs .ch-i { width: 14px; height: 14px; }
.ch-tabs { display: flex; gap: 4px; padding: 4px; background: #fff; border: 1px solid var(--line); border-radius: 14px; overflow-x: auto; scrollbar-width: none; margin-bottom: 4px; }
.ch-tabs::-webkit-scrollbar { display: none; }
.ch-tabs a { flex: none; display: inline-flex; align-items: center; gap: 6px; padding: 9px 16px; border-radius: 10px; color: var(--muted) !important; font-weight: 700; font-size: 14px; white-space: nowrap; }
.ch-tabs a:hover { color: var(--ink) !important; background: var(--line-2); }
.ch-tabs a.is-on { background: var(--ch-p); color: #fff !important; }
.ch-tabs a em { font-style: normal; font-size: 11.5px; padding: 1px 7px; border-radius: 99px; background: rgba(0, 0, 0, .07); }
.ch-tabs a.is-on em { background: rgba(255, 255, 255, .2); }
.ch-filter { margin-bottom: 4px; }
.ch-filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 18px; }
.ch-filters select { width: auto; min-width: 160px; }
.ch-filters .ch-grow { min-width: 220px; }

/* ---------- Dashboard ---------- */
.ch-welcome { position: relative; overflow: hidden; display: flex; justify-content: space-between; align-items: center; gap: 24px; flex-wrap: wrap; padding: 28px 30px; margin-bottom: 20px; border-radius: 24px; color: #fff; background: radial-gradient(500px 240px at 100% 0%, color-mix(in srgb, var(--ch-a) 38%, transparent), transparent 70%), linear-gradient(135deg, var(--ch-p), var(--ch-p-d)); box-shadow: 0 20px 40px -24px var(--ch-p); }
.ch-welcome::after { content: ""; position: absolute; right: -40px; bottom: -80px; width: 260px; height: 260px; border-radius: 50%; border: 40px solid rgba(255, 255, 255, .05); }
.ch-welcome h1 { color: #fff; font-size: clamp(24px, 3vw, 32px); margin-bottom: 6px; }
.ch-welcome p { color: rgba(255, 255, 255, .8); margin: 0; }
.ch-welcome .ch-eyebrow { color: var(--ch-a); }
.ch-quick { position: relative; z-index: 1; display: flex; gap: 10px; }
.ch-quick a { display: grid; justify-items: center; gap: 6px; width: 84px; padding: 14px 6px; border-radius: 16px; background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .16); color: #fff !important; font-size: 12.5px; font-weight: 700; transition: background .15s, transform .15s; }
.ch-quick a:hover { background: rgba(255, 255, 255, .18); transform: translateY(-2px); }
.ch-quick .ch-i { width: 22px; height: 22px; color: var(--ch-a); }
.ch-setup { display: flex; align-items: center; gap: 16px; padding: 16px 18px; margin-bottom: 20px; border-color: color-mix(in srgb, var(--ch-a) 50%, #fff); background: linear-gradient(90deg, #fffaf0, #fff); }
.ch-setup > div { flex: 1; }
.ch-setup b { color: var(--ink); }
.ch-setup p { margin: 2px 0 0; color: var(--muted); font-size: 14px; }
.ch-setup-ico { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: var(--ch-a); color: #1b1300; flex: none; }
.ch-ann-row { display: grid; gap: 2px; padding: 12px 14px; margin: 0 -6px; border-radius: 12px; color: inherit !important; border-left: 3px solid transparent; }
.ch-ann-row:hover { background: var(--line-2); }
.ch-ann-row.is-important { border-left-color: var(--bad); }
.ch-ann-row b { color: var(--ink); }
.ch-ann-row small { color: var(--muted); font-size: 12.5px; }
.ch-ann-aud { font-size: 11.5px; font-weight: 800; color: var(--ch-p); text-transform: uppercase; letter-spacing: .05em; }
.ch-dept-card { display: flex; align-items: center; gap: 14px; padding: 16px; color: inherit !important; border-left: 4px solid var(--c); transition: box-shadow .2s; }
.ch-dept-card:hover { box-shadow: var(--sh-2); }
.ch-dept-card > span:not(.ch-badge) { display: grid; flex: 1; min-width: 0; }
.ch-dept-card small { color: var(--muted); font-size: 12px; font-weight: 600; }
.ch-dept-card b { color: var(--ink); }
.ch-dept-card em { color: var(--muted); font-style: normal; font-size: 12.5px; }
.ch-dept-card > .ch-i { color: var(--muted); }
.ch-thread-mini { margin: 0 -10px; }
.ch-thread-mini .ch-thread { padding: 8px 10px; }
.ch-event-mini { display: flex; gap: 12px; align-items: center; padding: 8px; margin: 0 -8px; border-radius: 12px; color: inherit !important; }
.ch-event-mini:hover { background: var(--line-2); }
.ch-event-mini > span:last-child { display: grid; min-width: 0; }
.ch-event-mini b { color: var(--ink); font-size: 14px; }
.ch-event-mini small { color: var(--muted); font-size: 12.5px; }
.ch-date { display: grid; place-items: center; width: 48px; height: 52px; flex: none; border-radius: 12px; background: var(--ch-p-100); color: var(--ch-p); line-height: 1; }
.ch-date b { color: var(--ch-p); font-size: 19px; }
.ch-date small { font-size: 11px; font-weight: 800; text-transform: uppercase; }
.ch-mini-topic { display: grid; gap: 2px; padding: 9px 8px; margin: 0 -8px; border-radius: 10px; color: inherit !important; }
.ch-mini-topic:hover { background: var(--line-2); }
.ch-mini-topic b { color: var(--ink); font-size: 14px; font-weight: 700; line-height: 1.35; }
.ch-mini-topic small { color: var(--muted); font-size: 12.5px; }
.ch-promo-card { display: grid; gap: 6px; padding: 20px; color: rgba(255, 255, 255, .8) !important; border: 0; background: radial-gradient(300px 160px at 100% 0%, color-mix(in srgb, var(--ch-a) 40%, transparent), transparent), linear-gradient(150deg, var(--ch-p), var(--ch-p-d)); }
.ch-promo-card b { color: #fff; font-size: 16px; }
.ch-promo-card small { font-size: 13.5px; }
.ch-promo-card .ch-link { color: var(--ch-a); margin-top: 6px; }
.ch-promo-ico { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; background: rgba(255, 255, 255, .12); color: var(--ch-a); margin-bottom: 6px; }
.ch-course-mini { display: flex; gap: 12px; align-items: center; padding: 8px; margin: 0 -8px; border-radius: 12px; color: inherit !important; }
.ch-course-mini:hover { background: var(--line-2); }
.ch-course-mini > span:last-child { display: grid; min-width: 0; }
.ch-course-mini b { color: var(--ink); font-size: 14px; line-height: 1.3; }
.ch-course-mini small { color: var(--muted); font-size: 12.5px; }
.ch-course-thumb { width: 64px; height: 46px; flex: none; border-radius: 10px; background: linear-gradient(140deg, var(--ch-p), var(--ch-p-d)) center/cover; }
.ch-course-thumb[style] { background-size: cover; }
.ch-trend { display: flex; gap: 12px; padding: 9px 8px; margin: 0 -8px; border-radius: 10px; color: inherit !important; }
.ch-trend:hover { background: var(--line-2); }
.ch-trend em { font-style: normal; font-weight: 800; color: var(--ch-a-d); font-size: 18px; width: 18px; }
.ch-trend span { display: grid; min-width: 0; }
.ch-trend b { color: var(--ink); font-size: 13.5px; font-weight: 600; line-height: 1.4; }
.ch-trend small { color: var(--muted); font-size: 12px; }
.ch-rules ul { margin: 0 0 12px; padding-left: 18px; color: var(--text); font-size: 13.5px; display: grid; gap: 6px; }
.ch-rules a { font-size: 13.5px; font-weight: 700; }

/* ---------- Feed ---------- */
.ch-composer { padding: 16px; }
.ch-composer-top { display: flex; gap: 12px; align-items: flex-start; }
.ch-composer textarea { border: 0 !important; box-shadow: none !important; padding: 10px 2px !important; font-size: 16px !important; min-height: 48px; resize: none; background: transparent !important; }
.ch-composer-poll { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 8px 0 0 56px; }
.ch-composer-poll input { min-height: 40px !important; font-size: 14px !important; }
.ch-previews { display: flex; gap: 8px; flex-wrap: wrap; margin-left: 56px; }
.ch-previews:not(:empty) { margin-top: 10px; }
.ch-previews img { width: 84px; height: 84px; object-fit: cover; border-radius: 12px; border: 1px solid var(--line); }
.ch-composer-bar { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding-top: 12px; border-top: 1px solid var(--line-2); }
.ch-composer-tools { display: flex; gap: 4px; flex-wrap: wrap; flex: 1; min-width: 0; }
.ch-tool { position: relative; display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 12px; border-radius: 10px; border: 0; background: none; color: var(--muted); font-weight: 700; font-size: 13.5px; cursor: pointer; }
.ch-tool:hover, .ch-tool.is-on { background: var(--ch-p-50); color: var(--ch-p); }
.ch-tool .ch-i { width: 19px; height: 19px; }
.ch-tool:nth-child(1) .ch-i { color: #16a34a; }
.ch-tool:nth-child(2) .ch-i { color: #ea580c; }
.ch-scope-pick select { min-height: 36px !important; height: 36px; border: 0 !important; background-color: transparent !important; padding: 0 28px 0 0 !important; font-weight: 700 !important; font-size: 13.5px !important; color: var(--muted) !important; box-shadow: none !important; max-width: 200px; }
.ch-counter { font-size: 12px; color: var(--muted); font-weight: 600; }
.ch-counter.is-near { color: var(--warn); }
.ch-feed-list { display: grid; gap: 16px; }
.ch-feed-list:empty { display: none; }
.ch-feed-empty .ch-empty { background: #fff; border: 1px dashed var(--line); border-radius: var(--r); }
.ch-more { justify-self: center; width: 100%; }
.ch-post { padding: 18px 18px 6px; animation: ch-in .3s ease-out; }
.ch-post.is-held { border-style: dashed; border-color: color-mix(in srgb, var(--warn) 40%, #fff); }
.ch-post.is-pinned { border-color: var(--ch-a); box-shadow: 0 0 0 1px var(--ch-a), var(--sh-1); }
.ch-held-note, .ch-pin-note { display: flex; align-items: center; gap: 6px; margin: -4px 0 12px; font-size: 12.5px; font-weight: 700; color: var(--warn); }
.ch-pin-note { color: var(--ch-a-d); }
.ch-held-note .ch-i, .ch-pin-note .ch-i { width: 15px; height: 15px; }
.ch-post-head { display: flex; gap: 12px; align-items: flex-start; }
.ch-post-who { flex: 1; min-width: 0; }
.ch-name { color: var(--ink) !important; font-weight: 800; font-size: 14.5px; }
.ch-name:hover { text-decoration: underline; }
.ch-verified { display: inline-grid; place-items: center; width: 17px; height: 17px; border-radius: 50%; background: var(--ch-p); color: #fff; vertical-align: -3px; margin-left: 3px; }
.ch-verified .ch-i { width: 11px; height: 11px; stroke-width: 3; }
.ch-meta { display: flex; flex-wrap: wrap; gap: 0 6px; align-items: center; color: var(--muted); font-size: 12.5px; }
.ch-meta a { color: var(--muted) !important; }
.ch-meta a:hover { color: var(--ch-p) !important; }
.ch-scope { display: inline-flex; align-items: center; gap: 3px; font-weight: 700; color: var(--ch-p) !important; }
.ch-scope .ch-i { width: 13px; height: 13px; }
.ch-post-body { margin: 12px 0 4px; font-size: 15px; line-height: 1.6; color: var(--ink); overflow-wrap: anywhere; }
.ch-post-body.is-big { font-size: 19px; font-weight: 600; line-height: 1.45; letter-spacing: -.01em; }
.ch-mention { font-weight: 700; }
.ch-gallery { display: grid; gap: 4px; margin: 12px -18px 4px; overflow: hidden; }
.ch-gallery a { display: block; background: var(--line-2); overflow: hidden; }
.ch-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.ch-gallery a:hover img { transform: scale(1.03); }
.ch-gallery.n1 img { max-height: 520px; }
.ch-gallery.n2 { grid-template-columns: 1fr 1fr; aspect-ratio: 2/1.1; }
.ch-gallery.n3 { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; aspect-ratio: 3/2; }
.ch-gallery.n3 a:first-child { grid-row: span 2; }
.ch-gallery.n4 { grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; aspect-ratio: 1; }
.ch-poll { display: grid; gap: 8px; margin: 12px 0 4px; }
.ch-poll-opt { position: relative; display: flex; justify-content: space-between; align-items: center; min-height: 44px; padding: 10px 14px; border-radius: 12px; border: 1.5px solid var(--line); background: #fff; font-weight: 600; color: var(--ink); text-align: left; overflow: hidden; z-index: 0; }
button.ch-poll-opt:hover { border-color: var(--ch-p); background: var(--ch-p-50); }
.is-voted .ch-poll-opt::before { content: ""; position: absolute; inset: 0; width: var(--pc); background: var(--ch-p-100); z-index: -1; transition: width .6s ease-out; }
.is-voted .ch-poll-opt.is-mine { border-color: var(--ch-p); }
.is-voted .ch-poll-opt.is-mine::before { background: color-mix(in srgb, var(--ch-p) 20%, #fff); }
.ch-poll-opt span { display: inline-flex; gap: 6px; align-items: center; }
.ch-poll-opt .ch-i { width: 16px; height: 16px; color: var(--ch-p); }
.ch-poll small { color: var(--muted); font-size: 12.5px; }
.ch-post-stats { display: flex; justify-content: space-between; align-items: center; padding: 10px 0 8px; font-size: 13px; color: var(--muted); min-height: 38px; }
.ch-react-sum { display: inline-flex; align-items: center; gap: 6px; }
.ch-emojis { display: inline-flex; }
.ch-emojis i { font-style: normal; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 2px #fff; margin-left: -5px; font-size: 13px; }
.ch-emojis i:first-child { margin-left: 0; }
.ch-react-sum b { color: var(--text); font-weight: 600; }
.ch-post-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; padding: 4px 0; border-top: 1px solid var(--line-2); }
.ch-act { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 40px; border: 0; border-radius: 10px; background: none; color: var(--muted); font-weight: 700; font-size: 13.5px; transition: background .15s, color .15s; }
.ch-act:hover { background: var(--line-2); color: var(--ink); }
.ch-act.is-on { color: var(--ch-p); }
.ch-act .ch-i { width: 19px; height: 19px; }
.ch-react-icon i { font-style: normal; font-size: 18px; line-height: 1; }
.ch-react-wrap { position: relative; }
.ch-react-pick { position: absolute; bottom: calc(100% + 6px); left: 0; display: flex; gap: 2px; padding: 6px; border-radius: 99px; background: #fff; box-shadow: var(--sh-3); border: 1px solid var(--line); opacity: 0; visibility: hidden; transform: translateY(6px) scale(.95); transition: all .16s; z-index: 10; }
.ch-react-wrap:hover .ch-react-pick, .ch-react-wrap.is-open .ch-react-pick { opacity: 1; visibility: visible; transform: none; transition-delay: .25s; }
.ch-react-pick button { width: 40px; height: 40px; border: 0; background: none; border-radius: 50%; font-size: 24px; transition: transform .15s; }
.ch-react-pick button:hover { transform: scale(1.3) translateY(-4px); }
.ch-comments { padding: 10px 0 14px; border-top: 1px solid var(--line-2); }
.ch-comment-list { display: grid; gap: 12px; margin-bottom: 12px; }
.ch-comment-list:empty { margin: 0; }
.ch-comment { display: flex; gap: 10px; align-items: flex-start; animation: ch-in .25s ease-out; }
.ch-comment-main { min-width: 0; flex: 1; }
.ch-bubble { display: inline-block; max-width: 100%; padding: 9px 14px; border-radius: 4px 16px 16px 16px; background: var(--line-2); font-size: 14px; overflow-wrap: anywhere; }
.ch-bubble .ch-name { font-size: 13px; display: block; }
.ch-comment.is-held .ch-bubble { background: var(--warn-bg); }
.ch-comment-meta { display: flex; gap: 12px; align-items: center; padding: 4px 0 0 12px; font-size: 12px; color: var(--muted); }
.ch-comment-meta button { border: 0; background: none; color: var(--muted); font-weight: 700; font-size: 12px; padding: 0; }
.ch-comment-meta button:hover { color: var(--ink); }
.ch-comment-form { display: flex; gap: 10px; align-items: flex-end; }
.ch-comment-form textarea { min-height: 40px !important; padding: 9px 14px !important; border-radius: 20px !important; font-size: 14px !important; resize: none; }
.ch-send { background: var(--ch-p); color: #fff !important; border-radius: 50%; width: 40px; height: 40px; }
.ch-send:hover { background: var(--ch-p-d); }
.ch-send .ch-i { width: 18px; height: 18px; }

/* ---------- Forum ---------- */
.ch-board-list, .ch-topic-list, .ch-list, .ch-res-list, .ch-req-list, .ch-mod-list, .ch-note-list { overflow: hidden; }
.ch-board { display: grid; grid-template-columns: 48px 1fr auto 70px; gap: 14px; align-items: center; padding: 16px 18px; border-top: 1px solid var(--line-2); color: inherit !important; transition: background .15s; }
.ch-board:first-child { border-top: 0; }
.ch-board:hover { background: var(--ch-p-50); }
.ch-board-ico { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 13px; background: var(--ch-p-100); color: var(--ch-p); }
.ch-board-ico .ch-badge { --s: 44px !important; }
.ch-board-main { display: grid; min-width: 0; }
.ch-board-main b { color: var(--ink); }
.ch-board-main small { color: var(--muted); font-size: 13px; }
.ch-board-stats { display: grid; text-align: center; }
.ch-board-stats b { color: var(--ink); }
.ch-board-stats small, .ch-board-last { color: var(--muted); font-size: 12px; }
.ch-board-last { text-align: right; }
.ch-fold summary { list-style: none; display: flex; align-items: center; justify-content: space-between; cursor: pointer; margin: 12px 0 10px; }
.ch-fold summary::-webkit-details-marker { display: none; }
.ch-fold summary .ch-i { transition: transform .2s; color: var(--muted); }
.ch-fold[open] summary .ch-i { transform: rotate(90deg); }
.ch-topic { display: flex; gap: 14px; align-items: center; padding: 16px 18px; border-top: 1px solid var(--line-2); color: inherit !important; transition: background .15s; }
.ch-topic:first-child { border-top: 0; }
.ch-topic:hover { background: var(--ch-p-50); }
.ch-topic.is-pinned { background: color-mix(in srgb, var(--ch-a) 7%, #fff); }
.ch-topic-main { flex: 1; min-width: 0; display: grid; gap: 4px; }
.ch-topic-title { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.ch-topic-title b { color: var(--ink); font-size: 15px; line-height: 1.35; }
.ch-topic-stats { display: flex; gap: 18px; text-align: center; }
.ch-topic-stats span { display: grid; font-size: 11.5px; color: var(--muted); min-width: 44px; }
.ch-topic-stats b { color: var(--ink); font-size: 15px; }
.ch-board-chip { color: var(--ch-p); font-weight: 700; }
.ch-topic-view { padding: 26px; }
.ch-topic-view.is-held { border-style: dashed; }
.ch-topic-view h1 { font-size: clamp(22px, 2.6vw, 28px); margin: 10px 0 16px; }
.ch-author-line { display: flex; gap: 12px; align-items: center; padding-bottom: 18px; border-bottom: 1px solid var(--line-2); }
.ch-author-line > span { display: grid; flex: 1; min-width: 0; }
.ch-author-line small { color: var(--muted); font-size: 12.5px; }
.ch-topic-body { padding-top: 18px; font-size: 15.5px; }
.ch-replies { display: grid; gap: 12px; }
.ch-reply { display: flex; gap: 14px; padding: 18px; background: #fff; border: 1px solid var(--line); border-radius: var(--r); animation: ch-in .25s; }
.ch-reply.is-best { border-color: var(--ok); box-shadow: 0 0 0 1px var(--ok); background: linear-gradient(180deg, #f3fcf8, #fff 60%); }
.ch-reply.is-held { border-style: dashed; }
.ch-reply-main { flex: 1; min-width: 0; }
.ch-reply-main header { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; margin-bottom: 8px; }
.ch-reply-actions { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 12px; }
.ch-reply-actions button { display: inline-flex; align-items: center; gap: 5px; border: 0; background: none; padding: 4px 0; color: var(--muted); font-size: 12.5px; font-weight: 700; }
.ch-reply-actions button:hover { color: var(--ch-p); }
.ch-reply-actions .ch-i { width: 15px; height: 15px; }
.ch-reply-form { display: flex; gap: 14px; padding: 18px; }

/* ---------- Messages ---------- */
.ch-r-messages .ch-main { padding: 0; }
.ch-r-messages .ch-banner { display: none; }
.ch-chat-app { display: grid; grid-template-columns: 360px 1fr; height: calc(100dvh - var(--top)); background: #fff; }
.ch-chat-list { display: flex; flex-direction: column; border-right: 1px solid var(--line); min-height: 0; }
.ch-chat-list-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 18px 10px; }
.ch-chat-list-head h1 { font-size: 22px; }
.ch-chat-filter { padding: 0 14px 10px; }
.ch-chat-filter input { min-height: 40px !important; background: var(--line-2) !important; border-color: transparent !important; }
.ch-room-strip { display: flex; gap: 10px; padding: 4px 14px 12px; overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--line-2); }
.ch-room-strip a { display: grid; justify-items: center; gap: 4px; width: 64px; flex: none; color: var(--muted) !important; font-size: 11px; font-weight: 700; text-align: center; line-height: 1.2; }
.ch-room-strip a.is-on .ch-badge { box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--ch-a); }
.ch-thread-list { flex: 1; overflow-y: auto; padding: 6px; }
.ch-thread { display: flex; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 14px; color: inherit !important; transition: background .15s; }
.ch-thread:hover { background: var(--line-2); }
.ch-thread.is-on { background: var(--ch-p-100); }
.ch-thread-icon { display: grid; place-items: center; width: 46px; height: 46px; flex: none; border-radius: 50%; background: var(--ch-p-100); color: var(--ch-p); }
.ch-thread-icon.is-room { background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-thread-icon.is-request { background: var(--ok-bg); color: var(--ok); }
.ch-thread-main { flex: 1; min-width: 0; display: grid; gap: 2px; }
.ch-thread-top { display: flex; justify-content: space-between; gap: 8px; }
.ch-thread-top b { color: var(--ink); font-size: 14.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-thread-top time { color: var(--muted); font-size: 11.5px; flex: none; }
.ch-thread-prev { color: var(--muted); font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-thread.is-unread .ch-thread-prev { color: var(--ink); font-weight: 700; }
.ch-thread .ch-count { margin-left: 0; }
.ch-chat-pane { display: flex; flex-direction: column; min-width: 0; min-height: 0; background: var(--bg); }
.ch-chat-blank { margin: auto; text-align: center; max-width: 360px; padding: 24px; }
.ch-chat-blank-art { display: inline-grid; place-items: center; width: 96px; height: 96px; border-radius: 30px; background: linear-gradient(140deg, var(--ch-p), var(--ch-p-d)); color: var(--ch-a); margin-bottom: 20px; box-shadow: 0 20px 40px -20px var(--ch-p); }
.ch-chat-blank-art .ch-i { width: 44px; height: 44px; }
.ch-chat-blank h2 { font-size: 22px; margin-bottom: 8px; }
.ch-chat-blank p { color: var(--muted); }
.ch-chat-head { display: flex; align-items: center; gap: 12px; padding: 12px 18px; background: #fff; border-bottom: 1px solid var(--line); }
.ch-chat-back { display: none; }
.ch-chat-title { flex: 1; display: grid; min-width: 0; }
.ch-chat-title b { color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-chat-title small { color: var(--muted); font-size: 12.5px; }
.ch-chat-scroll { flex: 1; overflow-y: auto; padding: 20px clamp(14px, 3vw, 36px); background-image: radial-gradient(color-mix(in srgb, var(--ch-p) 6%, transparent) 1px, transparent 1px); background-size: 20px 20px; }
.ch-older { display: flex; margin: 0 auto 14px; }
.ch-msgs { display: grid; gap: 4px; }
.ch-msg { display: flex; gap: 8px; align-items: flex-end; max-width: min(640px, 82%); animation: ch-in .2s ease-out; }
.ch-msg + .ch-msg[data-user] { margin-top: 2px; }
.ch-msg.is-me { margin-left: auto; flex-direction: row-reverse; }
.ch-msg-col { display: grid; min-width: 0; }
.ch-msg.is-me .ch-msg-col { justify-items: end; }
.ch-msg-name { font-size: 11.5px; font-weight: 700; color: var(--ch-p); padding: 6px 12px 2px; }
.ch-msg-bubble { position: relative; padding: 9px 14px 20px; border-radius: 18px 18px 18px 6px; background: #fff; box-shadow: var(--sh-1); color: var(--ink); font-size: 14.5px; line-height: 1.5; overflow-wrap: anywhere; min-width: 80px; }
.ch-msg.is-me .ch-msg-bubble { background: var(--ch-p); color: #fff; border-radius: 18px 18px 6px 18px; }
.ch-msg.is-me .ch-msg-bubble a { color: var(--ch-a); }
.ch-msg.is-held .ch-msg-bubble { opacity: .75; border: 1.5px dashed var(--warn); }
.ch-msg-time { position: absolute; right: 12px; bottom: 4px; font-size: 10.5px; color: var(--muted); }
.ch-msg.is-me .ch-msg-time { color: rgba(255, 255, 255, .65); }
.ch-msg-tools { display: flex; gap: 2px; opacity: 0; transition: opacity .15s; }
.ch-msg:hover .ch-msg-tools { opacity: 1; }
.ch-msg-tools button { border: 0; background: none; color: var(--muted); padding: 4px; border-radius: 8px; }
.ch-msg-tools button:hover { background: #fff; color: var(--bad); }
.ch-msg-tools .ch-i { width: 15px; height: 15px; }
.ch-msg-sys { text-align: center; margin: 10px 0; }
.ch-msg-sys span { display: inline-block; padding: 5px 12px; border-radius: 99px; background: rgba(255, 255, 255, .9); box-shadow: var(--sh-1); color: var(--muted); font-size: 12px; font-weight: 600; }
.ch-chat-hello { text-align: center; color: var(--muted); padding: 40px 0; }
.ch-chat-hello .ch-i { width: 40px; height: 40px; color: var(--ch-p-200); }
.ch-chat-blocked { padding: 16px; text-align: center; background: #fff; border-top: 1px solid var(--line); color: var(--muted); font-size: 14px; }
.ch-chat-compose { display: flex; gap: 10px; align-items: flex-end; padding: 12px 18px; background: #fff; border-top: 1px solid var(--line); }
.ch-chat-compose textarea { min-height: 44px !important; max-height: 160px; padding: 11px 16px !important; border-radius: 22px !important; resize: none; background: var(--line-2) !important; border-color: transparent !important; }
.ch-chat-compose .ch-icon-btn { width: 44px; height: 44px; border-radius: 50%; }
.ch-picked { display: flex; flex-wrap: wrap; gap: 6px; }
.ch-picked:empty { display: none; }
.ch-picked button { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px 4px 4px; border-radius: 99px; border: 0; background: var(--ch-p-100); color: var(--ch-p); font-weight: 700; font-size: 13px; }
.ch-picked .ch-i { width: 14px; height: 14px; }
.ch-user-results { display: grid; gap: 2px; max-height: 260px; overflow-y: auto; margin-top: -6px; }
.ch-user-results button { display: flex; align-items: center; gap: 10px; padding: 8px; border: 0; background: none; border-radius: 12px; text-align: left; }
.ch-user-results button:hover { background: var(--line-2); }
.ch-user-results span { display: grid; }
.ch-user-results b { color: var(--ink); font-size: 14px; }
.ch-user-results small { color: var(--muted); font-size: 12px; }

/* ---------- Faculties, departments, people ---------- */
.ch-unit-hero { position: relative; overflow: hidden; border-radius: 24px; background: #fff; border: 1px solid var(--line); margin-bottom: 18px; box-shadow: var(--sh-1); }
.ch-unit-cover { height: 150px; background: radial-gradient(400px 200px at 90% 0%, color-mix(in srgb, var(--ch-a) 45%, transparent), transparent), linear-gradient(130deg, var(--c), color-mix(in srgb, var(--c) 60%, #000)); }
.ch-unit-hero[style*="--img"] .ch-unit-cover { background: linear-gradient(0deg, rgba(0, 0, 0, .35), transparent), var(--img) center/cover; }
.ch-unit-info { display: flex; align-items: flex-end; gap: 18px; padding: 0 24px 22px; margin-top: -40px; flex-wrap: wrap; }
.ch-unit-info > .ch-badge { box-shadow: 0 0 0 5px #fff, var(--sh-2); }
.ch-unit-text { flex: 1; min-width: 220px; padding-top: 48px; }
.ch-unit-text .ch-eyebrow { margin-bottom: 4px; }
.ch-unit-text h1 { font-size: clamp(22px, 2.6vw, 30px); margin-bottom: 8px; }
.ch-unit-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; color: var(--muted); font-size: 13.5px; font-weight: 600; }
.ch-unit-meta > * { display: inline-flex; align-items: center; gap: 6px; }
.ch-unit-meta a { color: var(--muted) !important; }
.ch-unit-meta .ch-i { width: 17px; height: 17px; }
.ch-unit-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.ch-dept-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.ch-dept-tile { display: grid; gap: 8px; padding: 16px; color: inherit !important; transition: transform .15s, box-shadow .15s, border-color .15s; }
.ch-dept-tile:hover { transform: translateY(-2px); box-shadow: var(--sh-2); border-color: var(--ch-p-200); }
.ch-dept-tile b { color: var(--ink); font-size: 14.5px; line-height: 1.3; }
.ch-dept-tile small { color: var(--muted); font-size: 12.5px; }
.ch-dept-tile.is-flat { background: var(--bg); border: 1px solid transparent; border-radius: 14px; }
.ch-dept-tile.is-flat:hover { background: #fff; border-color: var(--line); }
.ch-fac-block { padding: 20px; margin-bottom: 18px; border-top: 4px solid var(--c); }
.ch-fac-block-head { display: flex; align-items: center; gap: 16px; margin-bottom: 16px; color: inherit !important; flex-wrap: wrap; }
.ch-fac-block-head > span:nth-child(2) { display: grid; flex: 1; min-width: 200px; }
.ch-fac-block-head b { color: var(--ink); font-size: 19px; }
.ch-fac-block-head small { color: var(--muted); font-weight: 600; }
.ch-person-row { display: flex; gap: 12px; align-items: center; padding: 8px; margin: 0 -8px; border-radius: 12px; color: inherit !important; }
.ch-person-row:hover { background: var(--line-2); }
.ch-person-row > span:last-child { display: grid; min-width: 0; }
.ch-person-row b { color: var(--ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-person-row small { color: var(--muted); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-list { padding: 8px 16px; }
.ch-people-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 14px; }
.ch-person { display: grid; gap: 12px; padding: 20px 16px 16px; text-align: center; transition: box-shadow .2s, transform .2s; }
.ch-person:hover { box-shadow: var(--sh-2); transform: translateY(-2px); }
.ch-person-top { display: grid; justify-items: center; gap: 4px; color: inherit !important; }
.ch-person-top .ch-ava-wrap { margin-bottom: 6px; }
.ch-person-top b { color: var(--ink); }
.ch-person-top small { color: var(--muted); font-size: 12.5px; line-height: 1.4; }
.ch-person-top .ch-tag { margin-top: 4px; }
.ch-profile { position: relative; overflow: hidden; border-radius: 24px; background: #fff; border: 1px solid var(--line); margin-bottom: 20px; box-shadow: var(--sh-1); }
.ch-profile-cover { height: 170px; background: radial-gradient(400px 220px at 85% 0%, color-mix(in srgb, var(--ch-a) 50%, transparent), transparent), linear-gradient(130deg, var(--c), color-mix(in srgb, var(--c) 55%, #000)); }
.ch-profile-info { display: flex; align-items: flex-end; gap: 20px; flex-wrap: wrap; padding: 0 28px 24px; margin-top: -56px; }
.ch-profile-ava .ch-ava { box-shadow: 0 0 0 5px #fff; }
.ch-profile-ava .ch-online { width: 20px; height: 20px; right: 8px; bottom: 8px; border-width: 3px; }
.ch-profile-text { flex: 1; min-width: 240px; padding-top: 64px; }
.ch-profile-text h1 { font-size: clamp(22px, 2.6vw, 30px); margin-bottom: 4px; }
.ch-profile-text p { color: var(--muted); margin: 0 0 10px; font-size: 14px; }
.ch-profile-actions { display: flex; gap: 8px; }
.ch-side-first { order: -1; }
.ch-bio { font-size: 14.5px; color: var(--text); }
.ch-facts-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.ch-facts-list li { display: flex; gap: 10px; align-items: center; font-size: 14px; }
.ch-facts-list .ch-i { width: 18px; height: 18px; color: var(--muted); }
.ch-avatar-edit { display: flex; gap: 18px; align-items: center; }
.ch-avatar-edit > div { display: grid; gap: 6px; justify-items: start; }

/* ---------- Notifications ---------- */
.ch-note { display: flex; gap: 12px; align-items: flex-start; padding: 10px 12px; border-radius: 12px; color: inherit !important; position: relative; }
.ch-note:hover { background: var(--line-2); }
.ch-note.is-new { background: var(--ch-p-50); }
.ch-note.is-new::after { content: ""; position: absolute; right: 12px; top: 50%; width: 8px; height: 8px; border-radius: 50%; background: var(--ch-p); }
.ch-note-ico { position: absolute; right: -4px; bottom: -4px; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--ch-p); color: #fff; border: 2px solid #fff; }
.ch-note-ico .ch-i { width: 12px; height: 12px; }
.ch-note-ico.t-reaction { background: #e11d48; }
.ch-note-ico.t-comment, .ch-note-ico.t-reply { background: #16a34a; }
.ch-note-big { display: grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: 50%; background: var(--ch-p-100); color: var(--ch-p); }
.ch-note-big.t-announcement { background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-note-big.t-report, .ch-note-big.t-suspended { background: var(--bad-bg); color: var(--bad); }
.ch-note-big .ch-i { width: 19px; height: 19px; }
.ch-note-text { display: grid; gap: 2px; font-size: 14px; color: var(--ink); padding-right: 16px; line-height: 1.4; }
.ch-note-text time { color: var(--muted); font-size: 12px; }
.ch-note-list { padding: 6px; }

/* ---------- Projects ---------- */
.ch-proj-hero, .ch-course-hero, .ch-alumni-hero { position: relative; overflow: hidden; display: grid; grid-template-columns: 1.3fr 1fr; gap: 28px; align-items: center; padding: 34px; margin-bottom: 24px; border-radius: 24px; color: rgba(255, 255, 255, .82); background: radial-gradient(500px 260px at 100% 0%, color-mix(in srgb, var(--ch-a) 40%, transparent), transparent 70%), linear-gradient(135deg, var(--ch-p), var(--ch-p-d)); }
.ch-proj-hero h1, .ch-course-hero h1, .ch-alumni-hero h1 { color: #fff; font-size: clamp(24px, 3vw, 34px); margin-bottom: 10px; }
.ch-proj-hero .ch-eyebrow, .ch-course-hero .ch-eyebrow, .ch-alumni-hero .ch-eyebrow { color: var(--ch-a); }
.ch-proj-hero p, .ch-course-hero p, .ch-alumni-hero p { margin-bottom: 20px; }
.ch-proj-steps, .ch-course-perks { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.ch-proj-steps li, .ch-course-perks li { display: flex; gap: 12px; align-items: center; padding: 12px 14px; border-radius: 14px; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .12); }
.ch-proj-steps i { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--ch-a); color: #1b1300; font: 800 14px var(--font); flex: none; }
.ch-proj-steps span { display: grid; }
.ch-proj-steps b, .ch-course-perks span { color: #fff; font-weight: 700; }
.ch-proj-steps small { font-size: 12.5px; }
.ch-course-perks .ch-i { color: var(--ch-a); }
.ch-service-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
.ch-service-card { display: grid; gap: 8px; align-content: start; padding: 20px; color: inherit !important; transition: transform .2s, box-shadow .2s; }
.ch-service-card:hover { transform: translateY(-3px); box-shadow: var(--sh-2); }
.ch-service-card b { color: var(--ink); margin-top: 6px; }
.ch-service-card small { color: var(--muted); font-size: 13.5px; }
.ch-service-card .ch-link { margin-top: 6px; font-size: 13.5px; }
.ch-service-card .ch-feature-ico { width: 44px; height: 44px; border-radius: 13px; }
.ch-req { display: flex; gap: 14px; align-items: center; padding: 16px 18px; border-top: 1px solid var(--line-2); color: inherit !important; }
.ch-req:first-child { border-top: 0; }
.ch-req:hover { background: var(--ch-p-50); }
.ch-req-ico { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; background: var(--ch-p-100); color: var(--ch-p); flex: none; }
.ch-req-main { flex: 1; display: grid; min-width: 0; }
.ch-req-main b { color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-req-main small { color: var(--muted); font-size: 12.5px; }
.ch-req-price { font-weight: 800; color: var(--ink); }
.ch-status { display: inline-flex; align-items: center; height: 28px; padding: 0 12px; border-radius: 99px; font-size: 12.5px; font-weight: 800; white-space: nowrap; background: var(--line-2); color: var(--muted); }
.ch-status.s-submitted { background: #eef2ff; color: #4338ca; }
.ch-status.s-quoted { background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-status.s-paid, .ch-status.s-in_progress { background: var(--ch-p-100); color: var(--ch-p); }
.ch-status.s-delivered, .ch-status.s-completed { background: var(--ok-bg); color: var(--ok); }
.ch-status.s-revision { background: var(--warn-bg); color: var(--warn); }
.ch-status.s-cancelled { background: var(--bad-bg); color: var(--bad); }
.ch-req-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; padding: 24px; margin-bottom: 16px; flex-wrap: wrap; }
.ch-req-head h1 { font-size: clamp(20px, 2.4vw, 26px); margin-bottom: 6px; }
.ch-req-head p { margin: 0; font-size: 13.5px; }
.ch-progress { list-style: none; display: grid; grid-template-columns: repeat(6, 1fr); padding: 0; margin: 0 0 20px; }
.ch-progress li { position: relative; display: grid; justify-items: center; gap: 6px; text-align: center; font-size: 12px; font-weight: 700; color: var(--muted); }
.ch-progress li::before { content: ""; position: absolute; top: 16px; left: -50%; right: 50%; height: 3px; background: var(--line); z-index: 0; }
.ch-progress li:first-child::before { display: none; }
.ch-progress li.is-done::before, .ch-progress li.is-now::before { background: var(--ch-p); }
.ch-progress i { position: relative; z-index: 1; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: #fff; border: 2px solid var(--line); font-style: normal; color: var(--muted); }
.ch-progress .ch-i { width: 16px; height: 16px; stroke-width: 3; }
.ch-progress li.is-done i { background: var(--ch-p); border-color: var(--ch-p); color: #fff; }
.ch-progress li.is-now i { border-color: var(--ch-p); color: var(--ch-p); box-shadow: 0 0 0 5px var(--ch-p-100); }
.ch-progress li.is-now, .ch-progress li.is-done { color: var(--ink); }
.ch-quote { display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; padding: 24px; border: 2px solid var(--ch-a); background: linear-gradient(135deg, #fffaf0, #fff); }
.ch-quote small { color: var(--muted); font-weight: 700; text-transform: uppercase; font-size: 12px; letter-spacing: .06em; }
.ch-quote > div:first-child b { display: block; font-size: 34px; color: var(--ink); letter-spacing: -.02em; }
.ch-quote p { margin: 6px 0 0; color: var(--text); font-size: 14px; }
.ch-quote-actions { display: grid; justify-items: center; gap: 6px; }
.ch-file-row { display: flex; gap: 12px; align-items: center; padding: 10px; margin: 0 -10px; border-radius: 12px; color: inherit !important; }
.ch-file-row:hover { background: var(--line-2); }
.ch-file-row > span:nth-child(2) { flex: 1; display: grid; min-width: 0; }
.ch-file-row b { color: var(--ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-file-row small { color: var(--muted); font-size: 12px; }
.ch-file-row > .ch-i { color: var(--ch-p); }
.ch-file-ico { display: grid; place-items: center; width: 42px; height: 48px; flex: none; border-radius: 8px; background: var(--ch-p-100); color: var(--ch-p); font: 800 10.5px var(--font); letter-spacing: .02em; position: relative; }
.ch-file-ico.e-pdf { background: #fde8e8; color: #c81e1e; }
.ch-file-ico.e-doc, .ch-file-ico.e-docx { background: #e1effe; color: #1a56db; }
.ch-file-ico.e-xls, .ch-file-ico.e-xlsx, .ch-file-ico.e-csv { background: #def7ec; color: #046c4e; }
.ch-file-ico.e-ppt, .ch-file-ico.e-pptx { background: #feecdc; color: #b43403; }
.ch-deliv-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line-2); }
.ch-team-tools { border: 1.5px dashed var(--ch-p-200); background: var(--ch-p-50); }
.ch-dl { display: grid; grid-template-columns: auto 1fr; gap: 10px 14px; margin: 0 0 16px; font-size: 14px; }
.ch-dl dt { color: var(--muted); }
.ch-dl dd { margin: 0; color: var(--ink); font-weight: 600; text-align: right; }
.ch-service-pick { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 6px; }
.ch-service-pick label { cursor: pointer; }
.ch-service-pick input { position: absolute; opacity: 0; }
.ch-service-pick span { display: grid; gap: 2px; height: 100%; padding: 12px 14px; border: 1.5px solid var(--line); border-radius: 14px; transition: all .15s; }
.ch-service-pick b { color: var(--ink); font-size: 14px; }
.ch-service-pick small { color: var(--muted); font-size: 12.5px; }
.ch-service-pick input:checked + span { border-color: var(--ch-p); background: var(--ch-p-50); box-shadow: 0 0 0 3px var(--ch-p-100); }

/* ---------- Announcements, events, jobs, resources, clubs ---------- */
.ch-ann-list, .ch-event-list, .ch-job-list { display: grid; gap: 14px; }
.ch-ann { padding: 22px; scroll-margin-top: 90px; }
.ch-ann.is-important { border-left: 4px solid var(--bad); }
.ch-ann header { display: flex; gap: 12px; align-items: center; margin-bottom: 14px; }
.ch-ann header > div { flex: 1; display: grid; min-width: 0; }
.ch-ann header b { color: var(--ink); font-size: 14px; }
.ch-ann header small { color: var(--muted); font-size: 12.5px; }
.ch-ann h2 { font-size: 19px; margin: 8px 0 10px; }
.ch-ann:target { box-shadow: 0 0 0 3px var(--ch-a); }
.ch-event { display: flex; overflow: hidden; scroll-margin-top: 90px; }
.ch-event:target { box-shadow: 0 0 0 3px var(--ch-a); }
.ch-event-date { display: grid; place-content: center; justify-items: center; width: 110px; flex: none; padding: 16px; color: #fff; background: linear-gradient(160deg, var(--ch-p), var(--ch-p-d)) center/cover; text-align: center; line-height: 1.1; }
.ch-event-date b { font-size: 38px; color: #fff; }
.ch-event-date small { font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; color: var(--ch-a); }
.ch-event-main { flex: 1; padding: 18px 20px; min-width: 0; }
.ch-event-main h2 { font-size: 18px; margin: 8px 0 6px; }
.ch-event-meta { display: flex; flex-wrap: wrap; gap: 4px 16px; color: var(--muted); font-size: 13.5px; font-weight: 600; margin-bottom: 10px; }
.ch-event-meta span { display: inline-flex; align-items: center; gap: 6px; }
.ch-event-meta .ch-i { width: 16px; height: 16px; }
.ch-event-foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 14px; }
.ch-event-foot .ch-muted { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 600; }
.ch-event-foot .ch-i { width: 17px; height: 17px; }
.ch-alumni-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.ch-alumni-stats div { padding: 18px 10px; text-align: center; border-radius: 16px; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .12); }
.ch-alumni-stats b { display: block; color: #fff; font-size: 28px; }
.ch-alumni-stats span { font-size: 12.5px; font-weight: 600; }
.ch-alumni-hero .ch-hero-cta { margin: 0; }
.ch-job { padding: 20px; scroll-margin-top: 90px; }
.ch-job header { display: flex; gap: 14px; align-items: center; }
.ch-job header > div { flex: 1; min-width: 0; }
.ch-job h2 { font-size: 17px; margin-bottom: 2px; }
.ch-job header p { margin: 0; font-size: 13.5px; }
.ch-job details { margin: 12px 0; }
.ch-job summary { cursor: pointer; font-weight: 700; color: var(--ch-p); font-size: 14px; }
.ch-job details .ch-prose { margin-top: 10px; font-size: 14.5px; }
.ch-job footer { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding-top: 12px; border-top: 1px solid var(--line-2); }
.ch-res { display: flex; gap: 14px; align-items: center; padding: 14px 18px; border-top: 1px solid var(--line-2); }
.ch-res:first-child { border-top: 0; }
.ch-res-main { flex: 1; display: grid; gap: 2px; min-width: 0; }
.ch-res-main b { color: var(--ink); font-size: 14.5px; }
.ch-res-main small { color: var(--text); font-size: 12.5px; }
.ch-res-main small.ch-muted { color: var(--muted); }
.ch-club-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.ch-club { overflow: hidden; display: flex; flex-direction: column; }
.ch-club-cover { display: grid; place-items: center; height: 110px; background: linear-gradient(135deg, var(--ch-p-100), var(--ch-a-100)) center/cover; }
.ch-club-cover[style] { background-size: cover; }
.ch-club-body { display: flex; flex-direction: column; gap: 4px; padding: 16px; flex: 1; }
.ch-club-body b { color: var(--ink); font-size: 15.5px; }
.ch-club-body small { color: var(--muted); font-size: 12.5px; font-weight: 600; }
.ch-club-body p { color: var(--muted); font-size: 13.5px; margin: 6px 0 12px; flex: 1; }

/* ---------- Search, moderation, status ---------- */
.ch-search-big { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 18px; margin-bottom: 20px; background: #fff; border: 1.5px solid var(--line); border-radius: 18px; box-shadow: var(--sh-1); }
.ch-search-big > .ch-i { color: var(--muted); }
.ch-search-big input { border: 0 !important; box-shadow: none !important; padding: 8px 0 !important; font-size: 17px !important; }
.ch-mod-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.ch-mod-stats a { display: grid; padding: 18px; color: var(--muted) !important; font-size: 13px; font-weight: 700; transition: box-shadow .15s, border-color .15s; }
.ch-mod-stats a:hover, .ch-mod-stats a.is-on { border-color: var(--ch-p); box-shadow: 0 0 0 1px var(--ch-p); }
.ch-mod-stats b { color: var(--ink); font-size: 28px; }
.ch-mod-item { display: flex; gap: 14px; padding: 16px 18px; border-top: 1px solid var(--line-2); transition: opacity .3s; }
.ch-mod-item:first-child { border-top: 0; }
.ch-mod-main { flex: 1; min-width: 0; }
.ch-mod-top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.ch-mod-top b { color: var(--ink); }
.ch-mod-text { margin: 8px 0 12px; padding: 10px 14px; border-radius: 12px; background: var(--line-2); font-size: 14px; color: var(--ink); overflow-wrap: anywhere; }
.ch-mod-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.ch-log { padding: 6px 16px; }
.ch-log-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; padding: 10px 0; border-top: 1px solid var(--line-2); font-size: 13.5px; }
.ch-log-row:first-child { border-top: 0; }
.ch-log-row time { color: var(--muted); font-size: 12.5px; width: 110px; }
.ch-log-row b { color: var(--ink); }
.ch-status-card { padding: 44px 32px; text-align: center; margin-top: 40px; }
.ch-status-ico { display: inline-grid; place-items: center; width: 76px; height: 76px; border-radius: 24px; background: var(--ch-a-100); color: var(--ch-a-d); margin-bottom: 18px; }
.ch-status-ico .ch-i { width: 34px; height: 34px; }
.ch-status-card.is-suspended .ch-status-ico { background: var(--bad-bg); color: var(--bad); }
.ch-status-card.is-unverified .ch-status-ico { background: var(--ch-p-100); color: var(--ch-p); }
.ch-status-card h1 { font-size: 24px; margin-bottom: 10px; }
.ch-status-card > p { color: var(--muted); max-width: 440px; margin: 0 auto 20px; }
.ch-status-card .ch-alert { text-align: left; max-width: 440px; margin: 0 auto 20px; }
.ch-status-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }
.ch-404 { text-align: center; padding: 60px 20px; }
.ch-404-num { display: block; font-size: 110px; font-weight: 800; line-height: 1; letter-spacing: -.05em; background: linear-gradient(135deg, var(--ch-p), var(--ch-a)); -webkit-background-clip: text; background-clip: text; color: transparent; margin-bottom: 10px; }
.ch-404 h1 { font-size: 26px; margin-bottom: 8px; }
.ch-404 p { color: var(--muted); }

/* ---------- Animations ---------- */
@keyframes ch-spin { to { transform: rotate(360deg); } }
@keyframes ch-pulse { 0% { box-shadow: 0 0 0 0 rgba(34, 197, 94, .6); } 70% { box-shadow: 0 0 0 8px rgba(34, 197, 94, 0); } 100% { box-shadow: 0 0 0 0 rgba(34, 197, 94, 0); } }
@keyframes ch-shimmer { to { background-position: -200% 0; } }
@keyframes ch-pop { from { opacity: 0; transform: translateY(10px) scale(.97); } }
@keyframes ch-up { from { opacity: 0; transform: translateY(12px); } }
@keyframes ch-in { from { opacity: 0; transform: translateY(6px); } }
@keyframes ch-fade { from { opacity: 0; } }
@keyframes ch-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes ch-typing { 0%, 60%, 100% { transform: translateY(0); opacity: .5; } 30% { transform: translateY(-4px); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ch *, .ch *::before, .ch *::after { animation: none !important; transition: none !important; } }

/* ---------- Responsive ---------- */
@media (max-width: 1180px) {
	.ch-cols { grid-template-columns: minmax(0, 1fr) 300px; }
	.ch-hero-art { transform: scale(.88); transform-origin: center right; }
}
@media (max-width: 1024px) {
	.ch-shell { grid-template-columns: 1fr; }
	.ch-side { position: fixed; left: 0; top: 0; bottom: 0; width: min(300px, 86vw); transform: translateX(-100%); transition: transform .25s ease; box-shadow: var(--sh-3); }
	.ch-side.is-open { transform: none; }
	.ch-side-close { display: inline-grid; }
	.ch-burger { display: inline-grid; }
	.ch-cols { grid-template-columns: 1fr; }
	.ch-col-side { position: static; }
	.ch-side-first { order: 0; }
	.ch-hero-grid, .ch-split { grid-template-columns: 1fr; }
	.ch-hero-art { height: 440px; max-width: 560px; transform: none; }
	.ch-features { grid-template-columns: 1fr 1fr; }
	.ch-news-grid { grid-template-columns: 1fr 1fr; }
	.ch-about { grid-template-columns: 1fr; }
	.ch-about-side { position: static; }
	.ch-foot-grid { grid-template-columns: 1fr 1fr; }
	.ch-chat-app { grid-template-columns: 300px 1fr; }
	.ch-proj-hero, .ch-course-hero, .ch-alumni-hero { grid-template-columns: 1fr; }
	.ch-mod-stats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 860px) {
	.ch-auth { grid-template-columns: 1fr; }
	.ch-auth-brand { display: none; }
	.ch-auth-mobile-logo { display: block; }
	.ch-auth-main { padding: 18px 20px; }
	.ch-pub-links { position: absolute; left: 0; right: 0; top: 72px; flex-direction: column; padding: 12px 20px 20px; background: #fff; border-bottom: 1px solid var(--line); box-shadow: var(--sh-2); display: none; }
	.ch-pub-links.is-open { display: flex; }
	.ch-pub-burger { display: inline-grid; }
	.ch-pub-cta .ch-btn-ghost { display: none; }
	.ch-facts { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
	body.ch-app { padding-bottom: 68px; }
	.ch-top { padding: 0 12px; gap: 8px; }
	.ch-top-actions > a.ch-icon-btn { display: none; }
	.ch-main { padding: 16px 14px 32px; }
	.ch-banner { margin: 12px 14px 0; }
	.ch-tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 90; display: grid; grid-template-columns: repeat(5, 1fr); padding: 6px 6px calc(6px + env(safe-area-inset-bottom)); background: rgba(255, 255, 255, .94); backdrop-filter: blur(14px); border-top: 1px solid var(--line); }
	.ch-tabbar a, .ch-tabbar button { position: relative; display: grid; justify-items: center; gap: 2px; padding: 6px 0; border: 0; background: none; color: var(--muted) !important; font-size: 11px; font-weight: 700; border-radius: 12px; }
	.ch-tabbar a.is-on { color: var(--ch-p) !important; }
	.ch-tabbar a.is-on .ch-i { color: var(--ch-p); }
	.ch-tabbar .ch-i { width: 22px; height: 22px; }
	.ch-tabbar .ch-dot { right: calc(50% - 22px); top: 0; }
	.ch-toasts { bottom: 84px; }
	.ch-r-messages .ch-tabbar { display: none; }
	.ch-r-messages.ch-app { padding-bottom: 0; }
	.ch-chat-app { grid-template-columns: 1fr; height: calc(100dvh - var(--top)); }
	.ch-chat-app.has-thread .ch-chat-list { display: none; }
	.ch-chat-app:not(.has-thread) .ch-chat-pane { display: none; }
	.ch-chat-back { display: inline-grid; }
	.ch-msg { max-width: 88%; }
	.ch-hero { padding-top: 40px; }
	.ch-hero-art { display: none; }
	.ch-hero-grid { padding-bottom: 40px; }
	.ch-stats-strip { grid-template-columns: 1fr 1fr; }
	.ch-stats-strip div:nth-child(3) { border-left: 0; }
	.ch-stats-strip div:nth-child(n+3) { border-top: 1px solid rgba(255, 255, 255, .1); }
	.ch-sec { padding: 56px 0; }
	.ch-features, .ch-news-grid { grid-template-columns: 1fr; }
	.ch-news-grid.is-feature .ch-news:first-child { grid-column: auto; grid-row: auto; }
	.ch-foot-grid { grid-template-columns: 1fr; }
	.ch-grid-2, .ch-choices, .ch-service-pick, .ch-composer-poll { grid-template-columns: 1fr; }
	.ch-composer-poll, .ch-previews { margin-left: 0; }
	.ch-welcome { padding: 22px; }
	.ch-quick { width: 100%; }
	.ch-quick a { flex: 1; width: auto; }
	.ch-board { grid-template-columns: 44px 1fr auto; }
	.ch-board-last { display: none; }
	.ch-topic-stats span:last-child { display: none; }
	.ch-progress { grid-template-columns: repeat(6, minmax(52px, 1fr)); overflow-x: auto; }
	.ch-progress span { font-size: 10.5px; }
	.ch-event-date { width: 76px; padding: 10px; }
	.ch-event-date b { font-size: 28px; }
	.ch-req-price { display: none; }
	.ch-req .ch-status { font-size: 11px; padding: 0 8px; }
	.ch-unit-info, .ch-profile-info { padding: 0 18px 18px; }
	.ch-unit-actions, .ch-profile-actions { width: 100%; }
	.ch-unit-actions .ch-btn, .ch-profile-actions > .ch-btn { flex: 1; }
	.ch-page-head h1 { font-size: 24px; }
	.ch-mod-stats { grid-template-columns: repeat(2, 1fr); }
	.ch-filters select { flex: 1; min-width: 0; }
	.ch-res .ch-btn span { display: none; }
	.ch-gallery { margin-inline: -18px; }
	.ch-dl dd { text-align: left; }
	.ch-proj-hero, .ch-course-hero, .ch-alumni-hero { padding: 24px; }
	.ch-post-actions .ch-act span:last-child { font-size: 12.5px; }
}

/* Let text inside grid stacks truncate instead of widening the layout. */
.ch-thread-main, .ch-side-me span, .ch-person-row > span:last-child, .ch-req-main, .ch-file-row > span:nth-child(2), .ch-chat-title, .ch-dept-card > span:not(.ch-badge), .ch-event-mini > span:last-child, .ch-course-mini > span:last-child, .ch-trend span, .ch-mini-topic { grid-template-columns: minmax(0, 1fr); }
.ch-form [data-for] { display: grid; gap: 16px; }
@media (min-width: 1025px) { .ch-shell { background: linear-gradient(90deg, #fff var(--side), transparent 0); } }
@media (max-width: 1024px) { .ch-side { z-index: 100; } .ch-scrim { z-index: 95; } }

/* =========================================================
   v1.1 — attachments, groups, dashboard, chat extras, points
   ========================================================= */

/* Powered by */
.ch-powered { font-size: 12.5px; color: inherit; opacity: .85; }
.ch-powered a { font-weight: 800; color: inherit !important; text-decoration: none; background: linear-gradient(90deg, var(--ch-a), var(--ch-a)) no-repeat 0 100% / 100% 2px; }
.ch-powered.is-side { display: block; padding: 12px 12px 0; color: var(--muted); font-size: 12px; }
.ch-pub-foot .ch-powered a { color: #fff !important; }
.ch-auth-legal .ch-powered { display: inline-block; margin-top: 6px; }

/* Attachments */
.ch-attach { display: grid; gap: 8px; margin: 12px 0 4px; }
.ch-attach-imgs { display: grid; gap: 4px; border-radius: 14px; overflow: hidden; }
.ch-attach-imgs.n1 { grid-template-columns: 1fr; }
.ch-attach-imgs.n2 { grid-template-columns: 1fr 1fr; }
.ch-attach-imgs.n3 { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; }
.ch-attach-imgs.n3 a:first-child { grid-row: span 2; }
.ch-attach-imgs.n4 { grid-template-columns: 1fr 1fr; }
.ch-attach-imgs a { position: relative; display: block; background: var(--line-2); min-height: 120px; max-height: 420px; overflow: hidden; }
.ch-attach-imgs.n1 a { max-height: 480px; }
.ch-attach-imgs img { width: 100%; height: 100%; object-fit: cover; }
.ch-attach-imgs em { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(10, 20, 40, .55); color: #fff; font: 800 26px var(--font); font-style: normal; }
.ch-attach-file { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 14px; background: #fff; color: inherit !important; max-width: 460px; transition: border-color .15s, box-shadow .15s; }
.ch-attach-file:hover { border-color: var(--ch-p-200); box-shadow: var(--sh-1); }
.ch-attach-file > span:nth-child(2) { display: grid; flex: 1; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-attach-file b { color: var(--ink); font-size: 13.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-attach-file small { color: var(--muted); font-size: 12px; }
.ch-attach-file > .ch-i { color: var(--ch-p); }
.ch-attach-file .ch-file-ico { width: 36px; height: 42px; font-size: 9.5px; }
.ch-attach.is-compact { margin: 0 0 6px; }
.ch-attach.is-compact .ch-attach-imgs { border-radius: 12px; max-width: 320px; }
.ch-attach.is-compact .ch-attach-imgs a { min-height: 90px; max-height: 260px; }
.ch-attach.is-compact .ch-attach-file { max-width: 300px; }
.ch-file-ico.e-zip, .ch-file-ico.e-rar { background: #ede9fe; color: #6d28d9; }
.ch-file-ico.e-mp3, .ch-file-ico.e-m4a, .ch-file-ico.e-mp4 { background: #fce7f3; color: #be185d; }
.ch-file-ico.e-jpg, .ch-file-ico.e-jpeg, .ch-file-ico.e-png, .ch-file-ico.e-webp, .ch-file-ico.e-gif { background: #e0f2fe; color: #0369a1; }
.ch-file-list { display: flex; flex-wrap: wrap; gap: 8px; }
.ch-file-list:empty { display: none; }
.ch-file-chip { display: flex; align-items: center; gap: 10px; max-width: 280px; padding: 6px 6px 6px 6px; border: 1px solid var(--line); border-radius: 12px; background: #fff; animation: ch-in .2s; }
.ch-file-chip img { width: 40px; height: 40px; object-fit: cover; border-radius: 8px; }
.ch-file-chip .ch-file-ico { width: 34px; height: 40px; font-size: 9px; }
.ch-file-chip span { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-file-chip b { font-size: 12.5px; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-file-chip small { font-size: 11.5px; color: var(--muted); }
.ch-file-chip button { border: 0; background: var(--line-2); width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; color: var(--muted); flex: none; }
.ch-file-chip button:hover { background: var(--bad-bg); color: var(--bad); }
.ch-file-chip button .ch-i { width: 14px; height: 14px; }
.ch-attach-btn.is-on { background: var(--ch-p-100); color: var(--ch-p); }
.ch-composer .ch-file-list { margin: 10px 0 0 56px; }
.ch-dropzone { display: flex; align-items: center; gap: 14px; padding: 16px 18px; border: 2px dashed var(--line); border-radius: 16px; background: var(--bg); transition: border-color .15s, background .15s; flex-wrap: wrap; }
.ch-dropzone > .ch-i { width: 34px; height: 34px; padding: 7px; border-radius: 10px; background: var(--ch-p-100); color: var(--ch-p); }
.ch-dropzone > div { flex: 1; min-width: 200px; display: grid; }
.ch-dropzone b { color: var(--ink); font-size: 14px; }
.ch-dropzone small { color: var(--muted); font-size: 12.5px; }
.ch-dropzone .ch-attach-btn { background: #fff; border: 1px solid var(--line); }
.ch-dropzone.is-drag, .ch-chat-pane.is-drag { border-color: var(--ch-p); background: var(--ch-p-50); }
.ch-reply-form .ch-file-list { margin: 8px 0; }
.ch-reply-form .ch-form-foot { margin-top: 8px; }
.ch-topic-foot { display: flex; gap: 8px; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line-2); }
.ch-btn.is-on { background: var(--ch-p-100); color: var(--ch-p) !important; border-color: var(--ch-p-200); }
.ch-helpful { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px !important; border-radius: 99px; border: 1px solid var(--line) !important; }
.ch-helpful em { font-style: normal; font-weight: 800; color: var(--ink); }
.ch-helpful.is-on { background: var(--ch-p-100) !important; color: var(--ch-p) !important; border-color: var(--ch-p-200) !important; }
.ch-helpful[disabled] { opacity: .55; cursor: default; }

/* Chat extras */
.ch-chat-compose { flex-direction: column; align-items: stretch; gap: 8px; }
.ch-compose-row { display: flex; gap: 6px; align-items: flex-end; }
.ch-compose-row .ch-tool { height: 44px; width: 44px; padding: 0; justify-content: center; border-radius: 50%; font-size: 20px; flex: none; }
.ch-compose-row .ch-tool .ch-i { width: 21px; height: 21px; color: var(--muted); }
.ch-emoji-wrap { position: relative; }
.ch-emoji-pick { position: absolute; bottom: calc(100% + 8px); left: 0; display: grid; grid-template-columns: repeat(6, 38px); gap: 2px; padding: 8px; background: #fff; border: 1px solid var(--line); border-radius: 16px; box-shadow: var(--sh-3); z-index: 20; }
.ch-emoji-pick button { width: 38px; height: 38px; border: 0; background: none; border-radius: 10px; font-size: 21px; }
.ch-emoji-pick button:hover { background: var(--line-2); transform: scale(1.15); }
.ch-reply-bar { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 12px; border-left: 3px solid var(--ch-p); border-radius: 10px; background: var(--ch-p-50); }
.ch-reply-bar > .ch-i { color: var(--ch-p); width: 18px; height: 18px; }
.ch-reply-bar span { flex: 1; display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-reply-bar b { font-size: 12.5px; color: var(--ch-p); }
.ch-reply-bar small { font-size: 12.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-msg-quote { display: grid; gap: 1px; margin: -2px -6px 8px; padding: 6px 10px; border-left: 3px solid var(--ch-a); border-radius: 8px; background: rgba(0, 0, 0, .05); color: inherit !important; font-size: 12.5px; }
.ch-msg.is-me .ch-msg-quote { background: rgba(255, 255, 255, .14); }
.ch-msg-quote b { font-size: 12px; color: var(--ch-p); }
.ch-msg.is-me .ch-msg-quote b { color: var(--ch-a); }
.ch-msg-quote span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 360px; opacity: .85; }
.ch-msg-bubble.is-media { padding: 4px; background: transparent; box-shadow: none; }
.ch-msg.is-me .ch-msg-bubble.is-media { background: transparent; }
.ch-msg-bubble.is-media .ch-msg-time { right: 10px; bottom: 8px; padding: 2px 7px; border-radius: 99px; background: rgba(0, 0, 0, .45); color: #fff !important; }
.ch-msg-bubble.is-media .ch-attach { margin: 0; }
.ch-msg-bubble .ch-attach-file { background: rgba(255, 255, 255, .92); }
.ch-msg.is-me .ch-msg-bubble .ch-attach-file b { color: var(--ink); }
.ch-msg-text { overflow-wrap: anywhere; }
.ch-tick { display: inline-flex; margin-left: 3px; opacity: .7; vertical-align: -2px; }
.ch-tick .ch-i { width: 13px; height: 13px; stroke-width: 2.5; }
.ch-msg.is-seen .ch-tick { color: var(--ch-a); opacity: 1; }
.ch-seen-label { font-size: 11px; color: var(--muted); font-weight: 700; padding: 2px 6px 0; }
.ch-msg.is-flash .ch-msg-bubble { animation: ch-flash 1.5s; }
@keyframes ch-flash { 0%, 60% { box-shadow: 0 0 0 4px var(--ch-a); } 100% { box-shadow: var(--sh-1); } }
.ch-typing { display: inline-flex; align-items: center; gap: 3px; color: var(--ok) !important; font-weight: 700; }
.ch-typing i { width: 5px; height: 5px; border-radius: 50%; background: var(--ok); animation: ch-typing 1.2s infinite; }
.ch-typing i:nth-child(2) { animation-delay: .15s; }
.ch-typing i:nth-child(3) { animation-delay: .3s; margin-right: 3px; }

/* Groups */
.ch-group-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.ch-group-card { overflow: hidden; display: flex; flex-direction: column; transition: box-shadow .2s, transform .2s; }
.ch-group-card:hover { box-shadow: var(--sh-2); transform: translateY(-2px); }
.ch-group-cover { position: relative; display: block; height: 84px; background: radial-gradient(240px 120px at 100% 0%, color-mix(in srgb, var(--ch-a) 45%, transparent), transparent), linear-gradient(130deg, var(--c), color-mix(in srgb, var(--c) 55%, #000)) center/cover; }
.ch-group-cover[style] { background-size: cover; }
.ch-group-cover .ch-tag { position: absolute; top: 10px; left: 10px; background: rgba(255, 255, 255, .92); color: var(--ink); }
.ch-group-body { display: flex; flex-direction: column; gap: 4px; padding: 0 16px 16px; flex: 1; }
.ch-group-body > .ch-badge { margin-top: -24px; box-shadow: 0 0 0 4px #fff; margin-bottom: 6px; }
.ch-group-body b { color: var(--ink); font-size: 15px; line-height: 1.3; }
.ch-group-body small { color: var(--muted); font-size: 12.5px; font-weight: 600; }
.ch-group-body p { color: var(--muted); font-size: 13.5px; margin: 4px 0 10px; flex: 1; }
.ch-group-body .ch-btn { margin-top: auto; }
.ch-mygroups { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.ch-mygroup { padding: 16px; border-top: 4px solid var(--c); display: grid; gap: 14px; }
.ch-mygroup-main { display: flex; gap: 12px; align-items: center; color: inherit !important; }
.ch-mygroup-main > span { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-mygroup-main b { color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-mygroup-main small { color: var(--muted); font-size: 12.5px; }
.ch-mygroup-links { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.ch-mygroup-links a { display: grid; justify-items: center; gap: 3px; padding: 8px 4px; border-radius: 12px; background: var(--bg); color: var(--muted) !important; font-size: 11.5px; font-weight: 700; }
.ch-mygroup-links a:hover { background: var(--ch-p-100); color: var(--ch-p) !important; }
.ch-mygroup-links .ch-i { width: 19px; height: 19px; }
.ch-group-hero .ch-ava-stack.is-tight { gap: 0; }
.ch-ava-stack.is-tight .ch-ava { margin-left: -8px; box-shadow: 0 0 0 2px #fff; }
.ch-ava-stack.is-tight .ch-ava:first-child { margin-left: 0; }
.ch-tabs a .ch-i { width: 17px; height: 17px; }
.ch-locked { text-align: center; padding: 48px 24px; }
.ch-locked h2 { font-size: 20px; margin-bottom: 8px; }
.ch-locked p { color: var(--muted); max-width: 460px; margin: 0 auto; }
.ch-member-row { display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-top: 1px solid var(--line-2); }
.ch-member-row:first-child { border-top: 0; }
.ch-member-row > span:nth-child(2) { flex: 1; display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-member-row b { color: var(--ink); font-size: 14px; }
.ch-member-row small { color: var(--muted); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
.ch-photo-grid a { aspect-ratio: 1; border-radius: 12px; overflow: hidden; background: var(--line-2); }
.ch-photo-grid img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.ch-photo-grid a:hover img { transform: scale(1.05); }
.ch-seg-row { grid-auto-flow: column; }
.ch-seg-row span { flex-direction: row; justify-content: center; gap: 8px; }
.ch-seg-row .ch-i { width: 17px; height: 17px; }

/* Dashboard */
.ch-stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 20px; }
.ch-stat-tile { display: flex; gap: 14px; align-items: flex-start; padding: 18px; color: inherit !important; transition: box-shadow .2s, transform .2s; }
.ch-stat-tile:hover { box-shadow: var(--sh-2); transform: translateY(-2px); }
.ch-stat-ico { display: grid; place-items: center; width: 46px; height: 46px; flex: none; border-radius: 14px; background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-stat-ico.is-blue { background: var(--ch-p-100); color: var(--ch-p); }
.ch-stat-ico.is-red { background: var(--bad-bg); color: var(--bad); }
.ch-stat-ico.is-green { background: var(--ok-bg); color: var(--ok); }
.ch-stat-main { display: grid; gap: 2px; flex: 1; min-width: 0; }
.ch-stat-main small { color: var(--muted); font-size: 12.5px; font-weight: 600; }
.ch-stat-main b { color: var(--ink); font-size: 26px; font-weight: 800; letter-spacing: -.02em; line-height: 1.1; }
.ch-stat-main b em { font-size: 13px; font-style: normal; color: var(--muted); }
.ch-bar { display: block; height: 6px; border-radius: 6px; background: var(--line-2); overflow: hidden; margin: 6px 0 2px; }
.ch-bar i { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg, var(--ch-a), color-mix(in srgb, var(--ch-a) 60%, #f97316)); }
.ch-group-strip { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.ch-group-mini { display: grid; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: 14px; border-left: 4px solid var(--c); }
.ch-group-mini-top { display: flex; gap: 10px; align-items: center; color: inherit !important; }
.ch-group-mini-top > span { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-group-mini-top b { color: var(--ink); font-size: 13.5px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-group-mini-top small { color: var(--muted); font-size: 12px; }
.ch-group-mini-links { display: flex; gap: 6px; }
.ch-group-mini-links a { flex: 1; display: grid; place-items: center; height: 32px; border-radius: 9px; background: var(--bg); color: var(--muted) !important; }
.ch-group-mini-links a:hover { background: var(--ch-p-100); color: var(--ch-p) !important; }
.ch-group-mini-links .ch-i { width: 17px; height: 17px; }
.ch-dual { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.ch-mini-head { font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin: 0 0 4px; }
.ch-strength-card { border-color: color-mix(in srgb, var(--ch-a) 45%, #fff); }
.ch-strength-top { display: flex; gap: 14px; align-items: center; margin-bottom: 12px; }
.ch-strength-top > div { display: grid; }
.ch-strength-top b { color: var(--ink); }
.ch-strength-top small { color: var(--muted); font-size: 12.5px; }
.ch-ring { --pc: 0; position: relative; display: grid; place-items: center; width: 58px; height: 58px; flex: none; border-radius: 50%; background: conic-gradient(var(--ch-a) calc(var(--pc) * 1%), var(--line-2) 0); }
.ch-ring::before { content: ""; position: absolute; inset: 6px; border-radius: 50%; background: #fff; }
.ch-ring b { position: relative; font-size: 14px; color: var(--ink); }
.ch-checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.ch-checklist li { display: flex; align-items: center; gap: 10px; padding: 7px 8px; border-radius: 10px; font-size: 13.5px; font-weight: 600; }
.ch-checklist li:hover { background: var(--line-2); }
.ch-checklist .ch-i { width: 18px; height: 18px; padding: 2px; border-radius: 50%; border: 1.5px solid var(--line); color: var(--muted); }
.ch-checklist li.is-done .ch-i { background: var(--ok); border-color: var(--ok); color: #fff; }
.ch-checklist li.is-done a { color: var(--muted) !important; text-decoration: line-through; }
.ch-rank { font-style: normal; font-weight: 800; color: var(--ch-a-d); width: 16px; text-align: center; }

/* Leaderboard, badges, saved */
.ch-level-hero { display: flex; gap: 26px; align-items: center; flex-wrap: wrap; padding: 28px; margin-bottom: 22px; border-radius: 24px; color: rgba(255, 255, 255, .8); background: radial-gradient(400px 220px at 100% 0%, color-mix(in srgb, var(--ch-a) 40%, transparent), transparent), linear-gradient(135deg, var(--ch-p), var(--ch-p-d)); }
.ch-level-hero > div:last-child { flex: 1; min-width: 240px; }
.ch-level-hero h1 { color: #fff; font-size: 30px; margin-bottom: 6px; }
.ch-level-hero .ch-eyebrow { color: var(--ch-a); }
.ch-level-hero .ch-tag { background: rgba(255, 255, 255, .14); color: #fff; }
.ch-level-ring { --pc: 0; position: relative; display: grid; place-content: center; text-align: center; width: 120px; height: 120px; border-radius: 50%; background: conic-gradient(var(--ch-a) calc(var(--pc) * 1%), rgba(255, 255, 255, .14) 0); }
.ch-level-ring::before { content: ""; position: absolute; inset: 10px; border-radius: 50%; background: var(--ch-p-d); }
.ch-level-ring b, .ch-level-ring small { position: relative; }
.ch-level-ring b { color: #fff; font-size: 30px; line-height: 1; }
.ch-level-ring small { font-size: 12px; }
.ch-lb-row { display: flex; align-items: center; gap: 12px; padding: 12px 18px; border-top: 1px solid var(--line-2); color: inherit !important; }
.ch-lb-row:first-child { border-top: 0; }
.ch-lb-row:hover { background: var(--ch-p-50); }
.ch-lb-row.is-me { background: var(--ch-a-100); }
.ch-lb-row > em { width: 28px; text-align: center; font-style: normal; font-weight: 800; color: var(--muted); font-size: 15px; }
.ch-lb-row.is-top > em { font-size: 22px; }
.ch-lb-row > span:nth-child(3) { flex: 1; display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr); }
.ch-lb-row b { color: var(--ink); }
.ch-lb-row small { color: var(--muted); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-lb-row strong { font-size: 18px; color: var(--ink); min-width: 48px; text-align: right; }
.ch-board-top { overflow: hidden; }
.ch-earn { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.ch-earn li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 6px; border-radius: 10px; font-size: 13.5px; }
.ch-earn li.is-on { background: var(--ch-a-100); font-weight: 700; }
.ch-earn b { color: var(--ok); }
.ch-badge-list { display: grid; gap: 8px; }
.ch-badge-list span { display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 700; color: var(--ink); }
.ch-badge-list i { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: var(--ch-a-100); color: var(--ch-a-d); }
.ch-badge-list .ch-i { width: 17px; height: 17px; }

@media (max-width: 1024px) {
	.ch-stat-row { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
	.ch-stat-row { gap: 10px; }
	.ch-stat-tile { padding: 14px; gap: 10px; }
	.ch-stat-ico { width: 38px; height: 38px; border-radius: 12px; }
	.ch-stat-main b { font-size: 21px; }
	.ch-dual { grid-template-columns: 1fr; }
	.ch-composer .ch-file-list { margin-left: 0; }
	.ch-quick { overflow-x: auto; }
	.ch-quick a { min-width: 70px; }
	.ch-emoji-pick { grid-template-columns: repeat(6, 34px); }
	.ch-emoji-pick button { width: 34px; height: 34px; }
	.ch-compose-row .ch-tool { width: 38px; height: 44px; }
	.ch-seg-row { grid-auto-flow: row; }
	.ch-level-ring { width: 96px; height: 96px; }
}

/* =====================================================================
   v1.2 — Career Pro, CV builder, sessions, wallet, tickets, giving, ads
   ===================================================================== */
.ch-small { font-size: 13px; }
.ch-push-right { margin-left: auto; }
.ch-head-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.ch-tabs-scroll { overflow-x: auto; scrollbar-width: none; }
.ch-tabs-scroll::-webkit-scrollbar { display: none; }
.ch-ring.is-sm { width: 44px; height: 44px; }
.ch-ring.is-sm::before { inset: 5px; }
.ch-ring.is-sm b { font-size: 12px; }

/* PRO badge and plans */
.ch-pro-badge { display: inline-flex; align-items: center; height: 20px; padding: 0 7px; border-radius: 6px; background: linear-gradient(135deg, var(--ch-a), color-mix(in srgb, var(--ch-a) 60%, #ff7a00)); color: #2a1a00; font-size: 10.5px; font-weight: 800; letter-spacing: .08em; vertical-align: middle; }
.ch-pro-badge.is-big { height: 30px; padding: 0 12px; font-size: 13px; border-radius: 9px; }
.ch-pro-hero { text-align: center; padding: 24px 8px 8px; }
.ch-pro-hero h1 { margin: 14px 0 8px; font-size: clamp(24px, 4vw, 34px); color: var(--ink); letter-spacing: -.02em; }
.ch-pro-hero p { color: var(--muted); max-width: 560px; margin: 0 auto 16px; }
.ch-plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin: 8px 0 18px; }
.ch-plan { position: relative; display: grid; gap: 6px; padding: 22px 18px 18px; text-align: center; }
.ch-plan h3 { margin: 0; font-size: 15px; color: var(--muted); }
.ch-plan-price { font-size: 30px; color: var(--ink); letter-spacing: -.02em; }
.ch-plan small { color: var(--muted); margin-bottom: 10px; }
.ch-plan.is-best { border: 2px solid var(--ch-a); box-shadow: var(--sh-2); }
.ch-plan-flag { position: absolute; top: -12px; left: 50%; transform: translateX(-50%); padding: 3px 12px; border-radius: 99px; background: var(--ch-a); color: #2a1a00; font-size: 11.5px; font-weight: 800; white-space: nowrap; }
.ch-ticks { list-style: none; padding: 0; margin: 0 0 12px; display: grid; gap: 8px; }
.ch-ticks li { display: flex; gap: 8px; align-items: flex-start; }
.ch-ticks .ch-i { color: var(--ok); flex: none; margin-top: 3px; }

/* CV builder */
.ch-cv-page { max-width: 1320px; }
.ch-cv-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 470px); gap: 20px; align-items: start; }
.ch-cv-grid > * { min-width: 0; }
.ch-cv-form { display: grid; gap: 14px; }
.ch-cv-form h3, .ch-cv-design h3 { margin: 0 0 12px; font-size: 16px; color: var(--ink); }
.ch-cv-form textarea { width: 100%; }
.ch-cv-side { position: sticky; top: calc(var(--top) + 16px); display: grid; gap: 14px; }
.ch-cv-save { position: sticky; bottom: 0; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; background: rgba(255, 255, 255, .94); backdrop-filter: blur(8px); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--sh-2); }
.ch-rep { display: grid; gap: 10px; margin-bottom: 10px; }
.ch-rep-row { position: relative; display: flex; gap: 8px; padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--ch-p-50); }
.ch-rep-grid { flex: 1; min-width: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ch-rep-grid .ch-field { margin: 0; }
.ch-rep-grid .is-wide { grid-column: 1 / -1; }
.ch-rep-row [data-ch-row-del] { align-self: flex-start; }
.ch-suggest { margin-top: 10px; border: 1px dashed var(--ch-p-200); border-radius: 12px; padding: 10px 12px; background: var(--ch-p-50); }
.ch-suggest summary { display: flex; align-items: center; gap: 6px; cursor: pointer; font-weight: 700; color: var(--ch-p); font-size: 14px; }
.ch-suggest[open] summary { margin-bottom: 10px; }
.ch-suggest-item { display: block; width: 100%; margin-bottom: 8px; padding: 10px 12px; text-align: left; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--text); font: inherit; font-size: 13.5px; line-height: 1.5; cursor: pointer; }
.ch-suggest-item:hover { border-color: var(--ch-p); }
.ch-tpl-pick { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.ch-tpl-pick button { display: grid; gap: 5px; padding: 6px; border: 2px solid var(--line); border-radius: 10px; background: #fff; font: 600 11.5px/1.2 var(--font); color: var(--text); cursor: pointer; }
.ch-tpl-pick button.is-on { border-color: var(--ch-p); box-shadow: 0 0 0 3px var(--ch-p-100); }
.ch-tpl-pick button.is-locked { color: var(--muted); }
.ch-tpl-thumb { display: block; aspect-ratio: 210 / 297; border-radius: 5px; background: #fff; border: 1px solid var(--line); position: relative; overflow: hidden; }
.ch-tpl-thumb::before, .ch-tpl-thumb::after { content: ""; position: absolute; }
.ch-tpl-thumb.t-classic::before { left: 12%; right: 12%; top: 10%; height: 8%; border-bottom: 2px solid var(--ch-p); }
.ch-tpl-thumb.t-classic::after { left: 12%; right: 40%; top: 26%; bottom: 10%; background: repeating-linear-gradient(var(--line) 0 2px, transparent 2px 7px); }
.ch-tpl-thumb.t-modern::before { left: 0; right: 0; top: 0; height: 22%; background: var(--ch-p); }
.ch-tpl-thumb.t-modern::after { left: 0; width: 34%; top: 22%; bottom: 0; background: var(--ch-p-100); }
.ch-tpl-thumb.t-executive::before { left: 25%; right: 25%; top: 9%; height: 6%; background: var(--ink); border-radius: 2px; }
.ch-tpl-thumb.t-executive::after { left: 12%; right: 12%; top: 24%; bottom: 10%; background: repeating-linear-gradient(#cbd5e1 0 1px, transparent 1px 8px); }
.ch-tpl-thumb.t-creative::before { left: 0; right: 0; top: 0; height: 26%; background: linear-gradient(120deg, var(--ch-p), var(--ch-a)); }
.ch-tpl-thumb.t-creative::after { left: 42%; top: 34%; bottom: 10%; border-left: 2px solid var(--ch-p-200); }
.ch-swatches { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.ch-swatches button { width: 28px; height: 28px; border-radius: 50%; border: 3px solid #fff; background: var(--sw); box-shadow: 0 0 0 1px var(--line); cursor: pointer; }
.ch-swatches button.is-on { box-shadow: 0 0 0 2px var(--ink); }
.ch-cv-design .ch-switch { margin-top: 10px; }
.ch-cv-design .ch-switch small { word-break: break-all; }
.ch-cv-design .ch-hint .ch-i { width: 15px; height: 15px; vertical-align: -3px; color: var(--ch-a-d); }
.ch-cv-frame-wrap { position: relative; height: 0; padding-bottom: 141.4%; border-radius: var(--r); overflow: hidden; background: #e9edf3; box-shadow: var(--sh-1); }
.ch-cv-frame-wrap iframe { position: absolute; top: 0; left: 0; width: 210mm; height: 297mm; border: 0; transform-origin: 0 0; transform: scale(var(--cvs, .56)); }
.ch-cv-card { display: flex; align-items: center; gap: 12px; padding: 14px 16px; color: var(--text) !important; }
.ch-cv-card > span:nth-child(2) { flex: 1; min-width: 0; display: grid; gap: 2px; }
.ch-cv-card b { color: var(--ink); display: flex; align-items: center; gap: 6px; }
.ch-cv-card small { color: var(--muted); font-size: 12.5px; }
.ch-cv-card > .ch-i { color: var(--muted); }

/* Sessions marketplace */
.ch-sess-hero { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 22px 24px; margin-bottom: 16px; border-radius: var(--r); background: linear-gradient(120deg, var(--ch-p), var(--ch-p-d)); color: #fff; }
.ch-sess-hero h1 { margin: 0 0 4px; color: #fff; font-size: 24px; }
.ch-sess-hero p { margin: 0; color: rgba(255, 255, 255, .85); }
.ch-chip-filter { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; margin-bottom: 14px; scrollbar-width: none; }
.ch-chip-filter::-webkit-scrollbar { display: none; }
.ch-chip-filter .ch-chip { white-space: nowrap; }
.ch-chip.is-on { background: var(--ch-p); border-color: var(--ch-p); color: #fff !important; }
.ch-offer-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.ch-offer { display: flex; flex-direction: column; gap: 10px; padding: 18px; color: var(--text) !important; transition: transform .15s, box-shadow .15s; }
.ch-offer:hover { transform: translateY(-2px); box-shadow: var(--sh-2); }
.ch-offer-top { display: flex; align-items: center; gap: 10px; min-width: 0; }
.ch-offer-top > span { display: grid; min-width: 0; }
.ch-offer-top b { color: var(--ink); font-size: 14px; }
.ch-offer-top small { color: var(--muted); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-offer-title { color: var(--ink); font-size: 16px; line-height: 1.35; }
.ch-offer-desc { color: var(--muted); font-size: 13.5px; flex: 1; }
.ch-offer-foot { display: flex; align-items: center; gap: 10px; padding-top: 10px; border-top: 1px solid var(--line-2); font-size: 12.5px; color: var(--muted); }
.ch-offer-foot em { font-style: normal; font-weight: 800; color: var(--ch-p); font-size: 15px; margin-right: auto; }
.ch-offer-foot .ch-i { width: 14px; height: 14px; vertical-align: -2px; }
.ch-offer-view h1 { margin: 12px 0 8px; color: var(--ink); font-size: 26px; letter-spacing: -.01em; }
.ch-offer-facts { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-bottom: 14px; color: var(--muted); font-size: 14px; }
.ch-offer-facts span { display: inline-flex; align-items: center; gap: 6px; }
.ch-book-card { position: sticky; top: calc(var(--top) + 16px); display: grid; gap: 12px; }
.ch-book-price { font-size: 30px; color: var(--ink); letter-spacing: -.02em; }
.ch-booking { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--line-2); }
.ch-booking:last-child { border-bottom: 0; }
.ch-booking .ch-grow { display: grid; gap: 3px; min-width: 0; }
.ch-booking b { color: var(--ink); }
.ch-review { display: flex; gap: 10px; padding: 14px 16px; border-bottom: 1px solid var(--line-2); }
.ch-review:last-child { border-bottom: 0; }
.ch-review p { margin: 4px 0 0; font-size: 14px; }
.ch-stars { color: var(--ch-a); letter-spacing: 1px; font-size: 14px; }
.ch-rate { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 8px; }
.ch-rate input[type=text] { flex: 1; min-width: 160px; height: 36px; padding: 0 12px; border: 1px solid var(--line); border-radius: 10px; font: inherit; font-size: 14px; }
.ch-star-input { display: inline-flex; flex-direction: row-reverse; }
.ch-star-input input { position: absolute; opacity: 0; width: 1px; }
.ch-star-input label { font-size: 22px; line-height: 1; color: var(--line); cursor: pointer; padding: 0 1px; }
.ch-star-input label:hover, .ch-star-input label:hover ~ label, .ch-star-input input:checked ~ label { color: var(--ch-a); }

/* Wallet tickets */
.ch-ticket-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.ch-ticket { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 128px; border-radius: var(--r); background: var(--card); box-shadow: var(--sh-1); border: 1px solid var(--line); overflow: hidden; }
.ch-ticket-main { padding: 16px; display: grid; gap: 4px; min-width: 0; }
.ch-ticket-main b { color: var(--ink); }
.ch-ticket-main small { color: var(--muted); }
.ch-ticket-code { display: grid; place-content: center; text-align: center; gap: 4px; padding: 12px; background: var(--ch-p); color: #fff; border-left: 2px dashed rgba(255, 255, 255, .5); }
.ch-ticket-code small { opacity: .75; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; }
.ch-ticket-code b { font: 800 16px/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .06em; }
.ch-ticket-code em { font-style: normal; font-size: 11px; opacity: .85; }
.ch-ticket::before, .ch-ticket::after { content: ""; position: absolute; right: 120px; width: 16px; height: 16px; border-radius: 50%; background: var(--bg); }
.ch-ticket::before { top: -8px; }
.ch-ticket::after { bottom: -8px; }
.ch-ticket.is-used { opacity: .6; }
.ch-ticket.is-used .ch-ticket-code { background: var(--muted); }
.ch-buy-ticket { display: inline-flex; gap: 6px; align-items: center; margin-left: auto; }
.ch-buy-ticket select { height: 34px; padding: 0 8px; border: 1px solid var(--line); border-radius: 10px; font: inherit; background: #fff; }
.ch-checkin { display: grid; gap: 10px; justify-items: center; text-align: center; padding: 30px 22px; }
.ch-checkin h1 { margin: 6px 0 0; font-size: 22px; color: var(--ink); }
.ch-checkin form { display: grid; gap: 10px; width: 100%; max-width: 360px; margin-top: 8px; }
.ch-code-input { height: 58px; text-align: center; font: 800 24px/1 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .12em; text-transform: uppercase; border: 2px solid var(--line); border-radius: 14px; }
.ch-code-input:focus { border-color: var(--ch-p); outline: none; }

/* Giving */
.ch-give-hero { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 20px; align-items: center; padding: 26px; margin-bottom: 18px; border-radius: var(--r); background: radial-gradient(circle at 90% 10%, color-mix(in srgb, var(--ch-a) 35%, transparent), transparent 50%), linear-gradient(120deg, var(--ch-p), var(--ch-p-d)); color: #fff; }
.ch-give-hero h1 { margin: 0 0 8px; color: #fff; font-size: clamp(22px, 3.4vw, 30px); letter-spacing: -.02em; }
.ch-give-hero p { margin: 0; color: rgba(255, 255, 255, .85); }
.ch-give-hero .ch-eyebrow { color: var(--ch-a); }
.ch-dues { display: grid; gap: 8px; padding: 18px; color: var(--text); text-align: center; }
.ch-dues > b { font-size: 28px; color: var(--ink); }
.ch-dues small { color: var(--muted); }
.ch-campaign { overflow: hidden; margin-bottom: 16px; }
.ch-campaign-img { height: 190px; background: center / cover no-repeat var(--ch-p-100); }
.ch-campaign h2 { margin: 0 0 8px; font-size: 20px; color: var(--ink); }
.ch-goal { display: grid; grid-template-columns: 1fr auto; gap: 6px 10px; align-items: center; margin: 14px 0; font-size: 14px; }
.ch-goal .ch-bar { grid-column: 1 / -1; }
.ch-goal em { font-style: normal; font-weight: 800; color: var(--ok); }
.ch-give-form { display: grid; gap: 12px; padding-top: 14px; border-top: 1px solid var(--line-2); }
.ch-amounts { display: flex; flex-wrap: wrap; gap: 8px; }
.ch-amounts label { cursor: pointer; }
.ch-amounts label input { position: absolute; opacity: 0; }
.ch-amounts label span { display: inline-flex; align-items: center; height: 40px; padding: 0 14px; border: 1.5px solid var(--line); border-radius: 10px; font-weight: 700; font-size: 14px; color: var(--text); }
.ch-amounts label input:checked + span { border-color: var(--ch-p); background: var(--ch-p-50); color: var(--ch-p); }
.ch-amounts input[type=number] { width: 130px; height: 40px; padding: 0 12px; border: 1.5px solid var(--line); border-radius: 10px; font: inherit; }

/* Sponsored and featured */
.ch-sponsored { overflow: hidden; margin-bottom: 14px; border: 1px solid color-mix(in srgb, var(--ch-a) 40%, var(--line)); }
.ch-sponsored header { display: flex; align-items: center; gap: 8px; padding: 12px 16px 0; font-size: 13px; }
.ch-sponsored header b { color: var(--ink); }
.ch-spon-label { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 99px; background: var(--ch-a-100); color: var(--ch-a-d); font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.ch-spon-label .ch-i { width: 13px; height: 13px; }
.ch-spon-img { display: block; width: 100%; max-height: 320px; object-fit: cover; margin-top: 12px; }
.ch-spon-body { padding: 12px 16px 16px; display: grid; gap: 6px; justify-items: start; }
.ch-spon-body h3 { margin: 0; color: var(--ink); font-size: 16px; }
.ch-spon-body p { margin: 0; color: var(--text); font-size: 14px; }
.ch-sponsored.is-compact { margin: 10px 0; box-shadow: none; }
.ch-sponsored.is-compact .ch-spon-img { max-height: 160px; }
.ch-spon-review { display: grid; gap: 14px; }
.ch-job.is-featured { border: 2px solid var(--ch-a); box-shadow: 0 10px 30px -14px color-mix(in srgb, var(--ch-a) 60%, transparent); }
.ch-job-tags { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.ch-feature-opt { padding: 12px 14px; border: 1.5px dashed var(--ch-a); border-radius: 12px; background: var(--ch-a-100); }
.ch-adv-strip { display: flex; align-items: center; gap: 10px; padding: 12px 16px; margin-bottom: 14px; border-radius: 12px; background: var(--ch-a-100); color: var(--ch-a-d) !important; font-weight: 700; font-size: 14px; }
.ch-adv-strip span { flex: 1; }
.ch-res.is-hl { background: var(--ch-a-100); box-shadow: inset 3px 0 0 var(--ch-a); }
.ch-earn-note { display: flex; gap: 8px; align-items: flex-start; padding: 10px 12px; border-radius: 10px; background: var(--ok-bg); color: var(--ok) !important; }
.ch-earn-note .ch-i { flex: none; margin-top: 2px; }
.ch-club-sponsor { display: grid; gap: 4px; text-align: center; }
.ch-club-sponsor small { color: var(--muted); text-transform: uppercase; letter-spacing: .08em; font-size: 11px; font-weight: 700; }
.ch-club-sponsor b { color: var(--ink); font-size: 16px; }
.ch-club-sponsor a { display: inline-flex; justify-content: center; align-items: center; gap: 6px; }

/* Advertise (public) */
.ch-adv { display: grid; gap: 18px; padding-top: 24px; padding-bottom: 48px; max-width: 900px; }
.ch-adv-packs { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ch-adv-pack { display: grid; gap: 6px; align-content: start; }
.ch-adv-pack > .ch-i { width: 30px; height: 30px; color: var(--ch-p); }
.ch-adv-pack h3 { margin: 4px 0 0; color: var(--ink); }
.ch-adv-price { font-size: 26px; color: var(--ink); }
.ch-adv-price small { font-size: 14px; color: var(--muted); font-weight: 600; }
.ch-adv-pack ul { margin: 6px 0 0; padding-left: 18px; color: var(--text); font-size: 14px; }
.ch-adv-form { display: grid; gap: 14px; }
.ch-adv-form .is-wide { grid-column: 1 / -1; }
.ch-adv-form .ch-seg span { flex-direction: row; justify-content: center; }

@media (max-width: 1100px) {
	.ch-cv-grid { grid-template-columns: minmax(0, 1fr); }
	.ch-cv-side { position: static; grid-row: 1; }
	.ch-cv-frame-wrap { display: none; }
}
@media (max-width: 720px) {
	.ch-plans, .ch-adv-packs, .ch-give-hero { grid-template-columns: minmax(0, 1fr); }
	.ch-rep-grid { grid-template-columns: minmax(0, 1fr); }
	.ch-tpl-pick { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.ch-ticket { grid-template-columns: minmax(0, 1fr) 112px; }
	.ch-ticket::before, .ch-ticket::after { right: 104px; }
	.ch-buy-ticket { margin-left: 0; }
	.ch-book-card { position: static; }
	.ch-give-hero { padding: 20px; }
}

/* =====================================================================
   v1.3 — Marketplace
   ===================================================================== */
.ch-mk-hero-band { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 24px 26px; margin-bottom: 16px; border-radius: var(--r); background: radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--ch-a) 40%, transparent), transparent 55%), linear-gradient(120deg, var(--ch-p), var(--ch-p-d)); color: #fff; }
.ch-mk-hero-band h1 { margin: 0 0 4px; color: #fff; font-size: 26px; letter-spacing: -.02em; }
.ch-mk-hero-band p { margin: 0; color: rgba(255, 255, 255, .85); }
.ch-mk-filters { flex-wrap: wrap; }
.ch .ch-filters input.ch-mk-num { width: 120px; flex: none; }
.ch-mk-seller > .ch-ava, .ch-mk-seller > img { flex: none; }
.ch-mk-cats .ch-chip { gap: 6px; align-items: center; }
.ch-mk-cats .ch-chip .ch-i { width: 15px; height: 15px; }
.ch-mk-cats .ch-chip em { font-style: normal; font-size: 11.5px; opacity: .7; }
.ch-mk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 14px; margin-bottom: 18px; }
.ch-mk-card { display: flex; flex-direction: column; overflow: hidden; border-radius: var(--r); background: var(--card); border: 1px solid var(--line); box-shadow: var(--sh-1); color: var(--text) !important; transition: transform .15s, box-shadow .15s; }
.ch-mk-card:hover { transform: translateY(-2px); box-shadow: var(--sh-2); }
.ch-mk-img { position: relative; display: block; aspect-ratio: 1 / 1; background: var(--line-2); overflow: hidden; }
.ch-mk-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ch-mk-noimg { display: grid; place-items: center; width: 100%; height: 100%; color: var(--ch-p-200); background: var(--ch-p-50); }
.ch-mk-noimg .ch-i { width: 48px; height: 48px; }
.ch-mk-flag { position: absolute; top: 10px; left: 10px; display: inline-flex; align-items: center; gap: 4px; padding: 3px 9px; border-radius: 99px; background: var(--ch-a); color: #2a1a00; font-style: normal; font-size: 11.5px; font-weight: 800; box-shadow: var(--sh-1); }
.ch-mk-flag .ch-i { width: 13px; height: 13px; }
.ch-mk-flag.is-sold { background: var(--ink); color: #fff; }
.ch-mk-flag.is-held { left: auto; right: 10px; background: var(--warn-bg); color: var(--warn); }
.ch-mk-card.is-sold .ch-mk-img img { filter: grayscale(1); opacity: .6; }
.ch-mk-body { display: grid; gap: 3px; padding: 12px 14px 14px; min-width: 0; }
.ch-mk-price { color: var(--ink); font-size: 17px; letter-spacing: -.01em; }
.ch-mk-price small { font-size: 11.5px; font-weight: 600; color: var(--muted); }
.ch-mk-title { color: var(--text); font-size: 14px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ch-mk-meta { color: var(--muted); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.ch-mk-view { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 20px; align-items: start; margin-bottom: 24px; }
.ch-mk-main { display: grid; gap: 16px; min-width: 0; }
.ch-mk-main h2 { margin: 0 0 10px; font-size: 17px; color: var(--ink); }
.ch-mk-gallery { position: relative; overflow: hidden; padding: 0; }
.ch-mk-hero { display: block; background: #0d1b2e; }
.ch-mk-hero img { display: block; width: 100%; max-height: 560px; object-fit: contain; margin: 0 auto; }
.ch-mk-hero.ch-mk-noimg { height: 320px; background: var(--ch-p-50); }
.ch-mk-gallery.is-sold .ch-mk-hero img { opacity: .55; filter: grayscale(.8); }
.ch-mk-gallery .ch-mk-flag { top: 14px; left: 14px; font-size: 13px; padding: 5px 12px; }
.ch-mk-thumbs { display: flex; gap: 8px; padding: 10px; overflow-x: auto; }
.ch-mk-thumbs button { flex: none; width: 68px; height: 68px; padding: 0; border: 2px solid transparent; border-radius: 10px; overflow: hidden; background: none; cursor: pointer; }
.ch-mk-thumbs button.is-on { border-color: var(--ch-p); }
.ch-mk-thumbs img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ch-mk-side { position: sticky; top: calc(var(--top) + 16px); display: grid; gap: 14px; }
.ch-mk-buy { display: grid; gap: 8px; }
.ch-mk-buy h1 { margin: 4px 0 0; font-size: 21px; line-height: 1.3; color: var(--ink); letter-spacing: -.01em; }
.ch-mk-bigprice { font-size: 30px; color: var(--ch-p); letter-spacing: -.02em; }
.ch-mk-facts { list-style: none; padding: 10px 0; margin: 4px 0; display: grid; gap: 7px; border-top: 1px solid var(--line-2); border-bottom: 1px solid var(--line-2); font-size: 14px; color: var(--text); }
.ch-mk-facts li { display: flex; align-items: center; gap: 8px; }
.ch-mk-facts .ch-i { width: 17px; height: 17px; color: var(--muted); }
.ch-mk-actions { display: grid; gap: 8px; }
.ch-mk-actions .is-danger { color: var(--bad); }
.ch-mk-mini { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
.ch-mk-seller { display: flex; align-items: center; gap: 12px; padding: 14px 16px; color: var(--text) !important; }
.ch-mk-seller > span { flex: 1; display: grid; min-width: 0; }
.ch-mk-seller small { color: var(--muted); font-size: 11.5px; text-transform: uppercase; letter-spacing: .06em; font-weight: 700; }
.ch-mk-seller b { color: var(--ink); display: flex; align-items: center; gap: 6px; }
.ch-mk-seller em { font-style: normal; color: var(--muted); font-size: 12.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ch-mk-safety h3 { display: flex; align-items: center; gap: 6px; margin: 0 0 8px; font-size: 14px; color: var(--ok); }
.ch-mk-safety ul { margin: 0; padding-left: 18px; font-size: 13px; color: var(--text); display: grid; gap: 4px; }
.ch-mk-quick { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.ch-mk-quick .ch-chip { cursor: pointer; font: inherit; font-size: 13px; font-weight: 600; }
.ch-mk-drop { display: grid; justify-items: center; gap: 4px; padding: 22px; border: 2px dashed var(--ch-p-200); border-radius: 14px; background: var(--ch-p-50); color: var(--ch-p); text-align: center; cursor: pointer; }
.ch-mk-drop .ch-i { width: 30px; height: 30px; }
.ch-mk-drop small { color: var(--muted); }
.ch-mk-drop.is-drag { border-color: var(--ch-p); background: var(--ch-p-100); }
.ch-mk-edit-photos { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.ch-mk-edit-photos label { display: grid; gap: 4px; width: 96px; font-size: 12px; color: var(--muted); cursor: pointer; }
.ch-mk-edit-photos img { width: 96px; height: 96px; object-fit: cover; border-radius: 10px; border: 1px solid var(--line); }
.ch-mk-form { display: grid; gap: 14px; }

@media (max-width: 1024px) {
	.ch-mk-view { display: flex; flex-direction: column; gap: 16px; }
	.ch-mk-main { display: contents; }
	.ch-mk-gallery { order: 1; }
	.ch-mk-side { order: 2; position: static; }
	.ch-mk-main > section { order: 3; }
}
@media (max-width: 720px) {
	.ch-mk-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
	.ch-mk-body { padding: 10px 11px 12px; }
	.ch-mk-price { font-size: 15px; }
	.ch-mk-hero-band { padding: 20px; }
	.ch-mk-hero-band .ch-btn { width: 100%; }
	.ch .ch-filters input.ch-mk-num { width: calc(50% - 5px); }
}
