:root {
  --bg: #f4f2ee;
  --ink: #1a1830;
  --indigo: #2d2a6e;
  --indigo-soft: #4b47a8;
  --amber: #e8a13a;
  --line: #e0ddd5;
  --muted: #6f6b7d;
  --danger: #c0392b;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'Inter', system-ui, -apple-system, sans-serif; background: var(--bg); color: var(--ink); line-height: 1.5; }
.page-root { min-height: 100vh; padding: 40px 16px; }
.loading, .notfound { text-align: center; color: var(--muted); padding: 80px 20px; font-size: 16px; }

/* контент блоков */
.b-heading { font-size: 30px; font-weight: 700; }
.b-subheading { font-size: 20px; font-weight: 600; }
.b-text { font-size: 15px; color: #333; }
.b-link { color: var(--indigo-soft); text-decoration: underline; word-break: break-all; }
.b-divider { border: none; border-top: 1px solid var(--line); margin: 6px 0; }
.b-image img { max-width: 100%; border-radius: 8px; display: block; }
.b-image .ph { background: #f0ede6; border: 1px dashed var(--line); border-radius: 8px; padding: 40px; text-align: center; color: var(--muted); }
.b-button { display: inline-block; background: var(--indigo); color: #fff; padding: 11px 22px; border-radius: 8px; text-decoration: none; font-weight: 600; }
.b-datetime, .b-place { display: flex; align-items: center; gap: 10px; font-size: 15px; }
.b-datetime .ico, .b-place .ico { font-size: 20px; }
.b-file a { color: var(--indigo-soft); text-decoration: none; font-weight: 500; }
.b-contacts div { font-size: 14px; }
.b-links { display: flex; flex-direction: column; gap: 4px; }
.b-links a { color: var(--indigo-soft); text-decoration: none; font-size: 14px; }

/* карточка страницы */
.pp-wrap { max-width: 680px; margin: 0 auto; background: #fff; border-radius: 14px; box-shadow: 0 8px 40px rgba(45,42,110,.1); padding: 40px; }
.pp-logo img { max-height: 64px; margin-bottom: 20px; }
.pp-block { margin: 14px 0; }
.pp-form { margin-top: 28px; border-top: 1px solid var(--line); padding-top: 24px; }
.pp-fields { display: flex; flex-wrap: wrap; gap: 16px; }
.pp-field { width: 100%; }
.pp-field.pp-half { width: calc(50% - 8px); }
.pp-flabel { display: block; font-size: 13px; font-weight: 600; margin-bottom: 6px; }
.pp-req { color: var(--danger); }
.pp-field input, .pp-field textarea, .pp-field select { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; font-family: inherit; }
.pp-field input:focus, .pp-field textarea:focus, .pp-field select:focus { outline: none; border-color: var(--indigo-soft); }
.pp-field textarea { min-height: 90px; resize: vertical; }
.pp-options { display: flex; flex-direction: column; gap: 6px; }
.pp-opt, .pp-consent { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.pp-opt input, .pp-consent input { width: auto; }
.pp-help { font-size: 12px; color: var(--muted); margin-top: 4px; }
.pp-file { display: flex; align-items: center; gap: 12px; cursor: pointer; }
.pp-file input[type=file] { position: absolute; width: 0; height: 0; opacity: 0; overflow: hidden; }
.pp-file-btn { display: inline-block; background: #efece5; border: 1px solid var(--line); border-radius: 8px; padding: 9px 16px; font-size: 14px; font-weight: 500; white-space: nowrap; }
.pp-file-btn:hover { border-color: var(--indigo-soft); }
.pp-file-name { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pp-consent { margin-top: 18px; }
.pp-submit { margin-top: 22px; width: 100%; background: var(--indigo); color: #fff; border: none; padding: 14px; border-radius: 9px; font-size: 15px; font-weight: 600; cursor: pointer; }
.pp-submit:hover:not(:disabled) { background: var(--indigo-soft); }
.pp-submit:disabled { opacity: .6; cursor: not-allowed; }
.pp-message { margin-top: 14px; font-size: 14px; text-align: center; }
.pp-message.ok { color: #2c7a44; }
.pp-message.err { color: var(--danger); }

/* экран успеха */
.pp-success { max-width: 680px; margin: 0 auto; background: #fff; border-radius: 14px; box-shadow: 0 8px 40px rgba(45,42,110,.1); padding: 60px 40px; text-align: center; }
.pp-success .check { font-size: 48px; color: #2c7a44; margin-bottom: 16px; }
.pp-success .msg { font-size: 18px; }

@media (max-width: 600px) {
  .pp-field.pp-half { width: 100%; }
  .pp-wrap { padding: 28px 20px; }
}
