[hidden] { display:none !important; }
.sr-only { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0); }
button, input, select, textarea { font:inherit; }
button:disabled { cursor:wait;opacity:.65; }
button:focus-visible,a:focus-visible,select:focus-visible {outline:2px solid var(--accent);outline-offset:3px;}
.service-notice {padding:.65rem 1rem;background:var(--warn-bg);color:var(--warn-fg);border-bottom:1px solid var(--warn-bd);display:flex;align-items:center;justify-content:space-between;gap:1rem;font-size:.83rem;flex-shrink:0;z-index:101;}
.project-select {width:100%;background:var(--bg-card);color:var(--fg);border:1px solid var(--border-mid);padding:.5rem;border-radius:6px;min-width:0;}
.new-project {margin:.4rem 0 .7rem;}.sidebar-account {padding:.8rem 1rem;border-top:1px solid var(--border);color:var(--fg-dim);font-size:.8rem;}
#model-disclaimer {flex-basis:100%;font-size:.72rem;color:var(--fg-mute);margin-top:.15rem;}
.revision-control {font-size:.75rem;color:var(--fg-dim);display:flex;align-items:center;gap:.4rem;}
.revision-control select {max-width:140px;color:var(--fg);background:var(--bg-card);border:1px solid var(--border-mid);border-radius:5px;padding:.3rem;}
.composer-status {color:var(--fg-dim);font-size:.8rem;padding:0 0 .5rem;}.composer-status.error {color:var(--err-fg);}
.pending-actions {font-size:.72rem;color:var(--fg-dim);display:flex;gap:.5rem;align-items:center;padding-top:.6rem;}
.viewer-message {position:absolute;bottom:2.5rem;left:1rem;right:1rem;padding:.65rem;background:var(--warn-bg);border:1px solid var(--warn-bd);color:var(--warn-fg);border-radius:6px;font-size:.8rem;}
#version-banner {position:absolute;top:.6rem;left:50%;transform:translateX(-50%);background:var(--bg-card);border:1px solid var(--accent-dim);color:var(--accent);padding:.35rem .6rem;border-radius:5px;font-size:.75rem;z-index:5;white-space:nowrap;}
.name-dialog {margin:auto;width:min(90vw,420px);background:var(--bg-card);color:var(--fg);border:1px solid var(--border-mid);border-radius:10px;padding:1.3rem;}
.name-dialog::backdrop {background:rgba(5,8,14,.65);}.name-dialog label{display:block;margin-bottom:.7rem;}.name-dialog input,.account-card input {width:100%;padding:.65rem;background:var(--bg);border:1px solid var(--border-mid);border-radius:6px;color:var(--fg);}.dialog-actions {display:flex;justify-content:flex-end;gap:.7rem;margin-top:1rem;}
.chat-msg .source-label {font-size:.76rem;opacity:.85;margin-top:.5rem;}.chat-msg.system-error {border-color:var(--err-bd);color:var(--err-fg);}.chat-msg {flex-shrink:0;}
.product-page {max-width:920px;width:100%;margin:2rem auto;padding:0 1.25rem;}.product-page h1 {font-family:var(--font-display);font-size:1.65rem;letter-spacing:-.04em;margin-bottom:1.5rem;}.account-card {padding:1.4rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;}.account-card h2 {font-size:1rem;margin-bottom:1rem;}.account-row{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid var(--border);font-size:.85rem;}.account-row:last-child{border-bottom:0;}.account-label{color:var(--fg-dim);}.login-page{max-width:440px;margin:5rem auto;}.login-page label{display:block;font-size:.85rem;margin-bottom:.4rem;}.login-page input{margin-bottom:1rem;}.login-page button[type=submit]{width:100%;}.page-error{color:var(--err-fg);font-size:.83rem;margin-top:.8rem;}.subtle{color:var(--fg-dim);font-size:.83rem;line-height:1.6;}.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}.account-grid .account-card{margin:0;}
@media(max-width:640px){.account-grid{grid-template-columns:1fr;}.product-page{margin-top:1rem;} .service-notice{font-size:.75rem;padding:.45rem .7rem;} .revision-control{flex-basis:100%;}.viewer-actions{gap:.4rem;} .viewer-actions .btn-dl--big{padding:.45rem .6rem;} .viewer-actions .b-sub{font-size:.65rem;}.pending-actions{flex-wrap:wrap;} }

