/* S1 base: the page reset and the shell chrome layout (rail, topbar, search, avatar, phone dock, sign-in overlay). s1-shell.css and
 * s1-nav.css skin it; there are no page or component styles here: every page is S1 kit markup (s1-kit.css and the s1-*.css sheets). */
:root {
  color-scheme: light;
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --bg: #f4f5f3;
  --surface: #ffffff;
  --surface-muted: #f9f9f7;
  --ink: #26313b;
  --muted: #5f6871;
  --faint: #6f777e;
  --line: #e2e4e1;
  --accent: #9d2948;
  --accent-dark: #7f1736;
  --accent-soft: #f6e9ed;
  --green: #4d723e;
  --green-soft: #edf5e9;
  --ochre: #7b5a12;
  --ochre-soft: #f7f0df;
  --blue: #526f86;
  --blue-soft: #eaf0f5;
  --teal: #3f716b;
  --teal-soft: #e6f1ef;
  --olive: #5f7129;
  --olive-soft: #eef2e4;
  --radius-xl: 24px;
  --radius-lg: 20px;
  --radius-md: 15px;
  --shadow: 0 12px 34px rgba(43, 50, 54, 0.07), 0 2px 5px rgba(43, 50, 54, 0.04);
  --shadow-hover: 0 16px 40px rgba(43, 50, 54, 0.11), 0 3px 8px rgba(43, 50, 54, 0.06);
  --focus-ring: #7f1736;
  --control-border: #858c87;
  --ease: 180ms cubic-bezier(0.2, 0.75, 0.25, 1);
}

* {
  box-sizing: border-box;
}

html {
  min-width: 320px;
  background: var(--bg);
}

body {
  margin: 0;
  min-height: 100vh;
  background:
    radial-gradient(circle at 85% 10%, rgba(255, 255, 255, 0.95), transparent 26rem),
    var(--bg);
  color: var(--ink);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 15px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}

button,
input {
  font: inherit;
}

button {
  color: inherit;
}

button,
[role="button"] {
  -webkit-tap-highlight-color: transparent;
}

button:focus-visible,
input:focus-visible,
a:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--focus-ring);
  outline-offset: 3px;
}

.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 1000;
  transform: translateY(-150%);
  border-radius: 10px;
  background: var(--ink);
  color: white;
  padding: 10px 14px;
  text-decoration: none;
}

.skip-link:focus {
  transform: none;
}

.app-shell {
  display: grid;
  grid-template-columns: 118px minmax(0, 1fr);
  min-height: 100vh;
}

.rail {
  position: sticky;
  top: 18px;
  display: flex;
  flex-direction: column;
  align-self: start;
  height: calc(100vh - 36px);
  margin: 18px 0 18px 18px;
  overflow: hidden;
  border: 1px solid rgba(213, 216, 213, 0.85);
  border-radius: var(--radius-xl);
  background: rgba(255, 255, 255, 0.91);
  box-shadow: var(--shadow);
  backdrop-filter: blur(16px);
  z-index: 20;
}

.brand {
  display: grid;
  place-items: center;
  width: 100%;
  height: 112px;
  border: 0;
  background: transparent;
  cursor: pointer;
}

.brand-mark {
  display: grid;
  place-items: center;
  width: 54px;
  height: 62px;
  border: 0;
  background: transparent;
  color: white;
}

.workspace {
  width: 100%;
  max-width: 1580px;
  margin: 0 auto;
  padding: 18px 15px 54px 29px;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 72px;
  margin-bottom: 24px;
  gap: 24px;
}

.eyebrow {
  margin: 0 0 3px;
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.topbar h1,
.topbar-title {
  margin: 0;
  color: #1f2935;
  font-size: clamp(26px, 2.2vw, 36px);
  line-height: 1.1;
  letter-spacing: -0.035em;
}

.topbar-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.search {
  display: flex;
  align-items: center;
  width: min(31vw, 410px);
  height: 50px;
  padding: 0 16px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.84);
  box-shadow: 0 5px 16px rgba(43, 50, 54, 0.035);
}

