/* ============================================================
   «Свои гости» — интерфейс продукта.

   ВХОД. Не две половины экрана (так делают все), а один проём: вход в систему
   проходит сквозь него. Небо за проёмом меняется по времени суток — утром
   владелец видит рассвет, вечером закат. Голубой #74cfff живёт только на тёмном.

   РАБОЧИЕ ЭКРАНЫ. Тёплая бумага, глубокий графит, приглушённое золото.
   Заголовки и суммы — Cormorant Garamond, интерфейс — Golos Text.
   ============================================================ */

:root {
  --night: #0f1c26;
  --night-2: #142633;
  --sky: #74cfff;

  --paper: #faf7f2;
  --paper-2: #ffffff;
  --ink: #14212b;
  --ink-soft: #5d6b78;
  --ink-faint: #8d9aa5;
  --rule: #e3ddd3;
  --gold: #a8823c;
  --gold-soft: #d9c48f;

  --ok: #2f6f4e;
  --err: #a8362a;

  --serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans: 'Golos Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --shadow: 0 1px 2px rgba(20, 33, 43, .05), 0 12px 32px rgba(20, 33, 43, .07);
  --radius: 10px;

  --sky-top: #16283a;
  --sky-bottom: #0d1a24;
  --sky-glow: rgba(116, 207, 255, .16);

  /* насколько скруглён верх проёма. 13.5rem — арка, 14px — прямой портал.
     Одно число меняет характер входа целиком. */
  --arch-top: 13.5rem;
}

/* Небо по времени суток — ставится атрибутом на <body> при загрузке. */
body[data-time="dawn"]  { --sky-top: #1b2b3d; --sky-bottom: #0e1a25;
                          --sky-glow: rgba(214, 158, 96, .20); }
body[data-time="day"]   { --sky-top: #18304a; --sky-bottom: #0d1a26;
                          --sky-glow: rgba(116, 207, 255, .18); }
body[data-time="dusk"]  { --sky-top: #1e2739; --sky-bottom: #0e1720;
                          --sky-glow: rgba(197, 130, 84, .18); }
body[data-time="night"] { --sky-top: #101d29; --sky-bottom: #08111a;
                          --sky-glow: rgba(116, 207, 255, .10); }

* { box-sizing: border-box; }

body {
  margin: 0;
  font: 400 15.5px/1.6 var(--sans);
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}

.hidden { display: none !important; }

/* ============================ ВХОД ============================ */

.gate {
  position: relative; min-height: 100vh; overflow: hidden;
  display: grid; place-items: center; padding: 40px 20px;
  background: var(--sky-bottom);
}

.sky {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, var(--sky-top) 0%, var(--sky-bottom) 78%);
  transition: background 1.2s ease;
}
/* свет у горизонта — то, ради чего люди и едут к морю */
.horizon {
  position: absolute; left: 50%; bottom: -34vh; transform: translateX(-50%);
  width: 150vw; height: 70vh; pointer-events: none;
  background: radial-gradient(50% 60% at 50% 100%,
              var(--sky-glow) 0%, rgba(0, 0, 0, 0) 72%);
  transition: background 1.2s ease;
}
.grain {
  position: absolute; inset: 0; opacity: .3; pointer-events: none;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

.gate-inner { position: relative; width: 100%; max-width: 27rem; }

/* ---------- проём ----------
   Волосяная линия с переходом «голубой → золото»: рамка-градиент,
   поверх неё внутренняя заливка. */

.arch-frame {
  position: relative; padding: 1px;
  border-radius: var(--arch-top) var(--arch-top) 12px 12px;
  background: linear-gradient(180deg,
              rgba(116, 207, 255, .55) 0%,
              rgba(168, 130, 60, .45) 55%,
              rgba(168, 130, 60, .10) 100%);
  box-shadow: 0 40px 90px rgba(0, 0, 0, .38);
  animation: archIn 1.1s cubic-bezier(.22, .61, .36, 1) both;
}
.arch-body {
  border-radius: calc(var(--arch-top) - 1px) calc(var(--arch-top) - 1px) 11px 11px;
  background:
    radial-gradient(120% 60% at 50% 0%, rgba(116, 207, 255, .09) 0%,
                    rgba(255, 255, 255, 0) 60%),
    linear-gradient(180deg, rgba(23, 42, 58, .92) 0%, rgba(12, 25, 35, .96) 100%);
  padding: clamp(58px, 8vw, 84px) clamp(30px, 5vw, 52px) clamp(26px, 3vw, 34px);
  text-align: center; color: #dfe8ef;
}

@keyframes archIn {
  from { opacity: 0; transform: translateY(18px) scale(.985); }
  to   { opacity: 1; transform: none; }
}
@keyframes rise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: none; }
}