.session-item {background:transparent;border:0;text-align:left;}
@media(max-width:899px){.app-header-toggle {display:inline-flex!important;}}

.mobile-tabbar {background:var(--bg-card)!important;}.mobile-tabbar .mtab {color:var(--fg-dim)!important;}.mobile-tabbar .mtab.active {color:var(--fg)!important;}

/* Phase 5C: Product shell presentation. Behaviour remains with the existing
   page scripts; visual roles come from cloud_brand.css through cloud_base.css. */
button:focus-visible, a:focus-visible, input:focus-visible,
select:focus-visible, textarea:focus-visible {
  outline: 3px solid var(--ne-focus);
  outline-offset: 2px;
}
.product-page { max-width: 1040px; margin: 3rem auto 4rem; padding: 0 1.5rem; }
.product-eyebrow {
  margin: 0 0 .6rem; font-size: .75rem; font-weight: 600;
  letter-spacing: .09em; color: var(--ne-faint);
}
.product-page h1 { font-size: clamp(1.9rem, 4vw, 2.45rem); line-height: 1.15; margin-bottom: .7rem; }
.page-lead { max-width: 650px; color: var(--ne-muted); line-height: 1.55; margin: 0 0 1.75rem; }
.account-card { border-color: var(--ne-line); border-radius: 2px; padding: 1.55rem; }
.account-card h2 { font-size: 1.05rem; line-height: 1.3; margin: 0 0 1.1rem; }
.account-row { align-items: baseline; line-height: 1.45; }
.account-row > :last-child { text-align: right; overflow-wrap: anywhere; }
.account-label { flex: none; color: var(--ne-muted); }
.account-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .65rem; margin-top: 1.5rem; }
/* A button on a product page never runs out of itself: a label longer than
   the room it has wraps inside the button (owner, 27.09). */
.product-page .ui-btn { max-width: 100%; white-space: normal; text-align: center; }
.account-grid { align-items: stretch; }
.account-grid .account-card { min-width: 0; }
.account-grid .subtle { margin-top: 1.2rem; }
.login-page { max-width: 520px; margin-top: clamp(3rem, 9vh, 6rem); }
.login-card { padding: 1.8rem; }
.login-page label, .device-connect label { display: block; margin: 0 0 .45rem; font-size: .84rem; font-weight: 600; }
.login-page input, .device-connect input {
  background: var(--ne-deep); border: 1px solid var(--ne-control);
  border-radius: 2px; color: var(--ne-text); min-height: 48px;
  padding: .65rem .8rem; font-size: 1rem;
}
.login-page input { margin-bottom: 1.25rem; }
/* A consent box is a box, not a field: the field rules above stretched it to
   403×48 on /register and /privacy-settings (RC acceptance D2). */
.login-page input[type=checkbox], .account-card input[type=checkbox] {
  width: auto; min-height: 0; padding: 0; margin: 0 .55rem 0 0; vertical-align: -.15em;
}
/* Beside the password, where it is looked for (RC acceptance D12). */
.login-page .forgot-line { margin: -.8rem 0 1.1rem; text-align: right; font-size: .84rem; }
.login-page button[type=submit] { min-height: 48px; font-size: .9rem; }
.login-help { margin-top: 1.1rem; }
.page-error:not([hidden]) { padding: .7rem .85rem; background: var(--err-bg); border-left: 3px solid var(--err); line-height: 1.5; overflow-wrap: anywhere; }
.device-steps { margin: 0 0 1.4rem; padding-left: 1.4rem; color: var(--ne-muted); line-height: 1.65; }
.device-steps li { padding-left: .25rem; margin-bottom: .4rem; }
.device-steps li::marker { color: var(--ne-accent-text); font-weight: 700; }
.device-steps a { color: var(--ne-accent-text); text-decoration: underline; text-underline-offset: .18em; }
.device-connect-row { display: flex; align-items: stretch; gap: .7rem; }
.device-connect input { width: min(100%, 330px); letter-spacing: .14em; text-transform: uppercase; }
.device-connect input::placeholder { color: var(--ne-muted); opacity: 1; }
.device-connect button { min-height: 48px; }
#device-list .account-row { align-items: center; }
#device-list .account-row > span:last-child { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: .55rem; }
@media(max-width:640px) {
  .product-page { margin-top: 2rem; padding: 0 1rem; }
  .login-page { margin-top: 3rem; }
  .account-card, .login-card { padding: 1.2rem; }
  .account-row { display: block; }
  .account-row .account-label { display: block; margin-bottom: .25rem; }
  .account-row > :last-child { display: block; text-align: left; }
  .device-connect-row { flex-direction: column; }
  .device-connect input, .device-connect button { width: 100%; }
  #device-list .account-row > span:last-child { justify-content: flex-start; }
}