.search button {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 30px;
  height: 38px;
  margin: 0 4px 0 -8px;
  padding: 0;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}

.search button:hover { background: var(--surface-muted); color: var(--ink); }

.search button svg {
  width: 20px;
}

.search input {
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ink);
}

.search input::placeholder {
  color: #8e949a;
}

.search:focus-within {
  border-color: var(--control-border);
  outline: 3px solid rgba(127, 23, 54, .18);
  outline-offset: 2px;
  background: var(--surface);
}

.search button:focus-visible,
.search input:focus-visible { outline: 0; }

.icon-button,
.avatar {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 50px;
  height: 50px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 5px 16px rgba(43, 50, 54, 0.045);
  cursor: pointer;
  transition: transform var(--ease), box-shadow var(--ease), background var(--ease);
}

.icon-button:hover {
  transform: translateY(-2px);
  background: white;
  box-shadow: var(--shadow);
}

.icon-button:disabled {
  opacity: 0.42;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}
[data-route="calendar"] .topbar-actions .main-site { display: none; }

.icon-button svg {
  width: 21px;
}

.avatar {
  border: 0;
  background: var(--accent);
  color: white;
  font-weight: 720;
}

@keyframes page-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}

.notification-button { position: relative; }

.mobile-dock {
  display: none;
}

@media (max-width: 1180px) {
  .workspace { padding-right: 26px; padding-left: 32px; }
}

@media (max-width: 850px) {
  .app-shell { grid-template-columns: 96px minmax(0, 1fr); }
  .rail { margin-left: 12px; }
  .workspace { padding: 25px 20px 48px 26px; }
  .search { display: none; }
}

@media (max-width: 660px) {
  body { padding-bottom: 96px; }
  .app-shell { display: block; }
  .rail { display: none; }
  .workspace { padding: 18px 16px 28px; overflow-x: clip; }
  .topbar { min-height: 58px; margin-bottom: 18px; }
  .topbar-copy .eyebrow { display: none; }
  .topbar h1,
  .topbar-title { font-size: 24px; }
  .icon-button { display: none; }
  .avatar { width: 43px; height: 43px; }
  .mobile-dock {
    position: fixed;
    right: 12px;
    bottom: 10px;
    left: 12px;
    z-index: 50;
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    min-height: 72px;
    padding: 7px;
    border: 1px solid rgba(219,222,219,.9);
    border-radius: 22px;
    background: rgba(255,255,255,.93);
    box-shadow: 0 16px 40px rgba(43,50,54,.15);
    backdrop-filter: blur(18px);
  }
}

/* Student fast path: one honest check-in, then out. */

