:root {
--bg:#f4f6f8;
--panel:#fff;
--ink:#172033;
--muted:#687386;
--line:#dce2e8;
--accent:#2563eb;
--accent-dark:#174bb8;
--soft:#eaf1ff;
--danger:#b42318;
--ok:#087a4b;
--radius:18px;
--shadow:0 12px 32px rgba(23,32,51,.07)}
* {
box-sizing:border-box}
body {
margin:0;
background:var(--bg);
color:var(--ink);
font-family:Inter,Segoe UI,Arial,sans-serif;
line-height:1.5}
a {
color:var(--accent);
text-decoration:none}
button,input,select,textarea {
font:inherit}
.site-header {
height:72px;
display:flex;
align-items:center;
justify-content:space-between;
padding:0 max(28px,calc((100vw - 1180px)/2));
background:rgba(255,255,255,.92);
border-bottom:1px solid var(--line);
position:sticky;
top:0;
z-index:5;
backdrop-filter:blur(10px)}
.brand {
font-size:23px;
font-weight:800;
color:var(--ink);
letter-spacing:-1px}
.brand span {
color:var(--accent)}
.container {
max-width:1180px;
min-height:calc(100vh - 150px);
margin:auto;
padding:48px 28px}
footer {
max-width:1180px;
margin:auto;
padding:28px;
display:flex;
justify-content:space-between;
gap:20px;
color:var(--muted);
font-size:14px;
border-top:1px solid var(--line)}
h1,h2,h3,p {
margin-top:0}
h1 {
font-size:clamp(34px,5vw,56px);
letter-spacing:-2.2px;
line-height:1.05;
margin-bottom:14px}
h2 {
letter-spacing:-.6px}
.eyebrow {
text-transform:uppercase;
letter-spacing:1.7px;
color:var(--accent);
font-size:12px;
font-weight:800}
.muted,.hint {
color:var(--muted)}
.hint {
font-size:13px}
.panel {
background:var(--panel);
border:1px solid var(--line);
border-radius:var(--radius);
padding:26px;
box-shadow:var(--shadow)}
.button,button {
border:0;
border-radius:10px;
padding:11px 17px;
font-weight:700;
cursor:pointer;
display:inline-flex;
align-items:center;
justify-content:center}
.primary {
background:var(--accent);
color:#fff}
.primary:hover {
background:var(--accent-dark)}
.secondary {
background:#fff;
color:var(--ink);
border:1px solid var(--line)}
.full {
width:100%}
.link-button {
background:none;
padding:0;
color:var(--muted)}
.danger {
color:var(--danger)}
button:disabled {
opacity:.45;
cursor:not-allowed}
.stack {
display:flex;
flex-direction:column;
gap:17px}
.gap-lg {
gap:24px}
label {
display:flex;
flex-direction:column;
gap:7px;
font-size:14px;
font-weight:650}
input,select,textarea {
width:100%;
padding:11px 13px;
border:1px solid #cfd7e1;
border-radius:10px;
background:#fff;
color:var(--ink);
outline:none}
input:focus,select:focus,textarea:focus {
border-color:var(--accent);
box-shadow:0 0 0 3px var(--soft)}
textarea {
resize:vertical}
.admin-nav {
display:flex;
align-items:center;
gap:22px}
.admin-nav a {
color:var(--ink);
font-size:14px;
font-weight:650}
.page-head {
display:flex;
justify-content:space-between;
align-items:flex-end;
gap:24px;
margin-bottom:30px}
.page-head h1 {
font-size:42px;
margin:0}
.alert {
padding:13px 15px;
border-radius:10px;
background:#f0f3f6;
margin-bottom:18px}
.alert.error {
background:#fff0ee;
color:#8f1d14}
.alert.success {
background:#e8f8f0;
color:var(--ok)}
.login-shell {
min-height:65vh;
display:grid;
place-items:center}
.login-panel {
width:min(420px,100%)}
.admin-list {
display:grid;
gap:12px}
.admin-card {
display:flex;
justify-content:space-between;
align-items:center;
color:var(--ink);
background:#fff;
border:1px solid var(--line);
border-radius:14px;
padding:20px 22px}
.admin-card:hover {
border-color:#b7c4d5;
box-shadow:var(--shadow)}
.admin-card h2 {
margin:9px 0 4px}
.admin-card p {
margin:0;
color:var(--muted)}
.admin-card>strong {
font-size:27px;
text-align:right}
.admin-card small {
display:block;
font-size:11px;
color:var(--muted);
font-weight:500}
.status {
display:inline-block;
border-radius:99px;
padding:4px 9px;
background:#eef1f4;
color:#586274;
font-size:11px;
font-weight:800;
text-transform:uppercase}
.status.published {
background:#e6f7ef;
color:var(--ok)}
.status.paused {
background:#fff4dc;
color:#8a5a00}
.empty {
text-align:center;
padding:90px 20px;
color:var(--muted)}
.settings-grid {
display:grid;
grid-template-columns:minmax(0,.9fr) minmax(0,1.25fr);
gap:22px;
margin-bottom:14px}
.settings-intro {
display:flex;
align-items:flex-start;
gap:14px;
margin:-4px 0 22px;
padding:16px 18px;
border:1px solid #dce4ee;
border-radius:14px;
background:rgba(255,255,255,.62);
color:var(--ink)}
.settings-intro-icon {
display:grid;
place-items:center;
flex:0 0 38px;
height:38px;
border-radius:11px;
background:#eaf0ff;
color:var(--accent);
font-size:19px}
.settings-intro strong {
display:block;
margin:1px 0 3px}
.settings-intro p,.settings-section-head p,.settings-actions p {
margin:0;
color:var(--muted);
font-size:13px;
line-height:1.5}
.settings-section {
height:100%;
padding:28px}
.settings-section-head {
display:flex;
align-items:flex-start;
gap:13px;
margin-bottom:24px;
padding-bottom:18px;
border-bottom:1px solid #e7ebf0}
.settings-section-head>span {
display:grid;
place-items:center;
flex:0 0 34px;
height:34px;
border-radius:10px;
background:var(--ink);
color:#fff;
font-size:11px;
font-weight:800;
letter-spacing:.7px}
.settings-section-head h2 {
margin:0 0 4px;
font-size:21px}
.settings-actions {
align-items:center;
justify-content:space-between;
padding:16px 0 0;
border-top:1px solid #dce2ea}
.settings-actions .primary {
min-width:210px}
.wide {
grid-column:1/-1}
.event-layout {
display:grid;
grid-template-columns:minmax(0,1fr) 330px;
gap:24px}
.preview {
position:sticky;
top:98px;
height:max-content;
text-align:center}
.portrait {
width:108px;
height:108px;
border-radius:50%;
overflow:hidden;
background:#e7ebf0;
margin:0 auto 18px;
display:grid;
place-items:center;
color:var(--muted)}
.portrait img {
width:100%;
height:100%;
object-fit:cover}
.check-grid,.form-grid {
display:grid;
grid-template-columns:1fr 1fr;
gap:15px}
.check-grid label,.consent {
flex-direction:row;
align-items:flex-start;
font-weight:500}
.check-grid input,.consent input {
width:auto;
margin-top:4px}
.form-actions {
display:flex;
justify-content:flex-end;
gap:10px}
.stats {
display:grid;
grid-template-columns:repeat(3,1fr);
gap:14px;
margin-bottom:20px}
.stats div {
background:var(--ink);
color:#fff;
border-radius:14px;
padding:20px}
.stats strong {
font-size:32px;
display:block}
.stats span {
opacity:.7;
font-size:13px}
.detail-grid {
display:grid;
grid-template-columns:1fr 1fr;
gap:20px}
.section-head,.row {
display:flex;
justify-content:space-between;
align-items:center;
gap:15px}
.inline {
display:flex;
gap:9px;
margin:15px 0}
.inline>* {
min-width:0}
.row {
border-top:1px solid var(--line);
padding:11px 0}
.row small {
color:var(--muted)}
dl {
display:grid;
grid-template-columns:110px 1fr;
margin-bottom:0}
dt {
color:var(--muted)}
dd {
margin:0}
.registrations {
margin-top:20px}
.table-wrap {
overflow:auto}
table {
border-collapse:collapse;
width:100%;
font-size:14px}
th,td {
text-align:left;
padding:13px;
border-bottom:1px solid var(--line);
vertical-align:top}
.hero {
max-width:820px;
margin:35px 0 52px}
.hero p:last-child {
font-size:20px;
color:var(--muted)}
.event-cards {
display:grid;
grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
gap:22px}
.event-card {
background:#fff;
border:1px solid var(--line);
border-radius:22px;
padding:30px;
box-shadow:var(--shadow)}
.event-card .portrait {
margin:0 0 25px;
width:92px;
height:92px}
.event-card h2 {
font-size:27px;
margin-bottom:8px}
.event-card h3 {
margin-bottom:5px}
.event-card .button {
margin-top:15px}
.location {
padding:11px 13px;
background:var(--bg);
border-radius:10px;
font-size:14px}
.back {
display:inline-block;
margin-bottom:35px}
.registration-layout {
display:grid;
grid-template-columns:.8fr 1.2fr;
gap:60px;
align-items:start}
.slot-list {
display:grid;
grid-template-columns:repeat(3,1fr);
gap:9px;
max-height:270px;
overflow:auto}
.slot {
display:block}
.slot input {
position:absolute;
opacity:0}
.slot span {
border:1px solid var(--line);
border-radius:10px;
padding:10px;
display:flex;
flex-direction:column;
text-align:center;
cursor:pointer}
.slot input:checked+span {
border-color:var(--accent);
background:var(--soft);
color:var(--accent)}
.slot small {
color:var(--muted)}
.success-page {
text-align:center;
max-width:560px;
margin:70px auto}
.success-mark {
width:68px;
height:68px;
border-radius:50%;
display:grid;
place-items:center;
margin:0 auto 20px;
background:#e6f7ef;
color:var(--ok);
font-size:34px}
.confirmation {
display:flex;
justify-content:center;
gap:15px;
font-size:27px;
margin:25px}
.legal {
max-width:850px;
margin:auto}
.legal-text {
white-space:pre-wrap;
line-height:1.8}
@media(max-width:800px) {
.site-header {
padding:0 18px}
.container {
padding:32px 18px}
.admin-nav a {
display:none}
.settings-grid,.event-layout,.detail-grid,.registration-layout {
grid-template-columns:1fr}
.settings-section {
padding:22px}
.settings-actions {
align-items:stretch;
flex-direction:column}
.settings-actions .primary {
width:100%}
.preview {
position:static}
.stats {
grid-template-columns:1fr}
.check-grid,.form-grid {
grid-template-columns:1fr}
.wide {
grid-column:auto}
.slot-list {
grid-template-columns:repeat(2,1fr)}
.page-head {
align-items:flex-start;
flex-direction:column}
.event-card {
padding:23px}
footer {
flex-direction:column;
padding:24px 18px}
}
/* QEntry v0.9: базовые токены и компоненты расположены раньше экранных правил.
   Последний блок содержит только точечные уточнения текущего интерфейса. */
.event-cards {
grid-template-columns:repeat(3,minmax(0,1fr));
align-items:start}
.event-card {
height:100%;
display:flex;
flex-direction:column}
.event-card .card-body {
display:flex;
flex-direction:column;
align-items:flex-start;
flex:1}
.event-card .card-body>.button {
margin-top:auto}
.location {
width:100%;
display:grid;
gap:8px}
.location div+div {
border-top:1px solid var(--line);
padding-top:8px}
.location span {
color:var(--muted)}
.event-person-head {
display:flex;
align-items:center;
gap:18px}
.event-person-head .portrait.small {
width:74px;
height:74px;
margin:0;
flex:0 0 auto}
.head-actions {
display:flex;
gap:9px}
.exclusion-form {
display:grid;
grid-template-columns:1fr 1fr;
gap:12px}
.exclusion-form .consent,.exclusion-form button {
grid-column:1/-1}
.exclusion-form button {
width:100%}
.schedule-list {
display:grid;
gap:12px}
.schedule-row {
display:grid;
grid-template-columns:80px 105px 105px 100px minmax(180px,1fr) 34px;
gap:9px;
align-items:end;
padding:14px;
border:1px solid var(--line);
border-radius:12px;
background:var(--bg)}
.schedule-row .remove-schedule {
width:34px;
height:42px;
padding:0;
background:#fff;
color:var(--danger);
border:1px solid var(--line)}
.compact {
padding:8px 12px}
.registration-photo {
width:116px;
height:116px;
margin:0 0 24px}
.slot em {
font-size:11px;
color:var(--muted);
font-style:normal;
margin-top:5px}
@media(max-width:1000px) {
.event-cards {
grid-template-columns:repeat(2,minmax(0,1fr))}
.schedule-row {
grid-template-columns:repeat(2,1fr)}
.schedule-row .location-field {
grid-column:1/-1}
.schedule-row .remove-schedule {
position:absolute;
margin-left:calc(100% - 66px)}
}
@media(max-width:650px) {
.event-cards {
grid-template-columns:1fr}
.head-actions {
width:100%;
flex-direction:column}
.event-person-head {
align-items:flex-start}
.exclusion-form {
grid-template-columns:1fr}
.schedule-row {
grid-template-columns:1fr}
.schedule-row .location-field {
grid-column:auto}
.registration-photo {
width:88px;
height:88px}
}
html,body {
max-width:100%;
overflow-x:hidden}
.hero {
max-width:1050px;
margin-top:20px}
.hero h1 {
font-family:Segoe UI Variable Display,Segoe UI,Arial,sans-serif;
font-size:clamp(38px,4.6vw,68px);
font-weight:720;
letter-spacing:-2.8px;
max-width:1050px}
.event-card .card-body>h2 {
margin-top:4px}
.registration-layout>* {
min-width:0}
.registration-layout form {
width:100%}
.event-type-dialog {
width:min(760px,calc(100% - 32px));
border:0;
border-radius:20px;
padding:28px;
box-shadow:0 24px 80px rgba(23,32,51,.25)}
.event-type-dialog::backdrop {
background:rgba(16,24,40,.45);
backdrop-filter:blur(3px)}
.dialog-head {
display:flex;
justify-content:space-between;
gap:20px;
align-items:flex-start}
.dialog-head h2 {
font-size:28px}
.dialog-close {
background:var(--bg);
color:var(--muted);
width:38px;
height:38px;
padding:0;
font-size:24px}
.event-type-grid {
display:grid;
grid-template-columns:repeat(2,1fr);
gap:12px;
margin-top:14px}
.event-type-card {
border:1px solid var(--line);
border-radius:14px;
padding:20px;
color:var(--ink);
display:flex;
flex-direction:column;
gap:8px}
.event-type-card:hover {
border-color:var(--accent);
background:var(--soft)}
.event-type-card strong {
font-size:19px}
.event-type-card span {
color:var(--muted);
font-size:14px}
.event-type-card em {
color:var(--accent);
font-style:normal;
font-weight:700;
margin-top:8px}
@media(max-width:650px) {
.event-type-grid {
grid-template-columns:1fr}
.hero h1 {
letter-spacing:-1.7px}
.container {
padding-top:28px}
}
.container,footer {
width:100%}
.hero {
max-width:980px;
margin:22px auto 48px;
text-align:center}
.hero h1 {
font-family:"Trebuchet MS","Segoe UI",Arial,sans-serif;
font-size:clamp(38px,4.2vw,62px);
font-weight:700;
line-height:1.08;
letter-spacing:-1.9px;
margin-left:auto;
margin-right:auto}
.hero p:last-child {
font-size:18px}
.event-cards {
display:flex;
flex-wrap:wrap;
justify-content:center;
align-items:stretch;
gap:22px}
.event-card {
flex:0 1 350px;
width:350px;
min-width:0}
.slot-groups {
display:grid;
gap:12px;
max-height:330px;
overflow-y:auto;
padding-right:7px}
.slot-day {
border:1px solid var(--line);
border-radius:13px;
padding:14px;
background:#fff}
.slot-day-head {
display:flex;
justify-content:space-between;
align-items:baseline;
gap:14px;
margin-bottom:11px}
.slot-day-head strong {
font-size:15px}
.slot-day-head span {
color:var(--muted);
font-size:12px;
text-align:right}
.slot-times {
display:flex;
flex-wrap:wrap;
gap:8px}
.slot-time {
display:block}
.slot-time input {
position:absolute;
opacity:0;
pointer-events:none}
.slot-time span {
display:block;
min-width:72px;
padding:9px 13px;
text-align:center;
border:1px solid #cfd7e1;
border-radius:9px;
cursor:pointer;
font-weight:750;
color:var(--ink);
background:var(--bg)}
.slot-time span:hover {
border-color:var(--accent)}
.slot-time input:checked+span {
background:var(--accent);
border-color:var(--accent);
color:#fff}
.registration-layout {
gap:42px}
.registration-layout>section,.registration-layout>form {
min-width:0;
max-width:100%}
@media(max-width:800px) {
.hero {
text-align:center;
margin-top:8px}
.event-card {
flex-basis:min(100%,360px)}
.slot-day-head {
align-items:flex-start;
flex-direction:column;
gap:3px}
.slot-day-head span {
text-align:left}
.registration-layout {
gap:25px}
}
.event-card {
align-self:stretch;
height:auto}
.event-card .card-body {
height:100%}
.event-card .card-body>.button {
margin-top:auto}
.consent {
position:relative;
z-index:1;
line-height:1.45;
margin:4px 0 8px}
.policy-link,.footer-policy-link {
display:inline;
padding:0;
border:0;
border-radius:0;
background:none;
color:var(--accent);
font-weight:inherit;
line-height:inherit;
vertical-align:baseline}
.policy-link:hover,.footer-policy-link:hover {
text-decoration:underline;
background:none}
.footer-policy-link {
font-size:14px}
.policy-dialog {
position:relative;
width:min(760px,calc(100% - 32px));
max-height:86vh;
margin:auto;
border:1px solid rgba(255,255,255,.65);
border-radius:22px;
padding:30px 34px;
background:rgba(255,255,255,.94);
color:var(--ink);
box-shadow:0 28px 90px rgba(16,24,40,.28);
backdrop-filter:blur(16px)}
.policy-dialog::backdrop {
background:rgba(16,24,40,.48);
backdrop-filter:blur(5px)}
.policy-dialog h2 {
font-size:clamp(24px,4vw,32px);
margin-right:38px}
.policy-close {
position:absolute;
right:18px;
top:17px;
width:40px;
height:40px;
padding:0;
border-radius:50%;
background:var(--bg);
color:var(--ink);
font-size:27px;
font-weight:400}
.policy-close:hover {
background:var(--soft);
color:var(--accent)}
.policy-scroll {
max-height:58vh;
overflow:auto;
padding-right:14px;
white-space:pre-wrap;
line-height:1.75;
color:#344054;
scrollbar-gutter:stable}
@media(max-width:650px) {
.policy-dialog {
padding:25px 20px}
.policy-close {
right:12px;
top:12px}
.policy-scroll {
max-height:65vh}
.event-card {
width:100%}
}
.card-photo-slot {
min-height:117px;
display:flex;
align-items:flex-start}
.event-card .card-photo-slot .portrait {
margin-bottom:0}
.event-card .card-body {
display:grid;
grid-template-rows:minmax(72px,auto) minmax(58px,auto) minmax(42px,auto) minmax(46px,auto) minmax(54px,auto) minmax(38px,auto) auto;
align-content:start;
width:100%}
.card-title-slot,.card-name-slot,.card-role-slot,.card-description-slot,.card-location-slot,.card-email-slot {
min-width:0}
.card-title-slot {
display:flex;
align-items:flex-start}
.card-title-slot h2,.card-name-slot h3,.card-role-slot p,.card-description-slot p {
margin-bottom:0}
.card-name-slot {
padding-top:4px}
.card-role-slot {
padding-top:3px}
.card-role-slot p+p {
margin-top:7px}
.card-description-slot,.card-location-slot,.card-email-slot {
padding-top:10px}
.card-email-slot {
overflow-wrap:anywhere}
.event-card .card-body>.button {
justify-self:start;
align-self:end;
margin-top:14px}
@media(max-width:650px) {
.card-photo-slot {
min-height:110px}
.event-card .card-body {
grid-template-rows:auto}
.card-title-slot,.card-name-slot,.card-role-slot,.card-email-slot {
min-height:0}
.card-title-slot,.card-name-slot,.card-role-slot {
padding-bottom:8px}
}
.event-card .card-body {
display:flex;
flex-direction:column}
.card-title-slot {
min-height:72px}
.event-cards.has-photo .card-photo-slot {
min-height:117px}
.event-cards:not(.has-photo) .card-photo-slot {
min-height:0}
.event-cards.has-name .card-name-slot {
min-height:58px}
.event-cards.has-role .card-role-slot {
min-height:42px}
.event-cards.has-description .card-description-slot {
min-height:46px}
.event-cards.has-location .card-location-slot {
min-height:54px}
.event-cards.has-email .card-email-slot {
min-height:38px}
.event-card .card-body>.button {
margin-top:auto}
@media(max-width:650px) {
.event-card .card-body {
display:flex}
.card-title-slot,.event-cards.has-name .card-name-slot,.event-cards.has-role .card-role-slot,.event-cards.has-description .card-description-slot,.event-cards.has-location .card-location-slot,.event-cards.has-email .card-email-slot {
min-height:0}
.event-cards:not(.has-photo) .card-photo-slot {
min-height:0}
}
.event-card .card-title-slot {
min-height:84px}
.event-card .card-title-slot h2 {
font-size:27px;
font-weight:760;
line-height:1.16;
letter-spacing:-.8px;
color:var(--ink)}
.event-cards.has-name .card-name-slot {
min-height:62px;
padding-top:8px}
.event-card .card-name-slot h3 {
font-size:17px;
font-weight:650;
line-height:1.45;
letter-spacing:-.15px;
color:#344054}
.event-card .card-role-slot {
padding-top:8px}
.event-card .card-role-slot p {
font-size:14px;
font-weight:450;
line-height:1.5;
color:var(--muted)}
.event-card .card-email-slot {
font-size:14px;
font-weight:450;
line-height:1.45}
.event-card .card-email-slot a {
color:var(--accent)}
@media(max-width:650px) {
.event-card .card-title-slot {
min-height:0;
padding-bottom:15px}
.event-cards.has-name .card-name-slot {
min-height:0;
padding-top:0;
padding-bottom:13px}
}
.person-name {
display:flex;
flex-direction:column;
gap:1px}
.person-name-main {
white-space:nowrap}
.person-name-patronymic {
display:block}
.form-message {
min-height:0;
}
.form-message:empty {
display:none;
}
.form-message .alert {
margin-bottom:16px;
}
.error-page {
max-width:680px;
margin:8vh auto;
text-align:center;
padding:clamp(28px,6vw,58px);
}
.error-page h1 {
font-size:clamp(32px,5vw,48px);
}
.error-page p {
max-width:520px;
margin:0 auto 24px;
color:var(--muted);
}
.error-code {
display:inline-block;
margin-bottom:12px;
color:var(--accent);
font-size:14px;
font-weight:800;
letter-spacing:1.5px;
}
@media(max-width:390px) {
.person-name-main {
white-space:normal}
}

/* v0.11 — устойчивая мобильная форма записи */
.registration-layout .consent {
display:grid;
grid-template-columns:18px minmax(0,1fr);
column-gap:10px;
align-items:start;
width:100%;
margin:4px 0 8px;
}
.registration-layout .consent input {
width:16px;
height:16px;
margin:3px 0 0;
}
.registration-layout .consent span {
display:block;
min-width:0;
font-weight:500;
line-height:1.45;
}
.registration-layout .policy-link {
display:inline;
width:auto;
max-width:100%;
padding:0;
text-align:left;
white-space:normal;
overflow-wrap:anywhere;
}
.registration-past td,.registration-inactive td {
background:#f5f6f8;
color:#7a8494;
}
.registration-past td:first-child,.registration-inactive td:first-child {
box-shadow:inset 3px 0 0 #c8cfd8;
}
.registration-inactive td {
color:#9299a5;
}
.registration-state {
display:inline-flex;
padding:3px 8px;
border-radius:999px;
background:#edf0f3;
color:#697386;
font-size:12px;
font-weight:700;
}
@media(max-width:800px) {
.container {
padding-left:14px;
padding-right:14px;
}
.registration-layout {
width:100%;
gap:20px;
}
.registration-layout>section,.registration-layout>form {
width:100%;
min-width:0;
}
.registration-layout form.panel {
padding:20px;
overflow:hidden;
}
.registration-layout .form-grid {
width:100%;
}
.registration-layout input,.registration-layout button.full {
max-width:100%;
}
.slot-groups {
width:100%;
padding-right:4px;
}
.slot-day {
min-width:0;
padding:12px;
}
.slot-times {
gap:7px;
}
.slot-time span {
min-width:66px;
padding:8px 10px;
}
footer {
align-items:flex-start;
}
.footer-policy-link {
max-width:100%;
text-align:left;
white-space:normal;
}
}
@media(max-width:420px) {
.container {
padding-left:10px;
padding-right:10px;
}
.cancel-page form { margin:22px 0 10px; }
.cancel-page .danger.button { background:#b42318; color:#fff; border:0; }
.cancel-page .danger.button:disabled { background:#d0d5dd; cursor:not-allowed; }
.alert.success { background:#ecfdf3; color:#027a48; border-color:#abefc6; }
.registration-layout form.panel {
padding:18px 16px;
border-radius:16px;
}

.registration-intro h1 {
font-size:clamp(34px,11vw,46px);
}
.registration-intro h2 {
font-size:19px;
}
.slot-time {
flex:1 1 62px;
}
.slot-time span {
min-width:0;
width:100%;
}
}

/* v0.16 — профиль QCore и прямая смена пароля через QAccess */
.profile-grid {
display:grid;
grid-template-columns:minmax(260px,.72fr) minmax(360px,1.28fr);
gap:22px;
align-items:start;
}
.profile-summary,.password-panel { min-width:0; }
.profile-summary h2,.password-panel h2 { margin-top:6px; }
.role-badge {
display:inline-flex;
margin-top:12px;
padding:7px 11px;
border-radius:999px;
background:#edf3ff;
color:var(--accent);
font-size:13px;
font-weight:800;
}
.password-panel form { display:grid; gap:15px; margin-top:22px; }
.password-panel label { display:grid; gap:7px; }
.password-policy { padding:12px 14px; border-radius:12px; background:#f6f8fb; line-height:1.5; }
@media(max-width:800px) {
.profile-grid { grid-template-columns:1fr; }
.profile-summary,.password-panel { padding:20px; }
}

/* v0.17 — UEvent / U Ecosystem: единая оболочка админки */
.admin-app {
min-height:100vh;
display:grid;
grid-template-columns:244px minmax(0,1fr);
background:linear-gradient(90deg,#102e59 0,#102e59 244px,#f3f6fb 244px,#f3f6fb 100%);
}
.admin-sidebar {
position:sticky;
top:0;
height:100vh;
display:flex;
flex-direction:column;
padding:18px 14px;
background:linear-gradient(180deg,#153b72 0%,#102e59 56%,#0c2549 100%);
color:#fff;
box-shadow:8px 0 28px rgba(16,46,89,.09);
z-index:20;
}
.sidebar-brand {
display:flex;
align-items:center;
gap:11px;
padding:5px 8px 23px;
color:#fff;
border-bottom:1px solid rgba(255,255,255,.12);
}
.sidebar-logo,.login-logo {
width:38px;
height:38px;
display:grid;
place-items:center;
flex:0 0 auto;
border-radius:12px;
background:linear-gradient(145deg,#2a74ed,#18b9b3);
color:#fff;
font-weight:850;
font-size:21px;
box-shadow:0 8px 20px rgba(13,105,210,.28);
}
.sidebar-brand strong { display:block; font-size:17px; line-height:1.1; letter-spacing:-.35px; }
.sidebar-brand small { display:block; margin-top:4px; color:#9fc0ea; font-size:11px; font-weight:550; }
.admin-sidebar .admin-nav {
display:flex;
flex-direction:column;
align-items:stretch;
gap:4px;
padding-top:20px;
}
.admin-sidebar .nav-section {
margin:18px 11px 7px;
color:#7fa6d7;
font-size:10px;
font-weight:800;
letter-spacing:1.15px;
text-transform:uppercase;
}
.admin-sidebar .nav-section:first-child { margin-top:0; }
.admin-sidebar .admin-nav a {
display:flex;
align-items:center;
gap:11px;
min-height:43px;
padding:9px 11px;
border-radius:10px;
color:#cfe0f5;
font-size:14px;
font-weight:650;
transition:background .16s ease,color .16s ease,transform .16s ease;
}
.admin-sidebar .admin-nav a:hover { background:rgba(255,255,255,.075); color:#fff; transform:translateX(2px); }
.admin-sidebar .admin-nav a.active { background:rgba(94,154,234,.24); color:#fff; box-shadow:inset 3px 0 0 #55a3ff; }
.nav-icon {
width:24px;
height:24px;
display:grid;
place-items:center;
border-radius:7px;
background:rgba(255,255,255,.09);
font-size:14px;
}
.sidebar-foot {
display:flex;
align-items:center;
gap:9px;
margin-top:auto;
padding:16px 9px 4px;
border-top:1px solid rgba(255,255,255,.1);
color:#8fb0da;
font-size:10px;
line-height:1.35;
}
.sidebar-foot-mark { font-size:15px; font-weight:850; color:#4ea5ff; }
.admin-stage { min-width:0; }
.admin-topbar {
height:70px;
display:flex;
align-items:center;
justify-content:space-between;
padding:0 clamp(22px,3vw,46px);
background:rgba(255,255,255,.94);
border-bottom:1px solid #e1e7f0;
position:sticky;
top:0;
z-index:15;
backdrop-filter:blur(12px);
}
.ecosystem-name,.login-ecosystem {
color:#8290a5;
font-size:13px;
font-weight:750;
letter-spacing:.1px;
}
.profile-menu { position:relative; }
.profile-menu summary {
list-style:none;
display:flex;
align-items:center;
gap:10px;
padding:6px 8px;
border-radius:11px;
cursor:pointer;
user-select:none;
}
.profile-menu summary::-webkit-details-marker { display:none; }
.profile-menu summary:hover,.profile-menu[open] summary { background:#f1f5fb; }
.profile-avatar {
width:34px;
height:34px;
display:grid;
place-items:center;
border-radius:50%;
background:#e7efff;
color:#2563eb;
font-size:13px;
font-weight:850;
}
.profile-avatar.large { width:42px; height:42px; font-size:16px; }
.profile-caption { display:flex; flex-direction:column; min-width:120px; }
.profile-caption strong { max-width:210px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#172033; font-size:13px; line-height:1.25; }
.profile-caption small { color:#7d899b; font-size:10px; }
.profile-chevron { color:#8e99aa; transform:translateY(-2px); }
.profile-popover {
position:absolute;
right:0;
top:calc(100% + 9px);
width:285px;
padding:9px;
border:1px solid #dce4ef;
border-radius:14px;
background:#fff;
box-shadow:0 18px 45px rgba(25,42,70,.16);
}
.profile-popover-head { display:flex; align-items:center; gap:11px; padding:9px 9px 13px; border-bottom:1px solid #edf0f4; }
.profile-popover-head div { min-width:0; display:flex; flex-direction:column; }
.profile-popover-head strong,.profile-popover-head small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.profile-popover-head strong { font-size:13px; }
.profile-popover-head small { color:#7d899b; font-size:11px; }
.profile-popover>a,.profile-logout {
width:100%;
display:flex;
justify-content:flex-start;
padding:10px 11px;
border-radius:9px;
background:transparent;
color:#26354b;
font-size:13px;
font-weight:650;
}
.profile-popover>a { margin-top:6px; }
.profile-popover>a:hover,.profile-logout:hover { background:#f2f6fc; }
.profile-popover form { margin:0; }
.profile-logout { color:#b42318; }
.admin-container {
width:100%;
max-width:1320px;
min-height:calc(100vh - 70px);
margin:0 auto;
padding:42px clamp(24px,4vw,58px) 64px;
}
.admin-container .page-head { align-items:center; margin-bottom:30px; }
.admin-container .page-head h1 { margin:4px 0 7px; font-size:clamp(32px,4vw,42px); letter-spacing:-1.35px; }
.page-kicker { margin:0; color:#2f6ee9; font-size:11px; font-weight:820; letter-spacing:1.3px; text-transform:uppercase; }
.page-description { margin:0; color:#728096; font-size:14px; }
.admin-container .panel {
border-color:#dce4ee;
border-radius:15px;
box-shadow:0 9px 26px rgba(24,48,82,.055);
}
.admin-container .panel h2 { font-size:20px; letter-spacing:-.45px; }
.admin-container .primary { background:#2c66df; box-shadow:0 5px 14px rgba(44,102,223,.17); }
.admin-container .primary:hover { background:#1e54c5; }
.admin-container .secondary { border-color:#d7e0eb; box-shadow:0 1px 2px rgba(20,38,63,.03); }
.admin-container input,.admin-container select,.admin-container textarea { border-color:#d5deea; background:#fff; }
.admin-list { gap:0; overflow:hidden; border:1px solid #dbe3ed; border-radius:14px; background:#fff; box-shadow:0 8px 26px rgba(24,48,82,.05); }
.admin-card { border:0; border-bottom:1px solid #e4e9f0; border-radius:0; padding:20px 22px; box-shadow:none; }
.admin-card:last-child { border-bottom:0; }
.admin-card:hover { border-color:#e4e9f0; background:#f8faff; box-shadow:none; }
.admin-card h2 { margin:8px 0 3px; font-size:18px; letter-spacing:-.3px; }
.admin-card>strong { color:#153b72; font-size:24px; }
.admin-container .status { letter-spacing:.25px; }
.admin-container .stats { gap:12px; }
.admin-container .stats>div { border:1px solid #dce4ee; border-radius:14px; box-shadow:0 7px 22px rgba(24,48,82,.045); }
.admin-container table { border-collapse:separate; border-spacing:0; }
.admin-container th { background:#f7f9fc; color:#66758a; font-size:11px; letter-spacing:.45px; text-transform:uppercase; }
.admin-container th,.admin-container td { border-bottom-color:#e3e9f1; padding-top:14px; padding-bottom:14px; }
.admin-container tbody tr:last-child td { border-bottom:0; }
.admin-container .settings-intro { border-color:#d9e5f5; background:#edf4ff; }
.admin-container .settings-intro-icon { background:#dbe9ff; color:#2f6ee9; }
.profile-hero-avatar {
width:70px;
height:70px;
display:grid;
place-items:center;
margin:0 auto 18px;
border-radius:20px;
background:linear-gradient(145deg,#2a74ed,#18b9b3);
color:#fff;
font-size:31px;
font-weight:850;
box-shadow:0 10px 24px rgba(37,99,235,.2);
}
.profile-summary { text-align:center; }
.profile-summary .role-badge { margin-top:6px; }
.uevent-brand { color:#153b72; }
.login-ecosystem { margin-left:auto; }
.login-panel { padding:34px; text-align:center; }
.login-panel .login-logo { width:54px; height:54px; margin:0 auto 18px; border-radius:16px; font-size:27px; }
.login-panel h1 { margin-bottom:10px; }
.login-panel .sso-button { margin-top:22px; }
.login-panel .hint { margin:16px 0 0; }

/* v0.17.1 — полноценный экран входа и непрерывная колонка навигации */
.login-container {
width:100%;
max-width:none;
min-height:100vh;
padding:clamp(24px,5vw,72px);
display:grid;
place-items:center;
background:
radial-gradient(circle at 12% 16%,rgba(49,111,230,.12),transparent 28%),
radial-gradient(circle at 88% 85%,rgba(20,184,177,.10),transparent 25%),
#f2f6fb;
}
.login-shell { width:100%; min-height:0; display:grid; place-items:center; }
.login-card {
width:min(920px,100%);
min-height:530px;
display:grid;
grid-template-columns:minmax(330px,.92fr) minmax(390px,1.08fr);
overflow:hidden;
border:1px solid #d9e2ee;
border-radius:24px;
background:#fff;
box-shadow:0 30px 75px rgba(23,52,91,.14);
}
.login-brand-panel {
position:relative;
display:flex;
flex-direction:column;
padding:38px;
overflow:hidden;
background:linear-gradient(155deg,#174884 0%,#12386a 53%,#0d2c55 100%);
color:#fff;
}
.login-brand-panel::before,.login-brand-panel::after {
content:"";
position:absolute;
border-radius:50%;
border:1px solid rgba(255,255,255,.09);
}
.login-brand-panel::before { width:310px; height:310px; right:-170px; top:60px; }
.login-brand-panel::after { width:210px; height:210px; right:-75px; bottom:-100px; background:rgba(39,116,228,.12); }
.login-brand-top { position:relative; z-index:1; display:flex; align-items:center; gap:12px; }
.login-brand-top .login-logo { width:44px; height:44px; margin:0; border-radius:13px; font-size:23px; }
.login-brand-top strong { display:block; font-size:19px; letter-spacing:-.4px; }
.login-brand-top small { display:block; margin-top:2px; color:#9fc4ef; font-size:11px; }
.login-brand-copy { position:relative; z-index:1; margin:auto 0; padding:48px 0; }
.login-brand-kicker { margin-bottom:12px; color:#8fbdff; font-size:11px; font-weight:800; letter-spacing:1.35px; text-transform:uppercase; }
.login-brand-copy h1 { max-width:330px; margin-bottom:18px; color:#fff; font-size:clamp(38px,4vw,52px); line-height:1.03; letter-spacing:-2px; }
.login-brand-copy>p:last-child { max-width:335px; margin:0; color:#c2d5ed; font-size:15px; line-height:1.65; }
.login-brand-note { position:relative; z-index:1; display:flex; align-items:center; gap:11px; padding:13px 14px; border:1px solid rgba(255,255,255,.1); border-radius:13px; background:rgba(255,255,255,.07); }
.login-brand-note>span { width:28px; height:28px; display:grid; place-items:center; border-radius:50%; background:rgba(54,210,174,.16); color:#7de2c8; font-weight:900; }
.login-brand-note p { margin:0; }
.login-brand-note strong,.login-brand-note small { display:block; }
.login-brand-note strong { font-size:12px; }
.login-brand-note small { margin-top:2px; color:#a9c3e2; font-size:10px; }
.login-auth-panel { display:flex; flex-direction:column; justify-content:center; padding:clamp(38px,5vw,66px); }
.login-auth-head { margin-bottom:28px; }
.login-auth-head h2 { margin:7px 0 10px; color:#172033; font-size:32px; letter-spacing:-1.1px; }
.login-auth-head>p:last-child { margin:0; color:#718096; font-size:14px; }
.login-auth-panel .form-message .alert { margin-bottom:18px; text-align:left; }
.login-auth-panel .sso-button { min-height:50px; justify-content:space-between; padding:12px 17px 12px 20px; background:#2c66df; box-shadow:0 8px 20px rgba(44,102,223,.2); }
.login-auth-panel .sso-button b { width:28px; height:28px; display:grid; place-items:center; border-radius:8px; background:rgba(255,255,255,.15); font-size:17px; }
.login-security { display:flex; align-items:flex-start; gap:10px; margin-top:22px; padding-top:20px; border-top:1px solid #e8edf3; color:#7a8799; }
.login-security>span { width:25px; height:25px; display:grid; place-items:center; flex:0 0 auto; border-radius:50%; background:#edf3ff; color:#2c66df; font-weight:800; }
.login-security p { margin:1px 0 0; font-size:11px; line-height:1.55; }

@media(max-width:900px) {
.admin-app { display:block; background:#f3f6fb; }
.admin-sidebar { position:relative; height:auto; min-height:0; padding:11px 14px; }
.sidebar-brand { padding:3px 6px 11px; border-bottom:0; }
.sidebar-logo { width:34px; height:34px; border-radius:10px; font-size:18px; }
.admin-sidebar .admin-nav { flex-direction:row; padding:5px 0 0; overflow-x:auto; }
.admin-sidebar .nav-section,.sidebar-foot { display:none; }
.admin-sidebar .admin-nav a { flex:0 0 auto; min-height:38px; padding:7px 11px; }
.admin-sidebar .admin-nav a.active { box-shadow:inset 0 -2px 0 #64adff; }
.admin-topbar { height:62px; padding:0 16px; }
.admin-container { min-height:calc(100vh - 160px); padding:28px 16px 48px; }
.profile-caption { display:none; }
.profile-popover { right:-4px; width:min(285px,calc(100vw - 24px)); }
.login-card { grid-template-columns:1fr; width:min(560px,100%); }
.login-brand-panel { min-height:260px; padding:28px; }
.login-brand-copy { padding:40px 0 26px; }
.login-brand-copy h1 { font-size:38px; }
.login-brand-note { display:none; }
.login-auth-panel { padding:36px 30px; }
}
@media(max-width:620px) {
.admin-container .page-head { align-items:flex-start; flex-direction:column; }
.admin-container .page-head>.primary,.admin-container .page-head>button { width:100%; }
.admin-card { align-items:flex-start; padding:17px; }
.admin-card>strong { font-size:20px; }
.head-actions { width:100%; display:grid; grid-template-columns:1fr 1fr; }
.head-actions .button { text-align:center; }
.admin-container .stats { grid-template-columns:1fr; }
.admin-container .panel { padding:20px; }
.profile-popover-head strong { max-width:185px; }
.login-container { padding:14px; align-items:start; }
.login-card { min-height:0; border-radius:19px; }
.login-brand-panel { min-height:220px; padding:24px; }
.login-brand-copy { padding:34px 0 8px; }
.login-brand-copy h1 { font-size:34px; }
.login-brand-copy>p:last-child { font-size:13px; }
.login-auth-panel { padding:29px 23px; }
.login-auth-head h2 { font-size:28px; }
}