/* Public account lifecycle: the same restrained Product surfaces as account. */
.product-auth .page-lead { max-width: 500px; }
.auth-links { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .65rem 1.2rem; margin-top: 1.2rem; font-size: .86rem; }
.auth-links a, .forgot-line a, .legal-note a, .login-help a, .onboarding-card a, .account-card-links a { color: var(--ne-accent-text); text-decoration: underline; text-underline-offset: .18em; }
.auth-links a:hover, .forgot-line a:hover, .legal-note a:hover, .login-help a:hover, .onboarding-card a:hover, .account-card-links a:hover { color: var(--ne-text); }
.legal-note { color: var(--ne-muted); font-size: .79rem; line-height: 1.55; margin: .35rem 0 1.2rem; }
.field-hint { color: var(--ne-muted); font-size: .77rem; line-height: 1.5; margin: -.8rem 0 1.2rem; }
.password-field { display: flex; align-items: stretch; margin-bottom: 1.25rem; }
.login-page .password-field input { flex: 1; min-width: 0; margin: 0; border-right: 0; }
.password-toggle { min-width: 88px; padding: .45rem .65rem; background: var(--ne-deep); color: var(--ne-text); border: 1px solid var(--ne-control); border-radius: 0 2px 2px 0; cursor: pointer; font-size: .8rem; }
.password-toggle:hover { background: var(--ne-raised); }
.page-success:not([hidden]) { padding: .75rem .9rem; margin-top: .9rem; color: var(--ok-fg); background: var(--ok-bg); border-left: 3px solid var(--ok); line-height: 1.5; overflow-wrap: anywhere; }
.auth-followup { margin-top: 1.1rem; padding-top: 1rem; border-top: 1px solid var(--ne-line); }
.auth-followup p { color: var(--ne-muted); font-size: .83rem; line-height: 1.5; margin-bottom: .7rem; }
.auth-full { width: 100%; min-height: 48px; }
/* Signing in with a code from a letter (owner, 07.10): links that are buttons,
   because they change the form rather than the page. */
.link-button { padding: 0; background: none; border: 0; color: var(--ne-accent-text); font: inherit; text-decoration: underline; text-underline-offset: .18em; cursor: pointer; }
.link-button:hover { color: var(--ne-text); }
.login-page [hidden] { display: none !important; }
.login-page #code-step { margin-top: 1.25rem; }
.login-page #code-value { letter-spacing: .3em; font-variant-numeric: tabular-nums; }
.login-page #code-submit { width: 100%; min-height: 48px; font-size: .9rem; }
.login-page .code-resend { margin: .8rem 0 0; }
.auth-followup .ui-btn + .ui-btn { margin-left: .5rem; }
.support-page { max-width: 740px; }
.support-card label { display: block; font-size: .84rem; font-weight: 600; margin: 0 0 .45rem; }
.support-card input, .support-card select, .support-card textarea { width: 100%; display: block; background: var(--ne-deep); border: 1px solid var(--ne-control); border-radius: 2px; color: var(--ne-text); padding: .7rem .8rem; margin-bottom: 1.25rem; font-size: 1rem; }
.support-card input, .support-card select { min-height: 48px; }
.support-card textarea { resize: vertical; min-height: 160px; line-height: 1.5; }
.support-card button[type=submit] { min-height: 48px; }
.support-card .field-hint { margin: -.8rem 0 1.25rem; }
#support-result p + p { margin-top: .45rem; }
#support-ticket-id { font-family: var(--font-mono); letter-spacing: .02em; user-select: all; }
.onboarding-card { max-width: 760px; }
.onboarding-list { padding-left: 1.2rem; line-height: 1.8; color: var(--ne-text); }
.onboarding-list li::marker { color: var(--ne-accent-text); }
.onboarding-card .subtle { margin-top: 1.2rem; }
.account-plans { display: flex; flex-wrap: wrap; gap: .55rem; margin: 1rem 0; }
.account-plans .ui-btn { max-width: 100%; white-space: normal; }
/* Owner, 27.09: the account at a glance. The first card holds the account's
   rows and, under them, two tiles — what the plan has used and the wallet —
   instead of two more cards further down; the tariff card beside it chooses a
   plan from three tiles in a row. One column on a phone. */