/* WCAG 2.2 interaction tokens: pale card dividers stay decorative; controls remain perceivable. */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
textarea,
select { border-color: var(--control-border); }
input::placeholder,
textarea::placeholder { color: var(--muted); opacity: 1; }
.search { border-color: var(--control-border); }
.search input { border: 0; }
.search:focus-within { outline: 3px solid var(--focus-ring); outline-offset: 3px; }
button:focus-visible,
input:focus-visible,
a:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible { outline: 3px solid var(--focus-ring) !important; outline-offset: 3px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* Production data and behavior contracts ---------------------------------- */
[hidden] { display: none !important; }
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
select,
textarea { font: inherit; }
textarea:focus-visible,
select:focus-visible { outline: 3px solid rgba(157, 41, 72, .25); outline-offset: 3px; }
.brand-mark { overflow: visible; }
.brand-mark svg { width: 54px; height: 62px; overflow: visible; filter: drop-shadow(0 7px 8px rgba(157, 41, 72, .22)); }
.brand-mark svg path:first-child { fill: var(--accent); stroke: none; }
.brand-mark svg path:last-child { stroke: #fff; stroke-width: 1.6; stroke-linecap: round; }
.topbar-copy { min-width: 240px; }
.topbar-subtitle { margin: 8px 0 0; color: var(--muted); font-size: 15px; }
.topbar-actions { margin-left: auto; }
.header-actions .main-site {
  display: none;
  align-items: center;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.9);
  color: var(--muted);
  text-decoration: none;
}
.header-actions .main-site[href] { display: inline-flex; }
.notification-button i[hidden] { display: none !important; }
.portal-dialog-open { overflow: hidden; }
#student-page-root { min-width: 0; animation: page-in 320ms var(--ease); }

/* Home is the approved 1536px composition, with canonical LLU data. */

/* Tasks and global activity. */

/* Calendar defaults to the approved week agenda. */

/* Project workspace keeps every real action while adopting the approved form. */
[data-route="project"] .topbar-copy { display: none; }
[data-route="project"] .topbar { align-items: flex-start; min-height: 54px; margin-bottom: 0; }
[data-route="project"] .topbar-actions .main-site,
[data-route="calendar"] .topbar-actions .main-site { display: none; }
[data-route="project"] .search { width: 316px; }
[data-route="project"] .topbar-actions { position: relative; z-index: 5; }

/* Dynamic project tabs: new tokens, no legacy colors or typography. */

/* Complete project-tab component system. Each renderer uses the same spacing, hierarchy, and
   responsive table behavior so switching views feels like one workspace rather than five demos. */

/* Remaining student routes share the same quiet directory language. */

/* Group library: editorial cards lead to a calm, article-first reading surface. */

/* Messaging surface supplied by student-messages.js. */

/* Sheets, dialogs, notification popovers, and Google-only authentication. */

/* Shared project-editor form controls. Keep native checkbox dimensions out of the
   generic text-control rule above, then give grouped choices a clear touch target. */

/* Project loading mirrors the final geometry and traces its working surfaces. */

/* Loading and failure states mirror the final geometry. */

@media (max-width: 850px) {
  .topbar-subtitle { font-size: 13px; }
}

@media (max-width: 660px) {
  body { padding-bottom: 110px; }
  .workspace { padding: 18px 16px 34px; }
  .topbar { align-items: flex-start; min-height: 58px; }
  .topbar-copy { min-width: 0; }
  .topbar-copy .eyebrow,
  .topbar-subtitle { display: none; }
  .topbar h1,
  .topbar-title { font-size: 24px; }
  .header-actions .main-site,
  .notification-button { display: none !important; }
  .header-actions .avatar { width: 43px; height: 43px; }
  [data-route="project"] .topbar { min-height: 50px; }
}

/* Give request history an intentional empty state, not a table-height sliver. */

/* Final publication uses the existing project surfaces and form controls. */

/* Publication credits keep the profile's existing quiet, divided-row layout. */

/* Compact, expandable group resource library. */

/* Shared focused editors use the same controls and spacing as the workspace. */

/* Profile guidance stays alongside the editor without adding another dashboard. */

/* Searchable roster picker uses real identities, including disambiguating email. */

/* Mandatory setup is a separate surface: no misleading workspace navigation. */
.rwt-setup-required .rail,.rwt-setup-required .mobile-dock,.rwt-setup-required .topbar,.rwt-setup-required .hermes-panel,.rwt-setup-required [data-hermes-launcher] { display:none!important; }
.rwt-setup-required .app-shell { display:block; }
.rwt-setup-required .workspace { margin:0!important; padding:24px!important; width:100%; }
@media(max-width:600px) { .rwt-setup-required .workspace { padding:16px!important; } }

/* Setup saves profile and email choices together without a separate review loop. */

/* Personal projects use the same workspace; operator tools never receive private context. */
body.personal-workspace-context .hermes-panel,
body.personal-workspace-context [data-hermes-open],
body.personal-workspace-context [data-hermes-dashboard-open] { display: none !important; }

/* Home projects are small, scannable tiles; labels explain each color. */

/* My tasks stays compact until a member opens an entry. */

/* Browse role links use the same contact-link treatment as People. */

/* Stable generated cover art; uploaded photography remains above this layer. */

/* Review meeting suggestions as compact editable task drafts. */

/* Compact, personal inbox controls. Clearing never deletes another member's copy. */

/* Google sign-in recovery stays usable on narrow screens. */

/* The daily work loop precedes project breadth on every screen. */
@media(max-width:640px){.mobile-dock{grid-template-columns:repeat(5,minmax(0,1fr))} }

/* Project directory rows keep names and project context readable at every width. */

/* The project board keeps high-volume portfolios scannable without horizontal scrolling. */

/* ==========================================================================
   Sign-in (auth.js). S1 system: rail-dark brand panel + white framed panel on canvas. Self-contained (hardcoded S1
   values) because sign-in must render before, and without, the S1 stylesheets. Motion: one entrance, one line draw.
   ========================================================================== */
.rwt-auth-backdrop{--focus-ring:#111318;--a-ink:#111318;--a-ink-hover:#262a33;--a-ink2:#3a3f4b;--a-mute:#5f6572;--a-line:#d9dce2;--a-line-soft:#e8eaee;--a-field:#b9bec9;--a-late:#a8231b;--a-soon:#8f5600;--a-wait:#2e4cc0;
  position:fixed;z-index:9999;inset:0;display:flex;overflow:auto;padding:24px;background:#e9ebef;color:var(--a-ink);font-family:"RWT S1 Inter",Inter,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:contain}
.rwt-auth-card{box-sizing:border-box;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);width:min(1000px,100%);min-height:min(620px,100%);margin:auto;border:1px solid var(--a-line);border-radius:12px;background:#fff;overflow:hidden;text-align:left;box-shadow:0 1px 2px rgb(17 19 24/.06),0 18px 48px rgb(17 19 24/.08);animation:rwt-auth-in 260ms cubic-bezier(.05,.7,.1,1) both}
@keyframes rwt-auth-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

.rwt-auth-brand{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:28px;padding:36px 36px 32px;background:#15171c;color:#fff;overflow:hidden;isolation:isolate}
.rwt-auth-mark{display:flex;align-items:center;gap:12px;margin:0;color:#fff;font:800 15px/1 "RWT S1 Inter Tight","RWT S1 Inter",Inter,system-ui,sans-serif;letter-spacing:.1em}
.rwt-auth-crest{flex:none;width:30px;height:35px;overflow:visible}.rwt-auth-crest path:first-child{fill:#8a1538}.rwt-auth-crest path+path{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round}
.rwt-auth-brand-copy{position:relative;z-index:1;display:grid;gap:12px;max-width:340px}
.rwt-auth-brand-name{margin:0;font:700 28px/1.12 "RWT S1 Inter Tight","RWT S1 Inter",Inter,system-ui,sans-serif;letter-spacing:-.02em;overflow-wrap:anywhere}
.rwt-auth-purpose{margin:0;color:#c3c7d0;font-size:15px;line-height:1.5}
.rwt-auth-site{position:relative;z-index:1;display:inline-flex;align-items:center;gap:6px;align-self:flex-start;min-height:44px;color:#e4e6eb;font-size:13px;font-weight:600;text-decoration:none;border-bottom:1px solid rgb(255 255 255/.28);padding:0 0 1px}
.rwt-auth-site:hover{color:#fff;border-bottom-color:#fff}.rwt-auth-site:focus-visible{outline:2px solid #fff;outline-offset:4px;border-radius:3px}
.rwt-auth-site svg,.rwt-auth-note svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.rwt-auth-motif{position:absolute;z-index:0;right:-8%;bottom:-6%;width:118%;height:62%;color:#fff;opacity:.9;pointer-events:none}
.rwt-auth-motif path{fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;vector-effect:non-scaling-stroke;opacity:.13;stroke-dasharray:1;stroke-dashoffset:1;animation:rwt-auth-draw 1.6s cubic-bezier(.2,0,0,1) .15s forwards}
.rwt-auth-motif path:nth-child(2){opacity:.1;animation-delay:.3s}.rwt-auth-motif path:nth-child(3){opacity:.08;animation-delay:.45s}.rwt-auth-motif path:nth-child(4){opacity:.06;animation-delay:.6s}.rwt-auth-motif path:nth-child(5){opacity:.045;animation-delay:.75s}
.rwt-auth-motif circle{fill:#fff;opacity:.28}
@keyframes rwt-auth-draw{to{stroke-dashoffset:0}}

.rwt-auth-main{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;min-width:0;padding:44px clamp(24px,5vw,56px)}
.rwt-auth-main>*{width:100%;max-width:400px}
.rwt-auth-card h1{margin:0;color:var(--a-ink);font:700 28px/1.12 "RWT S1 Inter Tight","RWT S1 Inter",Inter,system-ui,sans-serif;letter-spacing:-.02em}
.rwt-auth-institution{display:none;margin:6px auto 0;color:var(--a-mute);font-size:14px;line-height:1.4}
.rwt-auth-lede{margin:8px auto 26px;color:var(--a-mute);font-size:14px;line-height:1.5}
.rwt-auth-copy{margin:0;color:var(--a-mute);font-size:13.5px;line-height:1.5}
.rwt-auth-method{display:grid;gap:10px;text-align:left}
.rwt-auth-method h2{margin:0;color:var(--a-ink);font:700 15.5px/1.3 "RWT S1 Inter Tight","RWT S1 Inter",Inter,system-ui,sans-serif}
.rwt-auth-google-method{padding:0;border:0;background:none}
.rwt-auth-card #rwt-google-login{display:grid;justify-items:start;width:100%;margin-top:2px;overflow:hidden}
.rwt-auth-card #rwt-google-login [data-google-button]{width:100%;min-width:0}
.rwt-auth-card form{display:grid;gap:14px;margin:14px 0 0}
.rwt-auth-card label{display:grid;gap:6px;color:var(--a-ink2);font-size:13px;font-weight:600}
.rwt-auth-card input{width:100%;box-sizing:border-box;min-height:44px;padding:10px 12px;border:1px solid var(--a-field);border-radius:9px;background:#fff;color:var(--a-ink);font-size:15px;font-weight:500;line-height:1.3;font-family:inherit;transition:border-color 120ms,box-shadow 120ms}
.rwt-auth-card input:hover{border-color:#8d93a1}
.rwt-auth-card input:focus,.rwt-auth-card input:focus-visible{outline:none;border-color:var(--a-ink);box-shadow:0 0 0 3px rgb(17 19 24/.16)}
.rwt-auth-card form button[type=submit]{min-height:44px;padding:0 16px;border:0;border-radius:9px;background:var(--a-ink);color:#fff;font-size:14.5px;font-weight:700;line-height:1;font-family:inherit;cursor:pointer;transition:background 120ms,transform 120ms}
.rwt-auth-card form button[type=submit]:hover{background:var(--a-ink-hover)}.rwt-auth-card form button[type=submit]:active{transform:translateY(1px)}
.rwt-auth-card form button[type=submit]:focus-visible{outline:2px solid var(--a-ink);outline-offset:2px}
.rwt-auth-card form button[type=submit]:disabled{opacity:.5;cursor:default}

/* Messages: tone carries meaning (late = error, soon = notice such as an expired session, wait = in progress). */
.rwt-auth-error{--tone:var(--a-late);margin:0;color:var(--tone);font-size:13px;font-weight:600;line-height:1.45}
.rwt-auth-error:empty{display:none}
.rwt-auth-error:not(:empty){display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--tone) 30%,#fff);border-left:3px solid var(--tone);border-radius:9px;background:color-mix(in srgb,var(--tone) 7%,#fff);animation:rwt-auth-msg 180ms cubic-bezier(.2,0,0,1) both}
.rwt-auth-error:not(:empty)::before{content:"";flex:none;width:16px;height:16px;margin-top:1px;background:currentColor;-webkit-mask:var(--a-glyph) center/contain no-repeat;mask:var(--a-glyph) center/contain no-repeat;--a-glyph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4M12 16h.01'/%3E%3C/svg%3E")}
.rwt-auth-error[data-tone=soon]{--tone:var(--a-soon)}.rwt-auth-error[data-tone=wait]{--tone:var(--a-wait)}
@keyframes rwt-auth-msg{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}

.rwt-auth-password-disclosure{margin-top:20px;border-top:1px solid var(--a-line-soft);text-align:left}
.rwt-auth-password-disclosure summary,.rwt-auth-browser-help summary{display:flex;align-items:center;min-height:44px;color:var(--a-ink);font-size:13.5px;font-weight:600;cursor:pointer;list-style:none;border-radius:6px}
.rwt-auth-password-disclosure summary::-webkit-details-marker,.rwt-auth-browser-help summary::-webkit-details-marker{display:none}
.rwt-auth-password-disclosure summary::after,.rwt-auth-browser-help summary::after{content:"";width:7px;height:7px;margin-left:auto;border:solid var(--a-mute);border-width:0 1.6px 1.6px 0;transform:rotate(45deg) translateY(-2px);transition:transform 180ms cubic-bezier(.2,0,0,1)}
.rwt-auth-password-disclosure[open]>summary::after,.rwt-auth-browser-help[open]>summary::after{transform:rotate(-135deg) translateY(-1px)}
.rwt-auth-password-disclosure summary:focus-visible,.rwt-auth-browser-help summary:focus-visible,.rwt-auth-card a:focus-visible,.rwt-auth-card button:focus-visible{outline:2px solid var(--a-ink);outline-offset:2px}
.rwt-auth-password-disclosure[open]>.rwt-auth-method{padding-top:4px;animation:rwt-auth-msg 180ms cubic-bezier(.2,0,0,1) both}
.rwt-auth-password-help{margin:14px 0 0;color:var(--a-mute);font-size:13px;line-height:1.5}
.rwt-auth-password-help strong{color:var(--a-ink2)}.rwt-auth-password-help a{color:var(--a-ink);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.rwt-auth-browser-help{margin-top:6px;border-top:1px solid var(--a-line-soft);text-align:left;font-size:13px;line-height:1.5;color:var(--a-mute)}
.rwt-auth-browser-help p{margin:4px 0 10px}
.rwt-auth-browser-help button,.rwt-auth-google-retry{min-height:44px;padding:8px 14px;border:1px solid var(--a-field);border-radius:9px;background:#fff;color:var(--a-ink);font-size:13.5px;font-weight:600;line-height:1.2;font-family:inherit;cursor:pointer}
.rwt-auth-browser-help button:hover,.rwt-auth-google-retry:hover{background:#f7f8fa}
.rwt-auth-google-retry[hidden]{display:none}.rwt-auth-browser-help [role=status]:empty{display:none}
.rwt-auth-note{display:flex;align-items:flex-start;gap:8px;margin:24px auto 0;color:var(--a-mute);font-size:12.5px;line-height:1.5}
.rwt-auth-note svg{flex:none;margin-top:2px}

@media (max-width:760px){
  .rwt-auth-backdrop{padding:12px}
  .rwt-auth-card{grid-template-columns:minmax(0,1fr);min-height:0;width:100%}
  .rwt-auth-brand{flex-direction:row;align-items:center;gap:12px;padding:16px 20px}
  .rwt-auth-brand-copy,.rwt-auth-motif{display:none}
  .rwt-auth-site{margin-left:auto;min-height:44px}
  .rwt-auth-main{padding:28px 20px 24px;justify-content:flex-start}
  .rwt-auth-institution{display:block}
  .rwt-auth-card h1{font-size:26px}
}
@media (max-width:360px){.rwt-auth-backdrop{padding:8px}.rwt-auth-main{padding:24px 16px 20px}.rwt-auth-brand{padding:14px 16px}}
@media (prefers-reduced-motion:reduce){
  .rwt-auth-card,.rwt-auth-error:not(:empty),.rwt-auth-password-disclosure[open]>.rwt-auth-method{animation:rwt-auth-fade 120ms linear both}
  .rwt-auth-motif path{animation:none;stroke-dashoffset:0}
  .rwt-auth-card input,.rwt-auth-card form button[type=submit],.rwt-auth-password-disclosure summary::after,.rwt-auth-browser-help summary::after{transition:none}
  @keyframes rwt-auth-fade{from{opacity:0}to{opacity:1}}
}
@media (forced-colors:active){.rwt-auth-card input:focus{outline:2px solid Highlight}.rwt-auth-error:not(:empty){border:1px solid CanvasText}}