.mono {
  font-family: var(--serif); font-size: 28px; font-weight: 500;
  letter-spacing: 2px; color: #fff; opacity: .9;
}
.wordmark {
  font-family: var(--serif); font-weight: 500;
  font-size: clamp(36px, 5.6vw, 48px); line-height: 1.05;
  margin: 8px 0 0; color: #fff; letter-spacing: -.4px;
}
.wordmark-sub {
  margin: 12px 0 0; font-size: 11px; letter-spacing: .18em;
  text-transform: uppercase; color: var(--sky); opacity: .8;
}

.arch-body > * { animation: rise .7s ease both; }
.mono { animation-delay: .25s; }
.wordmark { animation-delay: .34s; }
.wordmark-sub { animation-delay: .42s; }
.tabs { animation-delay: .5s; }
.pane { animation-delay: .58s; }

/* ---------- вкладки и форма внутри проёма ---------- */

.tabs {
  display: flex; justify-content: center; gap: 26px; margin: 32px 0 6px;
  border-bottom: 1px solid rgba(233, 240, 246, .12);
}
.tab {
  position: relative; padding: 0 0 12px; border: 0; background: none;
  font: 500 13.5px var(--sans); color: rgba(223, 232, 239, .5);
  cursor: pointer; transition: color .2s;
}
.tab::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1.5px;
  background: var(--gold-soft); transform: scaleX(0);
  transition: transform .3s cubic-bezier(.22, .61, .36, 1);
}
.tab:hover { color: rgba(223, 232, 239, .8); }
.tab.is-active { color: #fff; }
.tab.is-active::after { transform: scaleX(1); }

.pane { display: none; text-align: left; }
.pane.is-active { display: block; }

.greeting {
  margin: 22px 0 2px; text-align: center;
  font-family: var(--serif); font-size: 23px; color: #fff; opacity: .9;
}

.pane label {
  display: block; margin-top: 18px;
  font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  color: rgba(223, 232, 239, .45);
}
.pane input {
  display: block; width: 100%; margin-top: 6px;
  padding: 8px 2px; border: 0; border-bottom: 1px solid rgba(223, 232, 239, .22);
  background: transparent; border-radius: 0;
  font: 400 16px var(--sans); color: #fff;
  letter-spacing: normal; text-transform: none; transition: border-color .25s;
}
.pane input:focus { outline: none; border-bottom-color: var(--sky); }
.pane input:-webkit-autofill {
  -webkit-text-fill-color: #fff;
  -webkit-box-shadow: 0 0 0 1000px rgba(18, 34, 47, .96) inset;
}

.btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 100%; margin-top: 26px; padding: 14px 22px;
  border: 0; border-radius: 8px; cursor: pointer;
  background: #f4efe6; color: #14212b;
  font: 500 15px var(--sans); letter-spacing: .01em;
  transition: transform .18s ease, box-shadow .25s ease, background .2s;
}
.btn:hover { background: #fff; box-shadow: 0 12px 28px rgba(0, 0, 0, .3);
             transform: translateY(-1px); }
.btn:active { transform: none; box-shadow: none; }

.note { margin: 14px 0 0; font-size: 12.5px; color: rgba(223, 232, 239, .5);
        text-align: center; }
.err:not(:empty) { margin: 12px 0 0; font-size: 13.5px; color: #ff9a8e;
       text-align: center; }