.account-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
/* The account card is the tall one: the tariff and the КОМПАС-3D cards stand
   beside it, one under the other, and help runs under both. */
@media (min-width: 901px) {
  .account-grid { grid-template-areas: "overview tariff" "overview kompas" "stations stations" "help help"; grid-template-rows: auto 1fr auto auto; }
  .account-overview { grid-area: overview; }
  #account-tariff { grid-area: tariff; }
  .account-kompas { grid-area: kompas; }
  .account-help { grid-area: help; }
  .account-stations { grid-area: stations; }
  .account-help .account-card-links { flex-direction: row; flex-wrap: wrap; gap: .55rem 1.5rem; }
}
.account-tiles { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; margin-top: 1.1rem; }
/* The wallet: the balance on the left, one tap per package and a typed amount on the right. */
.account-tile.account-wallet { flex-direction: row; align-items: flex-start; gap: 1rem; }
.account-wallet__balance { flex: 0 0 32%; min-width: 0; display: flex; flex-direction: column; gap: .45rem; }
.account-wallet__topup { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .4rem; }
.account-wallet__topup .account-tile__caption { margin-top: 0; }
.account-tile { min-width: 0; display: flex; flex-direction: column; gap: .45rem; padding: .95rem 1rem 1rem; border: 1px solid var(--ne-line); border-radius: 2px; background: var(--ne-page); }
.account-tile__title { margin: 0; color: var(--ne-muted); font-size: .72rem; font-weight: 600; letter-spacing: .08em; line-height: 1.3; text-transform: uppercase; }
.account-tile__value { margin: 0; color: var(--ne-text); font-size: 1.15rem; font-weight: 700; letter-spacing: -.02em; line-height: 1.15; overflow-wrap: anywhere; }
.account-tile__note, .account-tile__caption { margin: 0; color: var(--ne-muted); font-size: .78rem; line-height: 1.5; }
.account-tile__caption { margin-top: .2rem; font-weight: 600; }
.account-tile__error { margin: 0; color: var(--err-fg); font-size: .78rem; line-height: 1.45; }
.account-tile__extra { margin-top: auto; padding-top: .55rem; border-top: 1px solid var(--ne-line); }
.account-tile__extra-label { color: var(--ne-text); font-weight: 600; }
.account-tile .usage-bars { gap: .45rem; padding: .1rem 0 0; }
.account-tile .usage-bar { grid-template-columns: minmax(0, 1fr) auto; gap: .55rem; }
/* As many packages as the till sends, in rows of equal buttons: a fourth or
   fifth package wraps to the next row instead of squeezing «15 000 ₽». */
.account-topups { display: grid; grid-template-columns: repeat(auto-fit, minmax(4rem, 1fr)); gap: .4rem; }
.account-topups .ui-btn { min-width: 0; min-height: 40px; padding: .45rem .25rem; border-radius: 2px; }
.account-tiles__note { margin: .75rem 0 0; color: var(--ne-muted); font-size: .78rem; line-height: 1.5; text-wrap: pretty; }
.account-tiles__note + .account-tiles__note { margin-top: .3rem; }
.account-topup-custom { display: grid; gap: .35rem; margin: .15rem 0 0; }
.account-topup-custom label { color: var(--ne-muted); font-size: .78rem; font-weight: 600; }
.account-topup-custom__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .4rem; }
.account-card .account-topup-custom input { width: 100%; min-width: 0; min-height: 40px; padding: .45rem .6rem; border: 1px solid var(--ne-control); border-radius: 2px; background: var(--ne-surface); color: var(--ne-text); font: 600 .95rem var(--font-body); }
.account-topup-custom input[aria-invalid="true"] { border-color: var(--err-fg); }
.account-topup-custom .ui-btn { min-height: 40px; border-radius: 2px; }
/* The plans: name, price for 30 days, the price of a part as on /pricing, one
   button. The current plan is marked; a lower one is not offered (O18).
   How they stand follows the width of the tariff card itself, not the window
   (owner, 27.09: «Оплатить» ran out of its tile when the card was narrow and
   the names grew to «Главный инженер»): three in a row where each has room for
   its price, one per row with the button beside it on a mid-size card, and the
   button under the price when even that does not fit. */
