/* ==========================================================================
   ArendIQ · V3 Soft Desk — design system stylesheet
   Canonical styles per DESIGN-SPEC-V3.md. Reused across all screens.
   ========================================================================== */

/* --- TOKENS --------------------------------------------------------------- */
/* Scoped в .v3-контейнер чтобы НЕ конфликтовать с shadcn `--accent`/`--border`
   и т.п. — shadcn-страницы вне V3 продолжают использовать свою палитру. */
.v3, .v3-wide, .v3-auto, .v3-l, .v3-mobile, .v3-auth{
  --paper:#f6f2ec; --paper-2:#ece6dd;
  --surface:#fff;  --border:#ece6dd; --border-2:#e7e1d8; --border-3:#f2ede4;

  --fg:#2a2622; --fg-2:#6f665c; --fg-3:#9a8f82; --fg-4:#b8ac9d; --fg-5:#c9bfb0;

  --accent:#d97757; --accent-soft:#fde8e0; --accent-ink:#a84e33;
  --accent-grad:linear-gradient(145deg,#e8a66a,#d97757);

  --pos:#3b9b6f;   --pos-soft:#e4f3ec;
  --warn:#a87a1d;  --warn-soft:#fdf0d8;
  --neg:#c64742;   --neg-soft:#fde8e6;  --neg-bg:#fef6f5;
  --info:#4b71ab;  --info-soft:#e4ecf6;

  --r-xs:5px; --r-sm:8px; --r-md:10px; --r-lg:12px; --r-xl:16px; --r-2xl:20px;
  --shadow-card:0 1px 2px rgba(42,38,34,.06);
  --shadow-pop:0 3px 8px rgba(42,38,34,.08);
  --shadow-lift:0 16px 40px rgba(42,38,34,.08);
}

/* --- ARTBOARD CONTAINERS ------------------------------------------------- */
.v3, .v3-wide, .v3-auto, .v3-l, .v3-mobile{
  font-family:"Geist",ui-sans-serif,system-ui,sans-serif;
  color:var(--fg); font-size:14px;
  -webkit-font-smoothing:antialiased;
}
.v3 *, .v3-wide *, .v3-auto *, .v3-l *, .v3-mobile *{ box-sizing:border-box; }

/* Standard web artboard: sidebar + main.
   В canvas (V3 Full System.html) использовался фиксированный 1440×960. В production —
   responsive: десктоп 240px sidebar + main, на <lg sidebar скрыт (mobile sheet). */
.v3{ min-height:100vh; background:var(--paper);
     display:grid; grid-template-columns:1fr; }
@media (min-width: 1024px){
  .v3{ grid-template-columns:240px 1fr; }
}
.v3-wide{ min-height:100vh; background:var(--paper);
          display:grid; grid-template-columns:1fr; }
@media (min-width: 1024px){
  .v3-wide{ grid-template-columns:240px 1fr; }
}
/* Auto-height artboards (landing sections / legal docs / etc) */
.v3-auto{ position:relative; width:100%; max-width:1440px; margin:0 auto;
          background:var(--paper); }

/* --- SIDEBAR -------------------------------------------------------------- */
.v3-side{ padding:20px 16px; border-right:1px solid var(--border-2);
          display:flex; flex-direction:column; gap:4px; background:var(--paper);}
.v3-brand{ display:flex; align-items:center; gap:10px; padding:6px 10px 22px; }
.v3-brand .m{ width:34px; height:34px; border-radius:var(--r-md);
              background:var(--accent-grad); display:grid; place-items:center;
              color:#fff; font-weight:700; font-family:"Geist Mono",monospace; font-size:14px; }
.v3-brand .n{ font-size:15px; font-weight:600; letter-spacing:-.01em; }
.v3-sect{ font-size:10px; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
          color:var(--fg-3); padding:14px 10px 6px; }
.v3-nav a{ display:flex; align-items:center; gap:11px; padding:10px 12px;
           border-radius:var(--r-md); color:var(--fg-2); cursor:pointer;
           font-weight:500; font-size:14px; text-decoration:none; }
.v3-nav a .ic{ width:22px; height:22px; border-radius:7px; background:var(--paper-2);
               display:grid; place-items:center; font-size:11px;
               font-family:"Geist Mono",monospace; color:var(--fg-2); font-weight:700; }
.v3-nav a.on{ background:#fff; color:var(--fg); box-shadow:var(--shadow-card); }
.v3-nav a.on .ic{ background:var(--accent); color:#fff; }
.v3-nav a .ct{ margin-left:auto; font-size:11px; color:var(--fg-4);
               font-family:"Geist Mono",monospace; }
.v3-nav a .ct.alert{ color:var(--neg); font-weight:700; }
.v3-side .pilot{ margin-top:auto; background:var(--warn-soft); color:var(--warn);
                 border-radius:var(--r-md); padding:10px 12px; font-size:11px;
                 font-weight:600; letter-spacing:.02em; }
.v3-side .pilot .sub{ display:block; color:var(--fg-2); font-weight:500; font-size:11px;
                      margin-top:3px; letter-spacing:0; }

/* --- TOPBAR / MAIN -------------------------------------------------------- */
.v3-main{ display:flex; flex-direction:column; background:var(--paper); min-width:0; }
.v3-top{ padding:14px 32px; display:flex; align-items:center; gap:16px;
         border-bottom:1px solid var(--border); background:#fff; }
.v3-crumbs{ font-size:13px; color:var(--fg-3); }
.v3-crumbs b{ color:var(--fg); font-weight:500; }
.v3-search{ background:#fff; border:1px solid var(--border-2); border-radius:var(--r-md);
            padding:8px 14px; font-size:13px; color:var(--fg-3); width:340px;
            margin-left:16px; font-family:inherit; }
.v3-top .bell{ margin-left:auto; width:34px; height:34px; border-radius:var(--r-md);
               background:var(--paper-2); color:var(--fg-2); display:grid; place-items:center;
               font-family:"Geist Mono",monospace; font-size:14px; font-weight:700;
               position:relative; cursor:pointer;}
.v3-top .bell .dot{ position:absolute; top:6px; right:6px; width:8px; height:8px;
                     background:var(--accent); border-radius:99px; border:2px solid #fff; }
/* button.v3-avatar — повышенная specificity, чтобы перебить дефолты Base UI Trigger */
button.v3-avatar, .v3-avatar{
  width:34px; height:34px; border-radius:99px; background:var(--accent);
  color:#fff; display:grid; place-items:center; font-weight:600; font-size:12px;
  border:0; cursor:pointer; padding:0;
}
.v3-top .ml-auto{ margin-left:auto; }

.v3-page{ padding:30px 32px; flex:1; }
@media (max-width: 1023px){
  .v3-page{ padding:20px 16px; }
  .v3-top{ padding:12px 16px; }
  .v3-search{ width:100%; min-width:0; margin-left:0; }
  .v3-side{ display:none; }
  .v3-kpis{ grid-template-columns:repeat(2,1fr) !important; }
  .v3-2, .v3-2e, .v3-3, .v3-4, .v3-split{ grid-template-columns:1fr !important; }
}

/* --- TYPOGRAPHY ----------------------------------------------------------- */
.v3-h1{ font-size:32px; font-weight:600; letter-spacing:-.02em; margin:0 0 8px; line-height:1.05; text-wrap:pretty;}
.v3-h2{ font-size:20px; font-weight:600; letter-spacing:-.015em; margin:0 0 12px; line-height:1.1;}
.v3-h3{ font-size:15px; font-weight:600; letter-spacing:-.005em; margin:0 0 16px; display:flex; justify-content:space-between; align-items:center;}
.v3-sub{ font-size:14px; color:var(--fg-2); margin:0 0 24px; max-width:620px; line-height:1.5; }
.v3-eyebrow{ font-family:"Geist Mono",monospace; font-size:11px; font-weight:500;
             letter-spacing:.04em; text-transform:uppercase; color:var(--fg-3); }
.v3-mono{ font-family:"Geist Mono",monospace; font-variant-numeric:tabular-nums; }

/* --- KPIs ---------------------------------------------------------------- */
.v3-kpis{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:16px; }
.v3-kpis.g3{ grid-template-columns:repeat(3,1fr); }
.v3-kpis.g2{ grid-template-columns:repeat(2,1fr); }
.v3-kpi{ background:#fff; border:1px solid var(--border); border-radius:var(--r-xl);
         padding:18px 20px; }
.v3-kpi .k{ font-size:12px; color:var(--fg-3); font-weight:500; }
.v3-kpi .v{ font-size:30px; font-weight:600; letter-spacing:-.02em; margin-top:6px;
            font-variant-numeric:tabular-nums; line-height:1.1;}
.v3-kpi .v.neg{ color:var(--neg); } .v3-kpi .v.pos{ color:var(--pos); }
.v3-kpi .v.warn{ color:var(--warn); }
.v3-kpi .s{ font-size:12px; color:var(--fg-3); margin-top:4px; }
.v3-kpi .s.pos{ color:var(--pos); } .v3-kpi .s.neg{ color:var(--neg); }

/* --- CARDS --------------------------------------------------------------- */
.v3-card{ background:#fff; border:1px solid var(--border); border-radius:var(--r-xl);
          padding:20px 22px; }
.v3-card h3{ font-size:15px; font-weight:600; margin:0 0 16px;
             display:flex; justify-content:space-between; align-items:center; }
.v3-card h3 .n{ font-size:12px; color:var(--fg-3); font-weight:500; }
.v3-card.tint{ background:var(--paper); border:0; }
.v3-inner{ background:var(--paper); border-radius:var(--r-lg); padding:16px 18px; }

.v3-2{ display:grid; grid-template-columns:1.55fr 1fr; gap:14px; }
.v3-2e{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.v3-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.v3-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.v3-split{ display:grid; grid-template-columns:1.6fr 1fr; gap:14px; }

/* --- LIST ITEMS (upcoming / payments / etc) ----------------------------- */
.v3-li{ display:grid; grid-template-columns:48px 1fr auto; gap:14px;
        padding:13px 0; border-top:1px solid var(--border-3); align-items:center; }
.v3-li:first-of-type{ border-top:0; padding-top:0; }
.v3-date{ width:48px; text-align:center; background:var(--paper-2);
          border-radius:var(--r-lg); padding:6px 0; }
.v3-date b{ display:block; font-size:15px; font-weight:600; line-height:1; }
.v3-date span{ font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:var(--fg-3); }
.v3-date.em{ background:var(--neg-soft); color:var(--neg); }
.v3-date.em b, .v3-date.em span{ color:var(--neg); }
.v3-date.pos{ background:var(--pos-soft); color:var(--pos); }
.v3-date.pos b, .v3-date.pos span{ color:var(--pos); }
.v3-who{ font-weight:500; font-size:14px; }
.v3-wsub{ font-size:12px; color:var(--fg-3); margin-top:2px; }
.v3-sum{ font-weight:600; font-variant-numeric:tabular-nums;
         font-family:"Geist Mono",monospace; font-size:14px; }
.v3-sum.neg{ color:var(--neg); } .v3-sum.pos{ color:var(--pos); }

.v3-act{ display:flex; gap:12px; padding:11px 0; border-top:1px solid var(--border-3);
         align-items:flex-start; }
.v3-act:first-of-type{ border-top:0; padding-top:0; }
.v3-dot{ width:8px; height:8px; border-radius:99px; margin-top:6px; flex-shrink:0; }
.v3-dot.pos{ background:var(--pos);} .v3-dot.info{ background:var(--info);}
.v3-dot.warn{ background:var(--accent);} .v3-dot.neutral{ background:var(--fg-5);}
.v3-dot.neg{ background:var(--neg);}
.v3-act .what{ font-weight:500; font-size:13px; }
.v3-act .sub{ font-size:12px; color:var(--fg-3); margin-top:2px; }
.v3-act .t{ margin-left:auto; font-size:11px; color:var(--fg-3);
            font-family:"Geist Mono",monospace; }

/* --- STATUS PILLS -------------------------------------------------------- */
.v3-stat{ display:inline-flex; align-items:center; gap:6px; font-size:11px;
          font-weight:600; padding:3px 10px; border-radius:99px; }
.v3-stat.occupied{ background:var(--pos-soft); color:var(--pos);}
.v3-stat.vacant{ background:var(--warn-soft); color:var(--warn);}
.v3-stat.repair{ background:var(--info-soft); color:var(--info);}
.v3-stat.moved{ background:var(--paper-2); color:var(--fg-3);}
.v3-stat.signed{ background:var(--pos-soft); color:var(--pos);}
.v3-stat.pending{ background:var(--warn-soft); color:var(--warn);}
.v3-stat.draft{ background:var(--paper-2); color:var(--fg-2);}
.v3-stat.matched{ background:var(--pos-soft); color:var(--pos);}
.v3-stat.unmatched{ background:var(--neg-soft); color:var(--neg);}
.v3-stat.partial{ background:var(--warn-soft); color:var(--warn);}

/* --- BUTTONS ------------------------------------------------------------- */
.v3-btn{ background:var(--accent); color:#fff; border:none;
         border-radius:var(--r-md); padding:10px 18px; font-weight:600;
         font-size:13px; cursor:pointer; font-family:inherit;
         display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.v3-btn.block{ width:100%; margin-top:14px; }
.v3-btn.ghost{ background:#fff; color:var(--fg); border:1px solid var(--border-2); }
.v3-btn.dark{ background:var(--fg); color:var(--paper); }
.v3-btn.sm{ padding:7px 12px; font-size:12px; font-weight:500; }
.v3-btn.lg{ padding:13px 22px; font-size:14px; font-weight:600; }
.v3-btn:disabled{ opacity:.5; cursor:not-allowed; }
.v3-link{ color:var(--fg-2); text-decoration:underline; text-decoration-style:dotted;
          cursor:pointer; font-size:13px; }
.v3-link.accent{ color:var(--accent); text-decoration-color:var(--accent); }

/* --- TABS / CHIPS -------------------------------------------------------- */
.v3-tabs{ display:flex; gap:3px; margin-bottom:18px; background:var(--paper-2);
          padding:4px; border-radius:var(--r-lg); width:max-content; }
.v3-tab{ padding:8px 15px; border-radius:9px; font-size:13px; color:var(--fg-2);
         font-weight:500; cursor:pointer; }
.v3-tab b{ font-family:"Geist Mono",monospace; margin-left:6px; color:var(--fg-3);
           font-size:11px; font-weight:500; }
.v3-tab.on{ background:#fff; color:var(--fg); box-shadow:var(--shadow-pop); }
.v3-chipset{ display:flex; gap:6px; flex-wrap:wrap; }
.v3-chipset .chip{ padding:7px 12px; border-radius:99px; font-size:12px; font-weight:500;
                   background:#fff; border:1px solid var(--border-2); cursor:pointer; color:var(--fg); }
.v3-chipset .chip.on{ background:var(--fg); color:#fff; border-color:var(--fg); }

/* --- PROPERTY CARDS ------------------------------------------------------ */
.v3-propgrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
.v3-prop{ background:#fff; border:1px solid var(--border); border-radius:var(--r-xl);
          padding:18px; display:grid; grid-template-columns:58px 1fr auto; gap:16px;
          align-items:center; cursor:pointer; transition:box-shadow 150ms; }
.v3-prop:hover{ box-shadow:var(--shadow-pop); }
.v3-prop .img{ width:58px; height:58px; border-radius:var(--r-lg);
               background:linear-gradient(135deg,var(--paper-2),#d9cfbe);
               display:grid; place-items:center; font-family:"Geist Mono",monospace;
               font-size:11px; color:var(--fg-2); font-weight:700; }
.v3-prop .name{ font-weight:600; font-size:15px; }
.v3-prop .meta{ font-size:12px; color:var(--fg-3); margin-top:4px; }
.v3-prop .right{ display:flex; flex-direction:column; align-items:flex-end; gap:6px; }
.v3-prop .rent{ font-family:"Geist Mono",monospace; font-size:14px; font-weight:600;
                font-variant-numeric:tabular-nums; }
.v3-prop.dashed{ border-style:dashed; background:transparent; box-shadow:none;
                 color:var(--fg-3); justify-content:center; }

/* --- TABLES -------------------------------------------------------------- */
.v3-table{ border:1px solid var(--border); border-radius:var(--r-xl);
           overflow:hidden; background:#fff; }
.v3-table .th{ background:var(--paper); padding:11px 14px; font-size:10px;
               font-weight:600; letter-spacing:.1em; text-transform:uppercase;
               color:var(--fg-3); }
.v3-trow{ display:grid; padding:13px 14px; font-size:13px; border-top:1px solid var(--border-3);
          align-items:center; }
.v3-trow.head{ border-top:0; background:var(--paper); padding:11px 14px;
               font-size:10px; font-weight:600; letter-spacing:.1em;
               text-transform:uppercase; color:var(--fg-3); }
.v3-trow:hover:not(.head){ background:var(--paper); }
.v3-trow .c{ padding-right:12px; overflow:hidden; }
.v3-trow .c.num{ text-align:right; font-family:"Geist Mono",monospace;
                 font-variant-numeric:tabular-nums; }
.v3-trow.alert{ background:var(--neg-bg); }
.v3-trow.add{ border-style:dashed; color:var(--fg-3); text-align:center;
              cursor:pointer; border-top-style:dashed; }

/* --- UTILITIES ----------------------------------------------------------- */
.v3-ut{ display:grid; grid-template-columns:1.6fr 1fr; gap:14px; }
.v3-mrow{ display:grid; grid-template-columns:1.2fr repeat(4,1fr); gap:12px;
          padding:14px 0; border-top:1px solid var(--border-3); align-items:center; font-size:13px; }
.v3-mrow:first-of-type{ border-top:0; padding-top:0; }
.v3-mrow .k{ font-weight:600; }
.v3-mrow .sub{ font-size:11px; color:var(--fg-3); margin-top:2px;
               font-family:"Geist Mono",monospace; }
.v3-mrow .v{ font-family:"Geist Mono",monospace; font-variant-numeric:tabular-nums; text-align:right; }
.v3-mrow .v.new{ color:var(--accent); font-weight:600; }
.v3-mrow .th{ font-size:10px; color:var(--fg-3); letter-spacing:.1em;
              text-transform:uppercase; font-weight:600; }
.v3-total{ background:var(--paper); border-radius:var(--r-lg); padding:16px 18px;
           margin-top:16px; display:flex; justify-content:space-between; align-items:center; }
.v3-total .k{ font-size:13px; color:var(--fg-2); }
.v3-total .v{ font-family:"Geist Mono",monospace; font-size:24px; font-weight:600;
              font-variant-numeric:tabular-nums; }
.v3-byobj{ display:flex; flex-direction:column; gap:10px; }
.v3-byobj .row{ display:flex; justify-content:space-between; padding:10px 0;
                border-top:1px solid var(--border-3); font-size:13px; }
.v3-byobj .row:first-child{ border-top:0; padding-top:0; }
.v3-byobj .row .v{ font-family:"Geist Mono",monospace; font-weight:600; }

/* --- FORMS --------------------------------------------------------------- */
.v3-form{ display:grid; grid-template-columns:1fr 340px; gap:20px; }
.v3-field{ margin-bottom:16px; }
.v3-field label{ font-size:12px; font-weight:600; color:var(--fg-2);
                 display:block; margin-bottom:6px; }
.v3-field input, .v3-field select, .v3-field textarea{
  width:100%; padding:11px 14px; border:1px solid var(--border-2);
  border-radius:var(--r-md); font-size:14px; background:#fff;
  font-family:inherit; color:var(--fg); }
.v3-field input:focus, .v3-field select:focus, .v3-field textarea:focus{
  outline:2px solid var(--accent); outline-offset:-1px; border-color:transparent; }
.v3-field .hint{ font-size:11px; color:var(--fg-3); margin-top:5px; line-height:1.4;}
.v3-field .err{ font-size:11px; color:var(--neg); margin-top:5px; font-weight:500;}
.v3-field.err input, .v3-field.err select{ border-color:var(--neg); }
.v3-row2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.v3-row3{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.v3-suffix{ position:relative; }
.v3-suffix input{ padding-right:40px; }
.v3-suffix .sf{ position:absolute; right:14px; top:50%; transform:translateY(-50%);
                font-size:12px; color:var(--fg-3); font-family:"Geist Mono",monospace; pointer-events:none; }
.v3-summary{ background:#fff; border:1px solid var(--border); border-radius:var(--r-xl);
             padding:20px; height:fit-content; }
.v3-summary h4{ font-size:14px; margin:0 0 14px; font-weight:600; }
.v3-summary .kv{ display:flex; justify-content:space-between; padding:8px 0; font-size:13px;
                 border-top:1px solid var(--border-3); }
.v3-summary .kv:first-of-type{ border-top:0; padding-top:0; }
.v3-summary .kv .k{ color:var(--fg-3); }
.v3-summary .kv .v{ font-weight:600; font-family:"Geist Mono",monospace; }

/* Wizard steps */
.v3-steps{ display:flex; gap:6px; margin-bottom:24px; }
.v3-step{ flex:1; padding:10px 12px; background:#fff; border:1px solid var(--border);
          border-radius:var(--r-md); font-size:12px; color:var(--fg-3); }
.v3-step.done{ background:#fff; color:var(--pos); font-weight:500; }
.v3-step.done::before{ content:"✓ "; }
.v3-step.on{ background:var(--fg); color:#fff; font-weight:500; border-color:var(--fg); }

/* Radio tiles */
.v3-tiles{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.v3-tile{ background:#fff; border:1px solid var(--border-2); border-radius:var(--r-lg);
          padding:16px; cursor:pointer; display:flex; flex-direction:column;
          align-items:flex-start; gap:8px; }
.v3-tile.on{ border-color:var(--accent); background:var(--accent-soft); }
.v3-tile .ic{ width:32px; height:32px; border-radius:var(--r-sm); background:var(--paper-2);
              display:grid; place-items:center; font-family:"Geist Mono",monospace;
              font-size:13px; font-weight:700; color:var(--fg-2); }
.v3-tile.on .ic{ background:var(--accent); color:#fff;}
.v3-tile b{ font-size:14px; font-weight:600; }
.v3-tile .sub{ font-size:11px; color:var(--fg-3); }

/* Callout */
.v3-note{ background:var(--paper); border-radius:var(--r-md); padding:12px 14px;
          font-size:13px; color:var(--fg-2); line-height:1.5;
          display:flex; gap:10px; align-items:flex-start; }
.v3-note.info{ background:var(--info-soft); color:var(--info); }
.v3-note.warn{ background:var(--warn-soft); color:var(--warn); }
.v3-note.pos{ background:var(--pos-soft); color:var(--pos); }
.v3-note.neg{ background:var(--neg-soft); color:var(--neg); }
.v3-note .ic{ flex-shrink:0; font-size:15px; line-height:1;}

/* Timeline (contract signing) */
.v3-tl{ display:flex; flex-direction:column; gap:0; }
.v3-tlitem{ display:grid; grid-template-columns:28px 1fr; gap:14px; padding:10px 0; }
.v3-tlitem .node{ width:24px; height:24px; border-radius:99px; background:var(--paper-2);
                   display:grid; place-items:center; font-size:12px; color:var(--fg-3);
                   border:1px solid var(--border-2); font-family:"Geist Mono",monospace; font-weight:700;
                   position:relative; }
.v3-tlitem.done .node{ background:var(--pos); color:#fff; border-color:var(--pos); }
.v3-tlitem.on   .node{ background:var(--accent); color:#fff; border-color:var(--accent); }
.v3-tlitem .node::after{ content:""; position:absolute; top:24px; left:11px; width:2px;
                         height:22px; background:var(--border-2); }
.v3-tlitem:last-child .node::after{ display:none; }
.v3-tlitem .title{ font-size:14px; font-weight:500; }
.v3-tlitem.done .title{ color:var(--fg); }
.v3-tlitem .meta{ font-size:12px; color:var(--fg-3); margin-top:2px;}

/* --- LANDING ------------------------------------------------------------- */
/* Landing root container. width:100% + max-width:1440 + margin:auto —
   на широких мониторах (iMac 2560+) центрируется и не оставляет пустую
   белую полосу справа (баг выявлен по screenshot 2026-05-04). */
.v3-l{ position:relative; width:100%; max-width:1440px; margin:0 auto; background:var(--paper); overflow:hidden; }
.v3-lnav{ display:flex; align-items:center; padding:22px 56px; gap:32px; }
.v3-lnav .logo{ display:flex; align-items:center; gap:10px; font-weight:600; font-size:17px; }
.v3-lnav .logo .m{ width:30px; height:30px; border-radius:9px; background:var(--accent-grad);
                   display:grid; place-items:center; color:#fff; font-weight:700;
                   font-family:"Geist Mono",monospace; font-size:13px; }
.v3-lnav a{ color:var(--fg-2); font-size:14px; cursor:pointer; text-decoration:none;}
.v3-lnav a.cta{ margin-left:auto; background:var(--fg); color:#fff; padding:9px 18px;
                border-radius:99px; font-weight:500; }
.v3-lhero{ padding:40px 56px 60px; display:grid; grid-template-columns:1.1fr 1fr;
           gap:48px; align-items:center; }
.v3-lhero h1{ font-size:64px; font-weight:600; line-height:1.02; letter-spacing:-.03em;
              margin:0 0 18px; }
.v3-lhero h1 em{ font-style:normal; color:var(--accent); }
.v3-lhero p{ font-size:17px; color:var(--fg-2); line-height:1.55; max-width:540px; margin:0 0 26px; }
.v3-lhero .btns{ display:flex; gap:10px; }
.v3-lhero .btns .pri{ background:var(--fg); color:#fff; padding:14px 24px;
                      border-radius:var(--r-lg); font-weight:500; font-size:15px;
                      border:none; cursor:pointer; font-family:inherit;
                      display:inline-flex; align-items:center; gap:8px; }
.v3-lhero .btns .ghost{ background:#fff; color:var(--fg); padding:14px 22px;
                        border-radius:var(--r-lg); border:1px solid var(--border-2);
                        font-weight:500; font-size:15px; cursor:pointer; font-family:inherit; }
.v3-lhero .trust{ margin-top:24px; font-size:13px; color:var(--fg-3);
                  display:flex; gap:22px; }
.v3-lhero .trust b{ color:var(--fg); font-weight:600; }
.v3-lhero .beta{ display:inline-flex; align-items:center; gap:8px; padding:6px 14px;
                 background:#fff; border-radius:99px; font-size:12px; color:var(--accent);
                 border:1px solid var(--accent-soft); font-weight:500; margin-bottom:20px; }

.v3-lmock{ background:#fff; border-radius:24px; padding:24px;
           box-shadow:var(--shadow-lift); border:1px solid var(--border); }
.v3-lmock .mhdr{ display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.v3-lmock .mhdr h4{ margin:0; font-size:14px; font-weight:600; }
.v3-lmock .mhdr .ss{ font-size:11px; color:var(--fg-3); font-family:"Geist Mono",monospace; }
.v3-lmock .mkpi{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin-bottom:14px; }
.v3-lmock .mkpi > div{ background:var(--paper); padding:12px 14px; border-radius:var(--r-md); }
.v3-lmock .mkpi .k{ font-size:11px; color:var(--fg-3); }
.v3-lmock .mkpi .v{ font-size:20px; font-weight:600; margin-top:2px; font-variant-numeric:tabular-nums; }
.v3-lmock .mkpi .v.pos{ color:var(--pos); }
.v3-lmock .mrow{ display:flex; justify-content:space-between; padding:10px 0;
                 border-top:1px solid var(--border-3); font-size:12px; }
.v3-lmock .mrow:first-child{ border-top:0; padding-top:2px;}
.v3-lmock .mrow .v{ font-family:"Geist Mono",monospace; font-weight:600; }

.v3-lfeat{ padding:50px 56px; display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.v3-lfeat .f{ background:#fff; border:1px solid var(--border); border-radius:var(--r-2xl);
              padding:26px; }
.v3-lfeat .f .ic{ width:46px; height:46px; border-radius:var(--r-lg); background:var(--accent-soft);
                  color:var(--accent); display:grid; place-items:center;
                  font-family:"Geist Mono",monospace; font-weight:700; margin-bottom:16px;
                  font-size:17px; }
.v3-lfeat .f h4{ font-size:17px; margin:0 0 6px; font-weight:600; }
.v3-lfeat .f p{ font-size:13px; color:var(--fg-2); line-height:1.5; margin:0; }

.v3-lsec{ padding:56px; }
.v3-lsec .eyebrow{ font-family:"Geist Mono",monospace; font-size:12px; letter-spacing:.08em;
                   color:var(--accent); text-transform:uppercase; margin-bottom:14px; font-weight:600;}
.v3-lsec h2{ font-size:44px; font-weight:600; letter-spacing:-.025em; line-height:1.08;
             margin:0 0 24px; max-width:780px; text-wrap:pretty;}
.v3-lsec h2 em{ font-style:normal; color:var(--accent); }

.v3-price{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.v3-price .p{ background:#fff; border:1px solid var(--border); border-radius:var(--r-2xl);
              padding:24px; display:flex; flex-direction:column; }
.v3-price .p.hi{ border-color:var(--accent); background:#fff; position:relative; }
.v3-price .p.hi::before{ content:"Рекомендуем"; position:absolute; top:-11px; left:24px;
                         background:var(--accent); color:#fff; font-size:11px; font-weight:600;
                         padding:3px 10px; border-radius:99px;}
.v3-price .p h4{ font-size:17px; margin:0 0 6px; font-weight:600; }
.v3-price .p .sub{ font-size:12px; color:var(--fg-3); margin-bottom:16px; line-height:1.4;}
.v3-price .p .price{ font-size:34px; font-weight:600; font-variant-numeric:tabular-nums;
                     letter-spacing:-.02em; margin-bottom:2px; }
.v3-price .p .price small{ font-size:13px; color:var(--fg-3); font-weight:500; }
.v3-price .p ul{ list-style:none; padding:0; margin:18px 0; flex:1; }
.v3-price .p li{ padding:6px 0; font-size:13px; color:var(--fg-2);
                 display:flex; gap:8px; align-items:flex-start;}
.v3-price .p li::before{ content:"·"; color:var(--fg-3); font-weight:700; flex-shrink:0; width:8px; }
.v3-price .p li.on::before{ content:"✓"; color:var(--pos);}
.v3-price .p li.off{ color:var(--fg-4);}
.v3-price .p li.off::before{ content:"—"; color:var(--fg-4);}

/* FAQ */
.v3-faq{ background:#fff; border:1px solid var(--border); border-radius:var(--r-2xl); overflow:hidden;}
.v3-qa{ padding:20px 24px; border-top:1px solid var(--border-3); }
.v3-qa:first-child{ border-top:0; }
.v3-qa .q{ font-size:16px; font-weight:600; display:flex; justify-content:space-between;
           align-items:center; cursor:pointer; }
.v3-qa .q::after{ content:"+"; color:var(--fg-3); font-size:20px; font-weight:400; font-family:"Geist Mono",monospace;}
.v3-qa.open .q::after{ content:"−";}
.v3-qa .a{ font-size:14px; color:var(--fg-2); line-height:1.55; margin-top:10px; }

/* Testimonials */
.v3-testis{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.v3-testi{ background:#fff; border:1px solid var(--border); border-radius:var(--r-2xl); padding:22px 24px; }
.v3-testi q{ quotes:"«" "»" "„" "‟"; font-size:15px; color:var(--fg); line-height:1.5; font-style:normal;}
.v3-testi .who{ display:flex; align-items:center; gap:12px; margin-top:18px; padding-top:18px; border-top:1px solid var(--border-3);}
.v3-testi .who .av{ width:36px; height:36px; border-radius:99px; background:var(--accent-soft);
                    color:var(--accent); display:grid; place-items:center; font-weight:600; font-size:12px; }
.v3-testi .who .nm{ font-size:13px; font-weight:600;}
.v3-testi .who .mt{ font-size:11px; color:var(--fg-3);}

/* Landing footer */
.v3-lfooter{ background:var(--fg); color:var(--paper); padding:56px 56px 36px; }
.v3-lfooter .cols{ display:grid; grid-template-columns:1.5fr repeat(3,1fr); gap:40px; margin-bottom:40px; }
.v3-lfooter h5{ font-size:12px; letter-spacing:.08em; text-transform:uppercase;
                color:#9a8f82; margin:0 0 14px; font-weight:600;}
.v3-lfooter a{ display:block; color:var(--paper); font-size:13px; padding:4px 0; opacity:.85; text-decoration:none;}
.v3-lfooter .bot{ border-top:1px solid #3a332d; padding-top:20px; font-size:12px; color:#9a8f82; display:flex; justify-content:space-between;}

/* --- AUTH / ONBOARDING --------------------------------------------------- */
/* В canvas был `position:absolute; inset:0` для артборда. В production —
 * полно-экранный grid 50/50 на десктопе; на <lg одна колонка (только форма). */
.v3-auth{ min-height:100vh; background:var(--paper); display:grid;
          grid-template-columns:1fr; font-family:"Geist",ui-sans-serif,system-ui,sans-serif;
          color:var(--fg); }
@media (min-width: 1024px){
  .v3-auth{ grid-template-columns:1fr 1fr; }
}
.v3-authL{ padding:32px 24px; display:none; flex-direction:column; justify-content:space-between; gap:24px; }
@media (min-width: 1024px){
  .v3-authL{ display:flex; padding:56px; }
}
.v3-authR{ background:#fff; display:grid; place-items:center; padding:32px 20px;
           border-left:1px solid var(--border); min-height:100vh; }
@media (min-width: 1024px){
  .v3-authR{ padding:56px; }
}
.v3-authBox{ width:100%; max-width:400px; }
.v3-authBox h1{ font-size:28px; font-weight:600; letter-spacing:-.02em; margin:0 0 10px;}
.v3-authBox p{ font-size:14px; color:var(--fg-2); line-height:1.5; margin:0 0 28px;}

/* --- MOBILE (TENANT PORTAL) ---------------------------------------------- */
.v3-mobile{ position:absolute; inset:0; width:390px; height:844px; background:#fff;
            overflow:hidden; border-radius:0; display:flex; flex-direction:column; }
.v3-mtop{ height:44px; background:#fff; display:flex; align-items:center; justify-content:space-between;
          padding:0 22px; font-size:13px; font-weight:600; font-family:"Geist Mono",monospace;
          border-bottom:1px solid var(--border); }
.v3-mpage{ flex:1; overflow:auto; padding:20px 20px 90px; background:var(--paper); }
.v3-mpage h1{ font-size:26px; font-weight:600; letter-spacing:-.02em; margin:0 0 6px; line-height:1.1;}
.v3-mpage .sub{ font-size:13px; color:var(--fg-2); margin:0 0 22px;}
.v3-mcard{ background:#fff; border:1px solid var(--border); border-radius:var(--r-xl);
           padding:18px 20px; margin-bottom:12px; }
.v3-mcard h3{ font-size:14px; font-weight:600; margin:0 0 12px;}
.v3-mbig{ background:var(--accent-soft); border-radius:var(--r-xl); padding:22px;
          border:1px solid #f4d4c4; margin-bottom:12px;}
.v3-mbig .lbl{ font-size:12px; color:var(--accent-ink); font-weight:500; margin-bottom:4px;}
.v3-mbig .val{ font-size:34px; font-weight:600; color:var(--accent-ink); letter-spacing:-.02em;
               font-variant-numeric:tabular-nums; margin-bottom:4px;}
.v3-mbig .when{ font-size:13px; color:var(--accent-ink); opacity:.85; margin-bottom:14px;}
.v3-mbig .cta{ width:100%; background:var(--accent); color:#fff; border:none;
               border-radius:var(--r-md); padding:14px; font-size:15px; font-weight:600;
               font-family:inherit; cursor:pointer; }
.v3-mbtn{ width:100%; background:var(--accent); color:#fff; border:none;
          border-radius:var(--r-md); padding:15px; font-size:15px; font-weight:600;
          font-family:inherit; cursor:pointer;}
.v3-mbtn.ghost{ background:#fff; color:var(--fg); border:1px solid var(--border-2); }
.v3-mfield{ margin-bottom:12px; }
.v3-mfield label{ font-size:12px; color:var(--fg-2); font-weight:600; margin-bottom:6px; display:block;}
.v3-mfield input{ width:100%; padding:15px 14px; font-size:16px; border:1px solid var(--border-2);
                  border-radius:var(--r-md); background:#fff; font-family:inherit; color:var(--fg);}
.v3-mtabbar{ height:64px; background:#fff; border-top:1px solid var(--border);
             display:grid; grid-template-columns:repeat(4,1fr); position:absolute;
             bottom:0; left:0; right:0; }
.v3-mtabbar a{ display:flex; flex-direction:column; align-items:center; justify-content:center;
               gap:3px; font-size:11px; font-weight:500; color:var(--fg-3); text-decoration:none; cursor:pointer;}
.v3-mtabbar a .ic{ font-family:"Geist Mono",monospace; font-size:16px; font-weight:700;}
.v3-mtabbar a.on{ color:var(--accent); }

/* --- EMPTY / ERROR ------------------------------------------------------- */
.v3-empty{ display:flex; flex-direction:column; align-items:center; justify-content:center;
           padding:60px 24px; text-align:center; }
.v3-empty .ic{ width:72px; height:72px; border-radius:99px; background:var(--paper-2);
               color:var(--fg-3); display:grid; place-items:center; font-family:"Geist Mono",monospace;
               font-size:24px; font-weight:700; margin-bottom:20px;}
.v3-empty h3{ font-size:18px; font-weight:600; margin:0 0 8px;}
.v3-empty p{ font-size:14px; color:var(--fg-2); line-height:1.5; max-width:380px; margin:0 0 20px;}

.v3-err{ position:absolute; inset:0; background:var(--paper); display:grid; place-items:center;
         padding:40px; }
.v3-err .box{ max-width:460px; text-align:center; }
.v3-err .code{ font-family:"Geist Mono",monospace; font-size:96px; font-weight:600;
               color:var(--fg-4); letter-spacing:-.04em; line-height:1; margin-bottom:18px;}
.v3-err .ic{ width:72px; height:72px; border-radius:99px; background:var(--paper-2);
             color:var(--fg-2); display:grid; place-items:center; font-family:"Geist Mono",monospace;
             font-size:28px; font-weight:700; margin:0 auto 18px;}
.v3-err h1{ font-size:28px; font-weight:600; letter-spacing:-.02em; margin:0 0 10px;}
.v3-err p{ font-size:14px; color:var(--fg-2); line-height:1.5; margin:0 0 24px;}
.v3-err .btns{ display:flex; gap:10px; justify-content:center;}

/* --- LANDING MOBILE (Phase 15.13) ---
   Адаптация V3 landing-классов под phone (<768px). Минимальные overrides
   без переписывания page.tsx — single column, скрыть mock dashboard,
   уменьшить hero typography, нав свернуть в logo + бургер (бургер
   у нас сейчас не реализован на главной — оставляем logo + CTA). */
@media (max-width: 767px){
  .v3-lnav{
    padding:14px 16px;
    gap:14px;
    flex-wrap:wrap;
  }
  /* На phone скрываем средние ссылки nav (Возможности, Тарифы, Калькулятор, Блог)
     и Войти — есть бургер в /pricing/blog/etc через LandingHeader, на главной
     оставляем только logo + CTA "Начать бесплатно" чтобы не перегружать. */
  .v3-lnav a:not(.cta):not(.logo){ display:none; }
  .v3-lnav .cta{ margin-left:auto; padding:8px 14px; font-size:13px; }

  .v3-lhero{
    padding:24px 16px 32px;
    grid-template-columns:1fr;
    gap:24px;
  }
  .v3-lhero h1{
    font-size:36px;
    line-height:1.05;
    letter-spacing:-.02em;
  }
  .v3-lhero p{ font-size:15px; max-width:none; margin-bottom:18px; }
  .v3-lhero .btns{ flex-direction:column; gap:8px; }
  .v3-lhero .btns .pri,
  .v3-lhero .btns .ghost{
    width:100%; padding:14px 18px; text-align:center; font-size:15px;
  }
  .v3-lhero .trust{
    flex-direction:column;
    align-items:flex-start;
    gap:6px;
    margin-top:18px;
  }
  /* Mock dashboard на phone скрываем — не помещается, бесполезен */
  .v3-lmock{ display:none; }

  .v3-lsec{ padding:32px 16px; }
  .v3-lsec h2{ font-size:28px; line-height:1.1; }

  .v3-lfeat{ padding:32px 16px; grid-template-columns:1fr; gap:12px; }
  .v3-lfeat .f{ padding:20px; }

  .v3-price{ grid-template-columns:1fr; gap:12px; }
  .v3-price .p{ padding:20px; }

  .v3-faq{ margin:0 16px; }
  .v3-lfooter{ padding:24px 16px; }
}
