/* .pptr задаёт font-family всему поддереву, а вся страница лежит внутри .pptr —
   значит она целиком на Manrope, Geist тут не участвует. Начертания собраны
   из вариативного Manrope с Google Fonts инстансами по wght. */
@font-face{
  font-family:"Manrope";
  src:url("Manrope-Regular.woff2") format("woff2");
  font-weight:400; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Manrope";
  src:url("Manrope-Medium.woff2") format("woff2");
  font-weight:500; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Manrope";
  src:url("Manrope-SemiBold.woff2") format("woff2");
  font-weight:600; font-style:normal; font-display:swap;
}
@font-face{
  font-family:"Manrope";
  src:url("Manrope-Bold.woff2") format("woff2");
  font-weight:700; font-style:normal; font-display:swap;
}

/* :root — как есть из оригинала, побайтово совпадает с кинейровским: чанк
   с темой у обоих сайтов общий. На странице видно только --background (его
   берёт body, он снаружи .pptr), остальное перекрыто ниже. */
:root{
  --background:lab(97.68% -.0000298023 .0000119209);   /* #f8f8f8 */
  --foreground:lab(2.75381% 0 0);                      /* #0a0a0a */
  --card:lab(100% 0 0);
  --card-foreground:lab(2.75381% 0 0);
  --popover:lab(100% 0 0);
  --popover-foreground:lab(2.75381% 0 0);
  --primary:lab(17.0136% 0 0 / .96);                   /* #2a2a2a при 96% */
  --primary-foreground:lab(100% 0 0);
  --secondary:lab(94.2% 0 0);
  --secondary-foreground:lab(7.78201% -.0000149012 0);
  --muted:lab(88.4% 0 .0000119209);
  --muted-foreground:lab(60.56% 0 0);
  --accent:lab(95.36% 0 0);
  --accent-foreground:lab(7.78201% -.0000149012 0);
  --destructive:lab(48.4493% 77.4328 61.5452);
  --destructive-foreground:lab(98.26% 0 0);
  --border:lab(86.08% -.0000298023 0);
  --input:lab(86.08% -.0000298023 0);
  --ring:lab(66.128% -.0000298023 .0000119209);
  --shadow-xs:0 1px 2px 0 rgb(0 0 0 / .05);
}

/* Брендовое правило Промптера — как есть */
.pptr{
  --radius:.75rem;
  --background:#f5f4f8;
  --foreground:#241525;
  --card:#fff;
  --card-foreground:#241525;
  --popover:#fff;
  --popover-foreground:#241525;
  --primary:#004cdb;
  --primary-foreground:#fff;
  --secondary:#eeecf2;
  --secondary-foreground:#241525;
  --muted:#eeecf2;
  --muted-foreground:#6b6075;
  --accent:#d5e4ff;
  --accent-foreground:#001c51;
  --destructive:#ff1200;
  --destructive-foreground:#fff;
  --border:#e2dfea;
  --input:#e2dfea;
  --ring:#004cdb;
  --sidebar:#241525;
  --sidebar-foreground:#f1f6ff;
  --sidebar-primary:#004cdb;
  --sidebar-primary-foreground:#fff;
  --sidebar-accent:#2e1d30;
  --sidebar-accent-foreground:#f1f6ff;
  --sidebar-border:#2a1a2c;
  --sidebar-ring:#004cdb;
  --pptr-brand-start:#004cdb;
  --pptr-brand-end:#001c51;
  --pptr-brand-dark:#001c51;
  --pptr-brand-light:#d5e4ff;
  --pptr-brand-lightest:#f1f6ff;
  --pptr-accent-red:#ff1200;
  --pptr-accent-red-dark:#a90000;
  --pptr-gradient:linear-gradient(135deg, var(--pptr-brand-start) 0%, var(--pptr-brand-end) 100%);
  --pptr-gradient-light:linear-gradient(135deg, var(--pptr-brand-light) 0%, var(--pptr-brand-lightest) 100%);
  font-family:"Manrope","Inter",system-ui,sans-serif;
  letter-spacing:-.005em;
}

/* @layer base оригинала:
     *{border-color:var(--border);outline-color:var(--ring)}
     html{font-size:17px}
     @media screen and (max-width:360px){html{font-size:13px}}
     body{background-color:var(--background);color:var(--foreground)} */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;border:0 solid}
*{border-color:var(--border);outline-color:var(--ring)}

html{
  font-size:17px;
  line-height:1.5;
  -webkit-text-size-adjust:100%;
}
@media screen and (max-width:360px){
  html{font-size:13px}
}
body{
  background-color:var(--background);
  color:var(--foreground);
  -webkit-font-smoothing:antialiased;
}

/* .pptr min-h-screen flex items-center justify-center bg-muted/30 px-6 py-12 */
.page{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:3rem 1.5rem;
  /* фон страницы даёт этот блок, а не токен --background: --muted у .pptr
     это #eeecf2, при 30% поверх #f8f8f8 у body выходит замеренный #f4f4f6 */
  background:color-mix(in oklab, var(--muted) 30%, transparent);
}

