/* Dormy: warm campus identity. Keep the existing layouts and interactions. */
body.product-active {
  --bg: #fff8ee;
  --surface: #fffcf7;
  --surface-2: #ffebe2;
  --ink: #2c211c;
  --muted: #76645c;
  --subtle: #76645c;
  --line: #eeddd0;
  --brand: #b83f38;
  --brand-strong: #9e332e;
  --brand-soft: #ffebe2;
  --left: 238px;
  --header: 78px;
  color: var(--ink);
  background: var(--bg);
  font-family: 'DM Sans', sans-serif;
}
body.product-active :is(h1,h2,h3,.brand,.section-title) { font-family: Nunito, 'DM Sans', sans-serif; }
body.product-active .topbar {
  background: rgba(255,250,244,.96);
  border-color: var(--line);
  border-radius: 0 0 22px 22px;
  box-shadow: 0 4px 24px rgba(87,53,35,.055);
  color: var(--ink);
}
body.product-active .topbar .brand { color: var(--ink); }
body.product-active .topbar .brand { position: relative; min-width: 184px; height: 54px; }
body.product-active .brand-image { width: 184px; height: 54px; object-fit: contain; mix-blend-mode: multiply; }
body.product-active .topbar .brand[data-dormy-ready="true"] .brand-image { clip-path: inset(0 0 0 35.4166666667%); }
body.product-active .dormy-compact-logo { display: none; }
body.product-active .topbar .brand .dormy-mascot-host { position: absolute; inset: 0 auto 0 0; width: 64px; display: grid; place-items: center; pointer-events: none; }
body.product-active .dormy-mascot-host canvas { display: block; width: 100%; height: 54px; background: var(--surface); }
body.product-active .founder-brand .brand > span { display: none; }
body.product-active .top-actions .icon-button { color: var(--ink); }
body.product-active .top-actions .icon-button:hover { background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .global-search {
  max-width: 620px; height: 48px; background: #fffdf9;
  border: 1px solid var(--line); border-radius: 24px;
  box-shadow: 0 2px 10px rgba(85,55,38,.045);
}
body.product-active .global-search:focus-within { border-color: var(--brand); box-shadow: 0 0 0 3px #f4d1c8; }
body.product-active .app-shell { max-width: 1510px; }
body.product-active .left-rail { padding: 22px 14px 30px 22px; background: transparent; }
body.product-active .nav-stack { gap: 5px; }
body.product-active .nav-link { min-height: 47px; padding: 0 14px; border-radius: 12px; color: var(--ink); font-size: .88rem; font-weight: 750; }
body.product-active .nav-link .icon { width: 20px; height: 20px; }
body.product-active .nav-link:hover { background: #fff1ea; color: var(--brand-strong); }
body.product-active .nav-link.active { background: #fce5dd; color: var(--brand-strong); }
body.product-active .nav-link.active .nav-count { background: #f7cfc5; }
body.product-active .rail-section { border-color: var(--line); }
body.product-active .rail-heading > span { color: var(--subtle); }
body.product-active .main-content { max-width: 1180px; padding: 30px clamp(20px,3vw,48px) 80px; }
body.product-active .main-content:not(.messages-view):not(.token-view):has(.home-page) { --content-width: 1100px; }
body.product-active .page-header h1 { color: var(--ink); font-size: 2.25rem; line-height: 1.08; }
body.product-active .page-header p { color: var(--muted); font-size: .9rem; }
body.product-active .eyebrow { color: var(--brand); font-size: .7rem; font-weight: 800; letter-spacing: .08em; }
body.product-active .button.primary, body.product-active .button.primary:hover,
body.product-active .home-feed-filter.active, body.product-active .home-quick-reply button {
  border-color: var(--brand); background: var(--brand); color: white;
}
body.product-active .button.primary:hover, body.product-active .home-quick-reply button:hover { background: var(--brand-strong); }
body.product-active .button { min-height: 44px; border-radius: 10px; }
body.product-active .card, body.product-active .home-person,
body.product-active .home-pulse .pulse-card, body.product-active .home-page [data-home-post] {
  border-color: var(--line); border-radius: 16px; background: var(--surface);
  box-shadow: 0 3px 16px rgba(87,53,35,.035);
}
body.product-active .home-heading { margin-bottom: 20px; }
body.product-active .home-heading h1 { font-size: clamp(2.25rem,3vw,2.9rem); font-weight: 900; letter-spacing: -.055em; }
body.product-active .home-page #post-form { padding: 17px 20px; margin-bottom: 24px; border-radius: 18px; }
body.product-active .campus-catch-up,
body.product-active .catch-up-card { border-color: var(--line); background: var(--surface); }
body.product-active .catch-up-card:hover { border-color: var(--brand); box-shadow: 0 5px 16px rgba(87,53,35,.09); }
body.product-active .home-page #post-body { background: #fffdfa; border-radius: 13px; }
body.product-active .home-page #post-body:focus { border-color: var(--brand); box-shadow: 0 0 0 3px #f8d5cd; }
body.product-active .home-page #post-form .composer-bottom { border-color: var(--line); }
body.product-active :is(.post-image-button,.home-page select,.home-topic-filter select) { border-color: var(--line); border-radius: 10px; background: #fffaf6; color: var(--ink); }
body.product-active .home-section-title h2, body.product-active .feed-section-head h2 { color: var(--ink); font: 900 1rem/1.25 Nunito,sans-serif; }
body.product-active .home-section-title button { color: var(--brand-strong); font-size: .77rem; }
body.product-active .home-people-list { gap: 12px; }
body.product-active .home-person { min-height: 82px; padding: 11px 13px; }
body.product-active .home-person-profile .avatar { width: 42px; height: 42px; border-radius: 12px; }
body.product-active .home-person-profile strong { font-size: .78rem; }
body.product-active .home-person-follow { border-color: #e3a39a; background: #fffaf6; color: var(--brand-strong); }
body.product-active .home-person-follow:hover { background: var(--brand); color: white; }
body.product-active .home-person-follow[data-following="true"] { border-color: var(--line); color: var(--muted); }
body.product-active .people-grid .person-card { border-color: var(--line); background: var(--surface); box-shadow: 0 2px 8px rgba(87,53,35,.035); }
body.product-active .people-grid .person-card:hover { border-color: #e3a39a; box-shadow: 0 10px 26px rgba(87,53,35,.08); }
body.product-active .people-grid .person-identity .follow-button { border-color: #eac7bb; background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .people-grid .person-identity .follow-button:hover { border-color: var(--brand); background: #f8dcd2; color: var(--brand-strong); }
body.product-active .people-grid .person-identity .follow-button[data-following="true"] { border-color: var(--line); background: #fffaf6; color: var(--muted); }
body.product-active .people-grid .person-identity .follow-button[data-following="true"]:before { color: var(--brand); }
body.product-active .people-grid .person-identity .follow-button[data-following="true"]:hover { border-color: #eac7bb; background: var(--brand-soft); }
body.product-active .people-grid .person-details .follows-you { border-color: var(--line); background: #fff2eb; color: var(--brand-strong); }
body.product-active .people-grid .person-interests span { background: #fff0e8; color: var(--brand-strong); }
body.product-active .people-grid .person-card-footer { border-color: var(--line); }
body.product-active .people-grid .person-actions .button.primary { color: var(--brand-strong); }
body.product-active .people-grid .person-actions .button.primary:hover { border-color: #eac7bb; background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .home-feed-filter { border-color: var(--line); border-radius: 24px; background: #fffdf9; color: var(--ink); }
body.product-active .home-feed-filter:hover { border-color: var(--brand); color: var(--brand-strong); }
body.product-active .post-topic { border-color: #f0c6bb; background: #fff2ec; color: var(--brand-strong); }
body.product-active .mobile-nav { background: #fffaf4; border-color: var(--line); }
body.product-active .mobile-link.active { color: var(--brand-strong); }
body.product-active :is(button,input,textarea,select,a):focus-visible { outline-color: var(--brand); }
.boot-screen { background: #fff8ee; color: #2c211c; }
.boot-content p { color: #76645c; }

/* Vibe inherited jade colors from its earlier standalone design. */
body.product-active .prom-page { --prom-ink: var(--ink); --prom-accent: var(--brand); --prom-line: var(--line); color: var(--ink); }
body.product-active .prom-page .prom-hero .eyebrow,
body.product-active .prom-page .prom-explore-heading .eyebrow,
body.product-active .prom-page .prom-card-heading .eyebrow,
body.product-active .prom-page .prom-panel .eyebrow,
body.product-active .prom-page .prom-join-panel .eyebrow { color: var(--brand-strong); }
body.product-active .prom-page .prom-hero p,
body.product-active .prom-page .prom-hero-action>span:last-child,
body.product-active .prom-page .prom-explore-heading p,
body.product-active .prom-page .prom-join-panel p,
body.product-active .prom-page .prom-inbox-empty p,
body.product-active .prom-page .prom-activity-empty,
body.product-active .prom-page .prom-request-copy small,
body.product-active .prom-page .prom-card-heading .meta,
body.product-active .prom-page .prom-candidate-bio,
body.product-active .prom-page .vibe-privacy-note { color: var(--muted); }
body.product-active .prom-page .prom-hero-action .button.primary,
body.product-active .prom-page .prom-join-panel>.button { background: var(--brand); border-color: var(--brand); color: #fff; }
body.product-active .prom-page .prom-hero-action .button.primary:hover,
body.product-active .prom-page .prom-join-panel>.button:hover { background: var(--brand-strong); border-color: var(--brand-strong); }
body.product-active .prom-page .prom-hero-status,
body.product-active .prom-page .prom-count,
body.product-active .prom-page .prom-empty-mark,
body.product-active .prom-page .prom-empty-icon,
body.product-active .prom-page .prom-how>div>span { border-color: #f0cbbf; background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .prom-page .prom-how>div,
body.product-active .prom-page .prom-empty,
body.product-active .prom-page .prom-panel,
body.product-active .prom-page .prom-join-panel,
body.product-active .prom-page .vibe-card { border-color: var(--line); background: var(--surface); box-shadow: 0 7px 22px rgba(87,53,35,.05); }
body.product-active .prom-page .prom-how strong,
body.product-active .prom-page .prom-inbox-empty strong,
body.product-active .prom-page .prom-request-copy strong,
body.product-active .prom-page .prom-panel-heading h2,
body.product-active .prom-page .prom-activity-heading h2 { color: var(--ink); }
body.product-active .prom-page .prom-how p { color: var(--muted); }
body.product-active .prom-page .prom-activity-group+.prom-activity-group,
body.product-active .prom-page .prom-request-row { border-color: var(--line); }
body.product-active .prom-page .prom-activity-heading h2 span { color: var(--brand-strong); }
body.product-active .prom-page .prom-explore-heading .button,
body.product-active .prom-page .vibe-actions .button.secondary { border-color: var(--line); background: #fffaf6; color: var(--brand-strong); }
body.product-active .prom-page .vibe-actions .button.secondary:hover { background: var(--brand-soft); }
body.product-active .prom-page .vibe-card .vibe-visual.no-photo,
body.product-active .prom-page .vibe-card .vibe-visual { background: #9e5549; }
body.product-active .prom-page .vibe-intent-badge,
body.product-active .prom-page .prom-card-count { background: rgba(76,38,32,.72); }
body.product-active .prom-page .interest-pill,
body.product-active .prom-page .prom-common-ground,
body.product-active .prom-page .vibe-music-fit,
body.product-active .prom-page .vibe-listening { border-color: #efcfc3; background: #fff0e9; color: var(--brand-strong) !important; }
body.product-active .prom-page .prom-common-ground>span,
body.product-active .prom-page .prom-common-ground strong,
body.product-active .prom-page .prom-view-profile { color: var(--brand-strong); }
body.product-active .prom-page .prom-common-ground strong { background: #fffcf7; }
body.product-active .prom-page .vibe-card:hover { box-shadow: 0 24px 45px rgba(87,53,35,.12); }
body.product-active .prom-page .prom-join-steps { color: var(--muted); }
body.product-active .vibe-settings .prom-form-intro,
body.product-active .vibe-settings .form-field small,
body.product-active .vibe-settings .form-field em,
body.product-active .vibe-photo-actions p,
body.product-active .vibe-photo-actions>small { color: var(--muted); }
body.product-active .vibe-photo-row,
body.product-active .prom-music-optional { border-color: var(--line); background: var(--surface); }
body.product-active .vibe-photo-preview { background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .vibe-photo-label,
body.product-active .prom-music-optional summary { color: var(--ink); }

/* Messages use the same warm palette as the rest of Dormy. */
body.product-active .messages-page .messages-layout { border-color: var(--line); background: var(--surface); box-shadow: 0 14px 38px rgba(87,53,35,.06); }
body.product-active .messages-page .message-list { border-color: var(--line); background: #fffbf8; }
body.product-active .messages-page .message-list-heading>small,
body.product-active .messages-page .message-date,
body.product-active .messages-page .message-empty-icon { background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .messages-page .message-search { border-color: var(--line); color: var(--muted); }
body.product-active .messages-page .message-search:focus-within { border-color: var(--brand); box-shadow: 0 0 0 3px #f6d4c9; }
body.product-active .messages-page .conversation-row:hover { background: #fff0e9; }
body.product-active .messages-page .conversation-row.active { background: #fce9e1; box-shadow: inset 3px 0 var(--brand), 0 4px 14px rgba(184,63,56,.08); }
body.product-active .messages-page .conversation-preview.is-typing,
body.product-active .messages-page .message-presence-status.is-online,
body.product-active .messages-page .message-presence-status.is-typing { color: var(--brand-strong); }
body.product-active .messages-page .message-presence-status.is-online::before,
body.product-active .messages-page .message-presence-status.is-typing::before { background: var(--brand); box-shadow: 0 0 0 2px #fce9e1; }
body.product-active .messages-page .message-panel,
body.product-active .messages-page .message-header { background: var(--surface); }
body.product-active .messages-page .message-header { border-color: var(--line); }
body.product-active .messages-page .message-menu summary:hover,
body.product-active .messages-page .message-menu[open] summary { background: var(--brand-soft); }
body.product-active .messages-page .message-thread { background: linear-gradient(180deg,#fff9f2,#fffcf8); scrollbar-color: #e9c9bb transparent; }
body.product-active .messages-page .message-bubble.mine { background: linear-gradient(145deg,#c74c43,#aa3731); box-shadow: 0 4px 13px rgba(184,63,56,.17); }
body.product-active .messages-page .message-bubble.theirs,
body.product-active .messages-page .message-bubble:has(>.message-image) { border-color: var(--line); box-shadow: 0 2px 9px rgba(87,53,35,.06); }
body.product-active .messages-page .message-bubble.editing { border-color: var(--line); box-shadow: 0 9px 28px rgba(87,53,35,.09); }
body.product-active .messages-page .message-edit-form label,
body.product-active .messages-page .message-edit-cancel { color: var(--ink); }
body.product-active .messages-page .message-edit-form textarea,
body.product-active .messages-page .message-edit-cancel { border-color: var(--line); background: var(--surface); }
body.product-active .messages-page .message-edit-cancel:hover,
body.product-active .messages-page .message-actions button:hover,
body.product-active .messages-page .message-bubble:has(>.message-image) .message-actions summary:hover { background: var(--brand-soft); }
body.product-active .messages-page #message-form { border-color: var(--line); background: var(--surface); }
body.product-active .messages-page #message-form .message-tool { color: var(--muted); }
body.product-active .messages-page #message-form .message-tool:hover,
body.product-active .messages-page #message-form .message-tool:focus-visible { background: var(--brand-soft); color: var(--brand-strong); }
body.product-active .messages-page #message-form .message-compose-row textarea[name="message"] { border-color: var(--line); background: #fffefd; }
body.product-active .messages-page #message-form .message-compose-row textarea[name="message"]:focus,
body.product-active .messages-page #message-form .message-compose-row textarea[name="message"]:focus-visible { border-color: var(--brand); box-shadow: 0 0 0 3px #f6d4c9; }
body.product-active .messages-page #message-form .message-send { box-shadow: 0 4px 12px rgba(184,63,56,.18); }
body.product-active .messages-page #message-form .message-send:active { box-shadow: 0 1px 4px rgba(184,63,56,.18); }
body.product-active .grouped-section-tabs { border-color: var(--line); background: var(--brand-soft); }
body.product-active .grouped-section-tabs button[aria-current="page"] { color: var(--brand-strong); background: var(--surface); box-shadow: 0 1px 5px rgba(87,53,35,.1); }
body.product-active .grouped-section-tabs button:hover:not([aria-current="page"]) { background: #f9dcd1; color: var(--brand-strong); }
body.product-active .grouped-section-tabs button:focus-visible { outline-color: var(--brand); }

/* The same identity on the public entry and university email form. */
.landing-page .masthead { background: #fffaf4; border-color: #ebdfd5; }
.landing-page .masthead .brand img { width: 174px; height: 48px; object-fit: contain; mix-blend-mode: multiply; }
.landing-page .masthead .brand span { display: none; }
.landing-page { --pink: #b83f38; --ivory: #fffcf7; --ink: #2c211c; --muted: #76645c; --line: #eeddd0; background: #fff8ee; color: var(--ink); font-family: 'DM Sans', sans-serif; }
.landing-page .masthead { background: #fffcf7; border-bottom: 1px solid var(--line); box-shadow: 0 4px 24px #2c211c08; }
.landing-page .masthead .wrap { height: 78px; }
.landing-page .auth-nav button { min-height: 42px; padding-inline: 15px; border-radius: 10px; color: var(--ink); font-size: 13px; font-weight: 700; }
.landing-page .auth-nav button:hover { background: #ffebe2; }
.landing-page .auth-nav .signup { border-color: #b83f38; background: #b83f38; color: #fff; }
.landing-page .auth-nav .signup:hover { border-color: #9e332e; background: #9e332e; color: #fff; }
.landing-page .site-grid { padding-block: 60px 78px; }
.landing-page .public-home-hero { display: grid; grid-template-columns: minmax(0,1fr) 290px; align-items: center; gap: 42px; max-width: none; }
.landing-page .public-home-kicker { display: block; margin-bottom: 15px; color: #9e332e; font-size: 12px; font-weight: 800; letter-spacing: .14em; }
.landing-page .public-home-hero h1 { font-family: Nunito, 'DM Sans', sans-serif; color: #2c211c; font-weight: 900; }
.landing-page .public-home-hero .title-accent { color: #b83f38; }
.landing-page .public-home-hero .lead { color: #62534b; }
.landing-page .public-home-primary { border-color: #b83f38; background: #b83f38; color: #fff; font-family: 'DM Sans', sans-serif; }
.landing-page .public-home-primary:hover { border-color: #9e332e; background: #9e332e; }
.landing-page .public-home-secondary { color: #9e332e; text-decoration-color: #e7ada0; }
.landing-page .public-home-secondary:hover { color: #832b28; }
.landing-page .public-home-trust { color: #76645c; }
.landing-page .public-home-art { display: grid; place-items: center; width: min(100%,290px); aspect-ratio: 1; border: 1px solid #f0ddd0; border-radius: 48px; background: radial-gradient(circle at 40% 35%, #fffdf7, #ffe8da); transform: rotate(-5deg); }
.landing-page .public-home-art img { display: block; width: 84%; height: 84%; object-fit: contain; transform: rotate(5deg); }
.landing-page .site-footer { border-color: var(--line); color: #76645c; }
.landing-page :focus-visible { outline-color: #9e332e; }
.dormy-skip { position: fixed; left: 16px; top: -80px; z-index: 200; padding: 12px 16px; background: #fffcf7; color: #9e332e; border: 2px solid #9e332e; border-radius: 8px; }
.dormy-skip:focus { top: 12px; }
#auth-panel { --brand: #c84942; --brand-strong: #a93230; --brand-soft: #fce6df; --ink: #2d211e; --muted: #695f5b; --line: #ebdfd5; }
#auth-panel .auth-masthead { background: #fff8ef; border-color: var(--line); }
#auth-panel .auth-home, #auth-panel .auth-site-nav a { color: var(--ink); }
#auth-panel .button.primary { background: var(--brand); border-color: var(--brand); color: #fff; }
#auth-panel .button.primary:hover { background: var(--brand-strong); }
#auth-panel { --brand: #b83f38; --brand-strong: #9e332e; --brand-soft: #ffebe2; --ink: #2c211c; --muted: #76645c; --line: #eeddd0; background: #fff8ee; font-family: 'DM Sans', sans-serif; }
#auth-panel .auth-masthead { background: #fffcf7; border-bottom: 1px solid var(--line); }
#auth-panel .auth-home { font-family: Nunito, 'DM Sans', sans-serif; color: var(--ink); }
#auth-panel .auth-layout { background: #fff8ee; padding-block: 56px 72px; }
#auth-panel .auth-box { width: min(100%,480px); padding: 28px; border: 1px solid var(--line); border-radius: 22px; background: #fffcf7; box-shadow: 0 12px 40px #2c211c0b; }
#auth-panel .auth-mascot { display: block; margin: 0 0 16px; width: 72px; height: 72px; }
#auth-panel .eyebrow, #auth-panel .auth-legal a, #auth-panel .back-button { color: var(--brand); }
#auth-panel #email-step h1, #auth-panel #otp-step h1 { color: var(--ink); font-family: Nunito, 'DM Sans', sans-serif; font-weight: 900; }
#auth-panel #email-step>p:not(.auth-trust):not(.auth-legal), #auth-panel #otp-step>p { color: var(--muted); }
#auth-panel .form-field>span { color: var(--ink); }
#auth-panel .form-field input, #auth-panel .username-control { border-color: var(--line); border-radius: 10px; background: #fffefd; }
#auth-panel .form-field input:focus, #auth-panel .username-control:focus-within { border-color: var(--brand); box-shadow: 0 0 0 3px #f6d4c9; }
#auth-panel input:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
#auth-panel .auth-trust { border-color: var(--line); color: var(--muted); }
#auth-panel .auth-legal { color: var(--muted); }

@media (max-width: 1000px) {
  body.product-active { --left: 190px; --header: 68px; }
  body.product-active .left-rail { padding-inline: 10px; }
  body.product-active .main-content { padding-inline: 22px; }
}
@media (max-width: 780px) {
  body.product-active { --header: 58px; }
  body.product-active .topbar { border-radius: 0 0 15px 15px; }
  body.product-active .topbar .brand { min-width: 42px; width: 42px; height: 44px; }
  body.product-active .brand-image { display: none; }
  body.product-active .dormy-compact-logo { display: block; width: 42px; height: 42px; object-fit: contain; }
  body.product-active .topbar .brand .dormy-mascot-host { width: 42px; }
  body.product-active .dormy-mascot-host canvas { height: 42px; }
  body.product-active .topbar .brand[data-dormy-ready="true"] .dormy-compact-logo { opacity: 0; }
  body.product-active .main-content { padding: 22px 16px 92px; }
  body.product-active .page-header h1 { font-size: 2rem; }
  body.product-active .home-people-list { gap: 10px; }
  body.product-active .home-page #post-form { padding: 13px; }
  .landing-page .public-home-hero { grid-template-columns: 1fr; }
  .landing-page .public-home-art { display: none; }
  .landing-page .masthead .wrap { height: 64px; }
  .landing-page .auth-nav button { min-height: 40px; padding-inline: 10px; }
  #auth-panel .auth-layout { padding: 28px 16px 60px; }
  #auth-panel .auth-box { padding: 23px; }
}
@media (max-width: 360px) {
  .landing-page .masthead .brand img { width: 135px; height: 42px; }
  .landing-page .auth-nav button { padding-inline: 7px; font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  body.product-active .nav-link, body.product-active .mobile-link { transition: none; }
  body.product-active .topbar .brand .dormy-mascot-host { display: none; }
}