.proof {
  display: flex; align-items: center; justify-content: center;
  gap: 18px; margin: 26px 0 0; font-size: 12.5px;
  color: rgba(223, 232, 239, .45);
  animation: rise .8s ease .8s both;
}
.proof b {
  font-family: var(--serif); font-size: 17px; font-weight: 500; color: #fff;
  opacity: .85; margin-right: 4px;
  font-variant-numeric: lining-nums; font-feature-settings: "lnum" 1;
}
.proof i { width: 3px; height: 3px; border-radius: 50%;
           background: rgba(223, 232, 239, .3); }

@media (max-width: 560px) {
  .gate { padding: 0; align-items: stretch; }
  .gate-inner { max-width: none; }
  .arch-frame { border-radius: 0; padding: 0; box-shadow: none;
                background: none; }
  .arch-body { border-radius: 0; min-height: 100vh; padding: 58px 26px 40px; }
  .proof { display: none; }
}

/* ============================ РАБОЧИЙ ЭКРАН ============================ */

.topbar {
  display: flex; align-items: center; gap: 14px;
  padding: 13px 22px; background: var(--paper-2);
  border-bottom: 1px solid var(--rule); position: sticky; top: 0; z-index: 5;
}
.topbar-mark {
  width: 30px; height: 30px; flex: none; display: grid; place-items: center;
  border-radius: 8px; background: var(--night); color: #f2f6f9;
  font-family: var(--serif); font-size: 15px; font-weight: 500;
}
.topbar-title { font-family: var(--serif); font-size: 21px; font-weight: 500; }
.topbar-right { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.who { color: var(--ink-soft); font-size: 13.5px; }

.layout {
  display: grid; grid-template-columns: 264px 1fr; gap: 26px;
  max-width: 1180px; margin: 0 auto; padding: 28px 22px 70px;
  align-items: start;
}

.progress-card {
  background: var(--paper-2); border: 1px solid var(--rule);
  border-radius: var(--radius); padding: 17px; margin-bottom: 14px;
}
.progress-title { font-family: var(--serif); font-size: 18px; margin-bottom: 11px; }
.progress-bar { height: 5px; background: #ece6dc; border-radius: 99px; overflow: hidden; }
#progress-fill { height: 100%; width: 0; background: var(--gold);
                 transition: width .45s cubic-bezier(.22, .61, .36, 1); }
.progress-text { font-size: 12.5px; color: var(--ink-soft); margin-top: 9px; }

.steps { display: flex; flex-direction: column; gap: 2px; }
.step {
  display: flex; align-items: center; gap: 11px; padding: 9px 12px;
  border-radius: 8px; cursor: pointer; border: 1px solid transparent;
  background: transparent; font: 400 14.5px var(--sans); color: var(--ink);
  text-align: left; width: 100%; transition: background .18s, border-color .18s;
}
.step:hover { background: var(--paper-2); border-color: var(--rule); }
.step.is-active { background: var(--paper-2); border-color: var(--gold-soft);
                  font-weight: 500; }
.step .mark {
  width: 18px; height: 18px; border-radius: 50%; flex: none;
  display: grid; place-items: center; font-size: 11px;
  border: 1px solid var(--rule); color: transparent;
}
.step.done .mark { background: var(--ok); border-color: var(--ok); color: #fff; }
.side-note { font-size: 12px; color: var(--ink-faint); margin-top: 16px; padding: 0 4px; }

.content { display: flex; flex-direction: column; gap: 16px; min-width: 0; }

.card {
  background: var(--paper-2); border: 1px solid var(--rule);
  border-radius: var(--radius); padding: 24px; box-shadow: var(--shadow);
}
.card h2 { font-family: var(--serif); font-weight: 500; font-size: 26px;
           margin: 0 0 6px; letter-spacing: -.2px; }
.card .lead { color: var(--ink-soft); margin: 0 0 20px; font-size: 14.5px; }
.card h3 { font-family: var(--serif); font-weight: 500; font-size: 19px;
           margin: 26px 0 12px; }

.row { display: flex; gap: 14px; flex-wrap: wrap; align-items: flex-end; }
.row > label { flex: 1 1 180px; }
.actions { display: flex; gap: 10px; margin-top: 20px; flex-wrap: wrap;
           align-items: center; }

.layout label {
  display: flex; flex-direction: column; gap: 5px;
  font-size: 12.5px; color: var(--ink-soft);
  text-transform: none; letter-spacing: normal; margin: 0;
}
.layout input, .layout select, .layout textarea {
  font: 400 14.5px var(--sans); color: var(--ink);
  padding: 9px 11px; border: 1px solid var(--rule); border-radius: 8px;
  background: var(--paper-2); width: 100%; margin: 0;
  transition: border-color .2s, box-shadow .2s;
}
.layout input:focus, .layout select:focus, .layout textarea:focus {
  outline: none; border-color: var(--gold);
  box-shadow: 0 0 0 3px rgba(168, 130, 60, .12);
}
.layout input[type=checkbox], .layout input[type=radio] { width: auto; }
.hint { font-size: 11.5px; color: var(--ink-faint); }

.topbar .btn, .layout .btn {
  width: auto; margin-top: 0; background: var(--night); color: #f6f2ea;
}
.topbar .btn:hover, .layout .btn:hover { background: #17303f;
  box-shadow: 0 8px 20px rgba(15, 28, 38, .18); }
.topbar .btn-ghost, .layout .btn-ghost {
  background: transparent; color: var(--ink); border: 1px solid var(--rule); }
.topbar .btn-ghost:hover, .layout .btn-ghost:hover {
  background: var(--paper); box-shadow: none; transform: none;
  border-color: var(--gold-soft); }
.layout .btn-gold { background: var(--gold); color: #fff; }
.layout .btn-gold:hover { background: #96712f; }
.btn-small { width: auto; padding: 7px 14px; font-size: 13.5px; margin-top: 0; }
.btn:disabled { opacity: .45; cursor: default; transform: none; box-shadow: none; }

table { width: 100%; border-collapse: collapse; font-size: 14px; }
th, td { padding: 9px 10px; border-bottom: 1px solid var(--rule); text-align: left; }
th { font-weight: 500; color: var(--ink-faint); font-size: 11.5px;
     letter-spacing: .06em; text-transform: uppercase; }
td input, td select { padding: 6px 8px; font-size: 14px; }
.tbl-wrap { overflow-x: auto; }
.num { text-align: right; font-variant-numeric: tabular-nums; }

.pill { display: inline-block; padding: 2px 9px; border-radius: 99px;
        font-size: 11.5px; background: #efe9df; color: var(--ink-soft); }
.pill.ok { background: #e7f0ea; color: var(--ok); }

.callout { border-left: 2px solid var(--gold-soft); background: #fbf6ec;
           padding: 13px 16px; border-radius: 0 8px 8px 0; font-size: 14px;
           color: #6b5327; margin: 14px 0; }
.callout.bad { border-color: var(--err); background: #fbeeec; color: #8d2b20; }
.callout.good { border-color: var(--ok); background: #eef4ef; color: #1d5238; }
.callout ul { margin: 6px 0 0; padding-left: 18px; }

.quote-total { font-family: var(--serif); font-size: 46px; font-weight: 500;
               line-height: 1; letter-spacing: -1px;
               font-variant-numeric: lining-nums tabular-nums;
               font-feature-settings: "lnum" 1; }
.quote-sub { color: var(--ink-soft); font-size: 14px; margin-top: 8px; }
.explain { list-style: none; padding: 0; margin: 16px 0 0; font-size: 14px; }
.explain li { padding: 7px 0 7px 16px; border-bottom: 1px solid var(--rule);
              position: relative; color: var(--ink-soft); }
.explain li::before { content: ""; position: absolute; left: 0; top: 15px;
                      width: 6px; height: 1px; background: var(--gold); }

.empty { color: var(--ink-soft); font-size: 14px; padding: 10px 0; }

.toast {
  position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%);
  background: var(--night); color: #f4f0e8; padding: 12px 20px;
  border-radius: 9px; font-size: 14px; z-index: 20;
  box-shadow: 0 14px 34px rgba(15, 28, 38, .3); max-width: 90vw;
}
.toast.bad { background: var(--err); }

@media (max-width: 900px) {
  .layout { grid-template-columns: 1fr; }
  .steps { flex-direction: row; overflow-x: auto; padding-bottom: 4px; }
  .step { width: auto; white-space: nowrap; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .arch-frame, .arch-body > *, .proof { opacity: 1; transform: none; }
}