/* w-full max-w-sm flex flex-col items-center gap-8 */
.column{
  width:100%;
  max-width:24rem;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2rem;
}

/* flex flex-col items-center gap-3 */
.brand{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:0.75rem;
}
.brand-mark{
  display:block;
  color:var(--primary);   /* class="text-primary" + fill="currentColor" внутри */
}
/* text-[15px] font-semibold tracking-tight */
.brand-name{
  font-size:15px;
  font-weight:600;
  letter-spacing:-0.025em;
}

.stack{width:100%;max-width:24rem}

/* .pptr h1, .pptr h2, .pptr h3 */
.pptr h1,.pptr h2,.pptr h3{
  font-family:"Manrope","Inter",sans-serif;
  letter-spacing:-0.025em;
  font-weight:700;        /* перебивает font-semibold из класса заголовка */
}
/* text-2xl: --text-2xl 1.5rem / --text-2xl--line-height calc(2/1.5) */
.form h3{
  font-size:1.5rem;
  line-height:2rem;
}

/* flex flex-col gap-6 m-2, плюс margin-top от space-y-6 у формы:
   у space-y селектор специфичнее, поэтому сверху 1.5rem, а не 0.5rem */
.fields{
  display:flex;
  flex-direction:column;
  gap:1.5rem;
  margin:0.5rem;
  margin-top:1.5rem;
}

/* grid gap-2 */
.form-item{display:grid;gap:0.5rem}

/* flex items-center gap-2 text-sm leading-none font-medium select-none */
.form-item label{
  display:flex;
  align-items:center;
  gap:0.5rem;
  font-size:0.875rem;
  line-height:1;
  font-weight:500;
  user-select:none;
}

/* h-9 w-full min-w-0 rounded-md border bg-transparent px-3 text-base shadow-xs md:text-sm */
.form-item input{
  height:2.25rem;
  width:100%;
  min-width:0;
  padding:0 0.75rem;
  font-family:inherit;
  font-size:1rem;
  color:inherit;
  background:transparent;
  border:1px solid var(--input);
  border-radius:calc(var(--radius) - 2px);
  box-shadow:var(--shadow-xs);
  outline:none;
  transition:color .15s, box-shadow .15s;
}
@media (min-width:48rem){
  .form-item input{font-size:0.875rem}
}
/* focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] */
.form-item input:focus-visible{
  border-color:var(--ring);
  box-shadow:0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
}

/* Чекбокса в оригинале нет — собран по образцу shadcn Checkbox:
   size-4 shrink-0 rounded-[4px] border shadow-xs, при checked — bg-primary
   и иконка Check из lucide. */
.check-item{
  display:flex;
  align-items:center;
  gap:0.5rem;
}
.check-item label{
  font-size:0.875rem;
  line-height:1;
  font-weight:500;
  user-select:none;
  cursor:pointer;
}
.checkbox{
  appearance:none;
  -webkit-appearance:none;
  flex-shrink:0;
  display:grid;
  place-content:center;
  width:1rem;
  height:1rem;
  background:transparent;
  border:1px solid var(--input);
  border-radius:4px;
  box-shadow:var(--shadow-xs);
  outline:none;
  cursor:pointer;
  transition:background .15s, border-color .15s, box-shadow .15s;
}
.checkbox:checked{
  background:var(--primary);
  border-color:var(--primary);
}
.checkbox::after{
  content:"";
  width:0.875rem;
  height:0.875rem;
  transform:scale(0);
  transition:transform .1s ease-out;
  background:var(--primary-foreground);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.checkbox:checked::after{transform:scale(1)}
.checkbox:focus-visible{
  border-color:var(--ring);
  box-shadow:0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
}

/* h-9 px-4 py-2 w-full flex items-center justify-center gap-4 rounded-md
   text-sm font-medium bg-primary text-primary-foreground shadow-xs */
.btn{
  height:2.25rem;
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:1rem;
  padding:0.5rem 1rem;
  font-family:inherit;
  font-size:0.875rem;
  font-weight:500;
  white-space:nowrap;
  color:var(--primary-foreground);
  background:var(--primary);
  border-radius:calc(var(--radius) - 2px);
  box-shadow:var(--shadow-xs);
  cursor:pointer;
  transition:all .15s;
}
.btn:hover{background:color-mix(in oklab, var(--primary) 90%, transparent)}
.btn:focus-visible{
  outline:none;
  border-color:var(--ring);
  box-shadow:0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
}

/* Блока ошибки в оригинале нет — по образцу shadcn FormMessage.
   Кнопка и сообщение в общей обёртке с gap-2, как метка с полем. */
.submit-item{display:grid;gap:0.5rem}
.error{
  font-size:0.875rem;
  line-height:1.25rem;
  color:var(--destructive);
}
.error[hidden]{display:none}

/* p-2 text-sm text-muted-foreground */
.note{
  padding:0.5rem;
  font-size:0.875rem;
  color:var(--muted-foreground);
}
.note a{
  color:inherit;
  text-decoration:underline;
}