#account-tariff { container: tariff / inline-size; }
.account-plan-offers { display: grid; grid-template-columns: minmax(0, 1fr); gap: .6rem; margin: 1.1rem 0 0; }
.account-plan-offer { min-width: 0; display: flex; flex-direction: column; gap: .3rem; padding: .8rem .75rem; border: 1px solid var(--ne-line); border-radius: 2px; background: var(--ne-page); }
.account-plan-offer[data-current] { border-color: var(--ne-accent); box-shadow: inset 0 3px 0 var(--ne-accent); }
.account-plan-name { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .45rem; margin: 0; color: var(--ne-muted); font-size: .72rem; font-weight: 600; letter-spacing: .08em; line-height: 1.3; text-transform: uppercase; overflow-wrap: anywhere; }
.account-plan-badge { padding: .1rem .35rem; background: var(--ne-solid); color: #fff; font-size: .62rem; letter-spacing: .06em; }
.account-plan-price { margin: .15rem 0 0; color: var(--ne-muted); font-size: .76rem; line-height: 1.3; }
.account-plan-price b { display: block; color: var(--ne-text); font-size: 1.25rem; font-weight: 700; letter-spacing: -.03em; line-height: 1.1; white-space: nowrap; }
/* 30 дней или год (владелец, 28.09): два сегмента во всю ширину карточки на
   любом экране; выбранный — залит акцентом. */
.account-plans-term { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin: 1rem 0 0; }
.account-plans-term[hidden] { display: none; }
.account-plans-term .ui-btn { min-width: 0; min-height: 40px; border: 1px solid var(--ne-line); border-radius: 2px; white-space: normal; line-height: 1.2; }
.account-plans-term .ui-btn + .ui-btn { margin-left: -1px; }
.account-plans-term .ui-btn[aria-pressed="true"] { position: relative; z-index: 1; border-color: var(--ne-solid); background: var(--ne-solid); color: #fff; }
.account-plans-term__gift { font-weight: 700; white-space: nowrap; }
.account-plan-gift { display: block; margin-top: .15rem; color: var(--ne-accent-text); font-weight: 700; }
.account-plan-part { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 .3rem; margin: .2rem 0 .3rem; padding: .3rem .4rem; border-left: 2px solid var(--ne-accent); background: var(--ne-surface); color: var(--ne-muted); font-size: .74rem; line-height: 1.3; }
.account-plan-part b { color: var(--ne-text); font-size: .95rem; font-weight: 700; white-space: nowrap; }
/* The label is one word («Оплатить», «Продлить»); what it buys is on the tile
   and in its aria-label. Should a label ever be longer, it wraps inside. */
.account-plan-offer .ui-btn { width: 100%; min-width: 0; min-height: 40px; margin-top: auto; border-radius: 2px; white-space: normal; line-height: 1.25; text-align: center; }
@container tariff (min-width: 400px) {
  .account-plan-offers { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  /* One set of rows for the three tiles: a name on two lines («Главный
     инженер») no longer pushes its price below its neighbours'. */
  .account-plan-offer { display: grid; grid-row: span 4; grid-template-rows: subgrid; row-gap: .3rem; align-content: start; }
  .account-plan-offer .ui-btn { grid-row: 4; align-self: end; }
  .account-plan-offer > .account-plan-name { align-self: start; }
}
@container tariff (min-width: 300px) and (max-width: 399.98px) {
  .account-plan-offer { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: .75rem; row-gap: .2rem; align-items: center; }
  .account-plan-offer > p { grid-column: 1; }
  .account-plan-offer .ui-btn { grid-column: 2; grid-row: 1 / span 3; width: auto; min-width: 7.5rem; margin: 0; }
}
.account-plans-terms { margin: .7rem 0 0; color: var(--ne-muted); font-size: .8rem; line-height: 1.5; }
.account-history-details { margin-top: 1rem; font-size: .83rem; }
.account-history-details summary { cursor: pointer; color: var(--ne-muted); }
@media (max-width: 900px) {
  .account-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  .account-tile.account-wallet { flex-direction: column; gap: .6rem; }
  .account-wallet__balance { flex-basis: auto; }
  .account-wallet__topup { width: 100%; }
}
.account-renewal { display: inline-flex; flex-wrap: wrap; align-items: baseline; justify-content: flex-end; gap: .45rem; }
.account-history { padding-left: 1.1rem; font-size: .83rem; overflow-wrap: anywhere; }
.account-card-links { display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; font-size: .83rem; margin-top: 1rem; }
.not-found-page { min-height: 45vh; }
@media(max-width:640px) {
  .auth-links { display: grid; }
  .support-card button[type=submit], .onboarding-card .account-actions .ui-btn { width: 100%; }
  .onboarding-card .account-actions { display: grid; }
}

/* Phones (owner, 24.09 — the whole site for a phone): what a finger presses
   is at least 40 px high, including the text links under the forms and in the
   account cards, and the logo is a target, not a 20 px mark. */
@media (max-width: 640px) {
  .app-header-logo { min-width: 44px; min-height: 44px; justify-content: center; }
  #account-logout, #account-admin { min-height: 40px; }
  .auth-links a, .account-card-links a {
    display: inline-flex; align-items: center; min-height: 40px;
  }
}
/* Owner, 26.09: a paid plan's month and week, as a share used. */
.usage-bars { display: grid; gap: .5rem; padding: .75rem 0 0; }
.usage-bar { display: grid; grid-template-columns: 4.5rem 1fr 3rem; align-items: center; gap: .6rem; font-size: .83rem; color: var(--fg-dim); }
.usage-bar progress { width: 100%; height: .5rem; accent-color: #cc4c08; }
.usage-bar span:last-child { text-align: right; color: var(--fg); }

/* Покупка приложения (владелец, 27.09): большая оранжевая кнопка на всю ширину
   карточки — её видно сразу. Показывается, только когда на сайте есть
   установщик, который можно отдать после оплаты (release audit 26.09, B4). */
.download-buy { width: 100%; min-height: 56px; margin-top: 16px; font-size: 17px; font-weight: 700; letter-spacing: .01em; }
/* «Скачать установщик» — ссылка той же формы (владелец, 29.09): текст по центру. */
a.download-buy { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; }

/* Рабочие станции КОМПАС-3D (templates/_workstations.html): what a workstation
   is and the way to the list. A card of its own on the account page and on
   /download, marked by the accent edge so it is found. */
.account-kompas__app { margin-top: .9rem; }
.account-stations, .download-workstations { border-left: 3px solid var(--ne-accent); }
.download-workstations { margin-top: 1rem; }
.workstations__about { display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; min-width: 0; }
.account-card .workstations__title { margin: 0; font-size: 1.05rem; line-height: 1.3; }
.account-card .workstations p { margin: 0; }
.workstations__what { color: var(--ne-muted); font-size: .86rem; line-height: 1.55; text-wrap: pretty; }
.workstations__open { margin-top: .35rem; }
@media (max-width: 640px) {
  .workstations__open { align-self: stretch; }
}

/* «Войти с Яндекс ID» (owner, 07.10). Yandex's guidance allows a black or a
   white button with this wording; ours follows the theme so it never sinks
   into the page — white on the dark theme, black on the light one. Text only:
   no logo file of theirs is in the repository. */
.yandex-entry { margin-bottom: 1.1rem; }
.yandex-button { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; padding: .65rem 1rem; border-radius: 8px; background: #fff; color: #000; border: 1px solid #fff; font-size: .95rem; font-weight: 600; text-decoration: none; }
.yandex-button:hover { background: #f2f2f2; }
.yandex-button:focus-visible { outline: 2px solid var(--ne-accent); outline-offset: 2px; }
:root[data-theme="light"] .yandex-button { background: #000; color: #fff; border-color: #000; }
:root[data-theme="light"] .yandex-button:hover { background: #262626; }
.yandex-entry .page-error { margin: .8rem 0 0; }
.auth-divider { display: flex; align-items: center; gap: .8rem; margin: 1.1rem 0 0; color: var(--ne-muted); font-size: .8rem; }
.auth-divider::before, .auth-divider::after { content: ""; flex: 1; border-top: 1px solid var(--ne-line); }
.yandex-consent-lead { line-height: 1.55; margin: 0 0 .5rem; }
.yandex-consent-email { font-weight: 600; margin: 0 0 1.3rem; overflow-wrap: anywhere; }
.login-page .yandex-consent-hint { margin: 1rem 0 0; }
