/* Шрифты со своего сервера: @fontsource (OFL), наборы cyrillic и latin */
@font-face{font-family:"Oswald";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/oswald-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Oswald";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/oswald-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Oswald";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/oswald-cyrillic-600-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Oswald";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/oswald-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Oswald";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/oswald-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Oswald";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/oswald-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/golos-text-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/golos-text-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/golos-text-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:500;font-display:swap;src:url(/static/fonts/golos-text-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/golos-text-cyrillic-600-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:600;font-display:swap;src:url(/static/fonts/golos-text-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/golos-text-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"Golos Text";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/golos-text-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/jetbrains-mono-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/jetbrains-mono-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url(/static/fonts/jetbrains-mono-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

  /* ── токены «Оформления №1» ─────────────────────────────── */
  :root{
    --bg:#E8E9E6;
    --surface:#F2F3F0;
    --surface-2:#DEDFDA;
    --ink:#16181A;
    --ink-2:#4C5254;
    --ink-3:#767C7C;
    --line:#C7CAC4;
    --line-strong:#9DA29C;
    --accent:#B33A22;
    --steel:#3C5A66;
    --font-display:"Oswald","Arial Narrow",Impact,sans-serif;
    --font-body:"Golos Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    --font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Consolas,monospace;
    --gutter:clamp(16px,5vw,36px);
    --tab-h:58px;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --bg:#121415;
      --surface:#1A1D1E;
      --surface-2:#232728;
      --ink:#E7E8E4;
      --ink-2:#A6ACAA;
      --ink-3:#7C8382;
      --line:#2C3032;
      --line-strong:#464C4E;
      --accent:#E0603F;
      --steel:#84A8B5;
      color-scheme:dark;
    }
  }
  :root[data-theme="dark"]{
    --bg:#121415;
    --surface:#1A1D1E;
    --surface-2:#232728;
    --ink:#E7E8E4;
    --ink-2:#A6ACAA;
    --ink-3:#7C8382;
    --line:#2C3032;
    --line-strong:#464C4E;
    --accent:#E0603F;
    --steel:#84A8B5;
    color-scheme:dark;
  }
  :root[data-theme="light"]{color-scheme:light;}

  /* ── основа ─────────────────────────────────────────────── */
  *{box-sizing:border-box;}
  html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%;}
  body{
    margin:0;
    background:var(--bg);
    color:var(--ink);
    font-family:var(--font-body);
    font-size:16px;
    line-height:1.55;
    -webkit-font-smoothing:antialiased;
    -webkit-tap-highlight-color:transparent;
  }
  .wrap{
    max-width:790px;
    margin:0 auto;
    padding-inline:var(--gutter);
    padding-block:clamp(18px,5vw,44px) calc(var(--tab-h) + 56px + env(safe-area-inset-bottom,0px));
  }
  p{margin:0;}
  a{color:var(--accent);text-underline-offset:3px;}
  button{font:inherit;}
  a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ink);outline-offset:2px;}
  .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;}
  @media (prefers-reduced-motion: reduce){
    *{scroll-behavior:auto!important;transition:none!important;animation:none!important;}
  }

  /* ссылка на видео: текст цветом текста, подчёркивание сурик 1.5px */
  a.v{
    color:inherit;
    text-decoration:underline;
    text-decoration-color:var(--accent);
    text-decoration-thickness:1.5px;
    text-underline-offset:3px;
  }
  a.v:hover{text-decoration-thickness:2.5px;}

  /* ── типографика ────────────────────────────────────────── */
  .eyebrow{
    font-family:var(--font-display);
    text-transform:uppercase;
    letter-spacing:.14em;
    font-weight:600;
    font-size:.72rem;
    color:var(--ink-3);
    margin:0;
  }
  h1{
    font-family:var(--font-display);
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.01em;
    font-size:clamp(2.75rem,10vw,4rem);
    line-height:.95;
    margin:.28em 0 0;
    text-wrap:balance;
  }
  h1.h1--m{font-size:clamp(2.1rem,8vw,3rem);line-height:1;}
  h1.h-final{font-size:clamp(4.2rem,22vw,8rem);line-height:.88;}
  h2{
    font-family:var(--font-display);
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.02em;
    font-size:clamp(1.625rem,5vw,2.125rem);
    line-height:1.05;
    margin:0;
    text-wrap:balance;
  }
  h3{
    font-family:var(--font-display);
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.06em;
    font-size:clamp(.875rem,2.6vw,1.0625rem);
    line-height:1.2;
    margin:0 0 .2em;
  }
  .lede{font-size:1.05rem;color:var(--ink-2);max-width:60ch;margin-top:1em;}
  .p2{font-size:.95rem;color:var(--ink-2);max-width:65ch;}
  .p2 + .p2{margin-top:8px;}
  .hint{margin-top:10px;font-size:.85rem;color:var(--ink-3);}
  .rest-note{margin-top:12px;font-size:.88rem;color:var(--ink-3);max-width:65ch;}

  /* ── шапка ──────────────────────────────────────────────── */
  .hero{border-bottom:3px solid var(--ink);padding-bottom:24px;}
  .hero__rule{height:6px;background:var(--accent);width:78px;margin-bottom:20px;}
  .kit{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px;}
  .kit span{
    font-family:var(--font-display);
    text-transform:uppercase;
    letter-spacing:.09em;
    font-size:.72rem;
    font-weight:500;
    padding:5px 10px;
    border:1px solid var(--line-strong);
    color:var(--ink-2);
  }
  .kit span.is-accent{border-color:var(--accent);color:var(--accent);}
  .today__sub{margin-top:14px;font-family:var(--font-mono);font-size:.84rem;color:var(--ink-2);font-variant-numeric:tabular-nums;}

  .back,.crumb{
    display:inline-flex;
    align-items:center;
    min-height:40px;
    margin:-8px 0 8px;
    font-family:var(--font-display);
    text-transform:uppercase;
    letter-spacing:.14em;
    font-weight:600;
    font-size:.72rem;
    color:var(--ink-2);
    text-decoration:none;
  }
  .back:hover,.crumb:hover{color:var(--ink);}

  /* ── врезки ─────────────────────────────────────────────── */
  .assume{margin-top:28px;background:var(--surface-2);border-top:3px solid var(--accent);padding:18px 20px;}
  .assume h3{color:var(--accent);}
  .assume p{color:var(--ink-2);font-size:.94rem;}
  .assume p + p{margin-top:11px;}
  .assume b{color:var(--ink);font-weight:600;}

  .note{margin-top:18px;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--steel);padding:14px 16px;}
  .note > b{
    font-family:var(--font-display);
    text-transform:uppercase;
    letter-spacing:.1em;
    font-size:.74rem;
    color:var(--steel);
    display:block;
    margin-bottom:4px;
  }
  .note p{font-size:.92rem;color:var(--ink-2);}
  .note p + p{margin-top:8px;}
  .note p b{font-weight:600;color:var(--ink);}
  .note--todo{border-left-color:var(--accent);}
  .note--todo > b{color:var(--accent);}

  /* ── секции ─────────────────────────────────────────────── */
  .sec{margin-top:44px;}
  .sec-head{
    display:flex;
    align-items:baseline;
    flex-wrap:wrap;
    gap:4px 14px;
    border-bottom:1px solid var(--line-strong);
    padding-bottom:10px;
    margin-bottom:18px;
  }
  .sec-head .eyebrow{margin-left:auto;}

  /* ── карточка дня ───────────────────────────────────────── */
  .day__head{
    display:flex;
    align-items:flex-end;
    flex-wrap:wrap;
    gap:6px 16px;
    border-bottom:3px solid var(--ink);
    padding-bottom:12px;
  }
  .day__head h1{margin:0;}
  .day__n{
    margin-left:auto;
    font-family:var(--font-mono);
    font-weight:700;
    font-size:.8rem;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--accent);
    padding-bottom:.45em;
    white-space:nowrap;
  }
  .day__sub{font-size:.95rem;color:var(--ink-2);margin-top:12px;max-width:65ch;}

  .block{display:flex;align-items:center;gap:12px;margin:34px 0 12px;}
  .block h3{margin:0;white-space:nowrap;}
  .block .meta{font-family:var(--font-mono);font-size:.74rem;color:var(--ink-3);min-width:0;}
  .block .fill{flex:1;height:1px;background:var(--line-strong);min-width:16px;}

  ol.ex{list-style:none;margin:0;padding:0;}
  li.ex{
    display:grid;
    grid-template-columns:24px minmax(0,1fr) auto;
    gap:0 12px;
    align-items:start;
    padding:13px 0;
    border-bottom:1px solid var(--line);
  }
  li.ex:first-child{border-top:1px solid var(--line);}
  .ex__n{font-family:var(--font-mono);font-size:.82rem;color:var(--ink-3);padding-top:.18em;font-variant-numeric:tabular-nums;}
  .ex__name{font-weight:600;font-size:1rem;line-height:1.35;}
  .ex__cue{font-size:.87rem;color:var(--ink-2);line-height:1.5;margin-top:3px;}
  .ex__m{color:var(--steel);font-weight:600;font-style:normal;}
  .ex__load{text-align:right;display:flex;flex-direction:column;gap:2px;padding-top:.1em;}
  .ex__sets{font-family:var(--font-mono);font-weight:700;font-size:.88rem;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;}
  .ex__rest{font-family:var(--font-mono);font-size:.74rem;color:var(--ink-3);white-space:nowrap;}

  ul.rules{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:10px;}
  ul.rules.rules--tight{margin-top:0;}
  ul.rules li{display:grid;grid-template-columns:16px 1fr;gap:12px;font-size:.95rem;color:var(--ink-2);line-height:1.55;}
  ul.rules li::before{content:"";width:8px;height:8px;background:var(--accent);margin-top:.55em;}
  ul.rules b{color:var(--ink);font-weight:600;}
  .vids{font-size:.87rem;}

  /* ── кнопки ─────────────────────────────────────────────── */
  .btn{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    width:100%;
    min-height:52px;
    padding:12px 18px;
    border:1px solid var(--ink);
    border-radius:0;
    background:var(--ink);
    color:var(--bg);
    font-family:var(--font-display);
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.12em;
    font-size:.95rem;
    line-height:1.2;
    text-align:center;
    text-decoration:none;
    cursor:pointer;
  }
  .btn:hover{background:var(--ink-2);border-color:var(--ink-2);}
  .btn--ghost{background:transparent;color:var(--ink);border-color:var(--line-strong);}
  .btn--ghost:hover{background:var(--surface);border-color:var(--ink);}
  .btn--sm{width:auto;min-height:44px;padding:10px 14px;font-size:.78rem;letter-spacing:.1em;}
  .btn[disabled]{opacity:.45;cursor:not-allowed;}
  .btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
  .gap-top{margin-top:22px;}

  .done{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    min-height:62px;
    margin-top:34px;
    border:1px solid var(--line-strong);
    border-radius:0;
    background:var(--surface);
    color:var(--ink);
    font-family:var(--font-display);
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.16em;
    font-size:1.1rem;
    cursor:pointer;
  }
  .done:hover{border-color:var(--ink);}
  .done[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--surface);}
  .done[disabled]{opacity:.5;cursor:not-allowed;}
  .done__cap{margin-top:8px;font-family:var(--font-mono);font-size:.74rem;color:var(--ink-3);text-align:center;}

  /* ── плитки ссылок, навигация по дням ───────────────────── */
  .links{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
    margin-top:20px;
  }
  .links a{background:var(--surface);padding:14px 16px;display:flex;flex-direction:column;gap:3px;text-decoration:none;color:var(--ink);}
  .links a:hover{background:var(--surface-2);}
  .lt{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;color:var(--ink-3);}
  .lv{font-family:var(--font-mono);font-size:.85rem;color:var(--accent);word-break:break-word;font-variant-numeric:tabular-nums;}

  .daynav{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:14px;}
  .daynav > a,.daynav > span{background:var(--surface);padding:11px 14px;min-height:56px;display:flex;flex-direction:column;justify-content:center;gap:2px;text-decoration:none;color:var(--ink);}
  .daynav > a:hover{background:var(--surface-2);}
  .daynav .c{align-items:center;text-align:center;}
  .daynav .r{align-items:flex-end;text-align:right;}

  /* ── Сегодня ────────────────────────────────────────────── */
  .stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:22px;}
  .stats > div{background:var(--surface);padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-width:0;}
  .stats__k{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;color:var(--ink-3);}
  .stats__v{font-family:var(--font-mono);font-weight:700;font-size:1.9rem;line-height:1.05;font-variant-numeric:tabular-nums;}
  .stats__v small{font-size:.85rem;font-weight:400;color:var(--ink-3);}
  .stats__u{font-size:.84rem;color:var(--ink-2);}
  .bar{display:block;height:6px;background:var(--line);margin-top:6px;}
  .bar > i{display:block;height:100%;background:var(--ink);}
  .bar--thin{height:3px;margin-top:8px;}

  /* ── типы дней: календарь, карта года, легенда ──────────── */
  .t-heavy{background:var(--accent);color:var(--surface);}
  .t-medium{background:var(--ink-3);color:var(--surface);}
  .t-light{background:var(--line);color:var(--ink);}
  .t-test{background:var(--surface);color:var(--accent);border:2px solid var(--accent);}
  .t-rest{background:var(--surface);color:var(--ink-2);border:1px dashed var(--line-strong);}
  .t-final{background:var(--ink);color:var(--surface);}

  .cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;margin-top:20px;}
  .cal__corner{display:none;}
  .cal__dow{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.12em;font-size:.66rem;color:var(--ink-3);text-align:center;padding-bottom:2px;}
  .cal__wk{
    grid-column:1/-1;
    display:flex;
    align-items:baseline;
    gap:8px;
    padding:10px 0 3px;
    margin:0;
    border:0;
    background:none;
    color:inherit;
    text-align:left;
    cursor:pointer;
  }
  .cal__wk b{font-family:var(--font-mono);font-size:.74rem;color:var(--ink);}
  .cal__wk span{font-size:.72rem;color:var(--ink-3);}
  .cal__c{
    position:relative;
    display:flex;
    align-items:flex-end;
    height:46px;
    padding:5px 6px;
    text-decoration:none;
    font-family:var(--font-mono);
    font-weight:700;
    font-size:.78rem;
    font-variant-numeric:tabular-nums;
  }
  .cal__c.is-turnik::before{content:"";position:absolute;top:5px;right:5px;width:6px;height:6px;background:currentColor;}
  .cal__c.is-done::after{content:"✓";position:absolute;right:5px;bottom:4px;font-family:var(--font-body);font-size:.9rem;font-weight:700;line-height:1;}
  .cal__c.is-today{outline:2px solid var(--ink);outline-offset:1px;z-index:1;}
  @media (min-width:480px){
    .cal:not(.cal--row){grid-template-columns:64px repeat(7,minmax(0,1fr));}
    .cal:not(.cal--row) .cal__corner{display:block;}
    .cal:not(.cal--row) .cal__wk{grid-column:auto;flex-direction:column;justify-content:center;align-items:flex-start;gap:1px;padding:0;}
  }

  .legend{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin-top:14px;font-size:.8rem;color:var(--ink-2);}
  .legend > span{display:inline-flex;align-items:center;gap:7px;}
  .lg{display:inline-block;width:12px;height:12px;flex:none;}
  .lg--dot{width:6px;height:6px;background:var(--ink);}
  .lg--done{width:auto;height:auto;font-style:normal;font-weight:700;color:var(--ink);}
  .lg--today{outline:2px solid var(--ink);outline-offset:-2px;}

  /* неделя-полоса и строки дней */
  .weeks{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);}
  .weeks > div{background:var(--surface);padding:15px 18px;display:grid;grid-template-columns:78px 1fr;gap:4px 18px;align-items:baseline;}
  .weeks .wk{font-family:var(--font-mono);font-weight:700;font-size:.8rem;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;}
  .weeks .wt{font-weight:600;font-size:.98rem;}
  .weeks .wd{grid-column:2;font-size:.9rem;color:var(--ink-2);line-height:1.5;}
  .weeks .wm{grid-column:2;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);}
  .wk-strip{margin-top:30px;scroll-margin-top:16px;}
  .wk-desc{font-size:.95rem;color:var(--ink-2);max-width:65ch;}

  .drows{list-style:none;margin:0;padding:0;}
  .drow{
    display:grid;
    grid-template-columns:40px 26px minmax(0,1fr) 18px;
    gap:10px;
    align-items:baseline;
    padding:11px 6px;
    border-bottom:1px solid var(--line);
    color:inherit;
    text-decoration:none;
  }
  .drow:hover{background:var(--surface);}
  .drow.is-today{outline:2px solid var(--ink);outline-offset:-2px;}
  .drow__n{font-family:var(--font-mono);font-weight:700;font-size:.84rem;color:var(--accent);font-variant-numeric:tabular-nums;}
  .drow__d{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;color:var(--ink-3);}
  .drow__t{font-size:.9rem;color:var(--ink-2);}
  .drow__s{font-weight:700;text-align:right;}

  /* карта года */
  .ym-frame{position:relative;margin-top:18px;overflow-x:auto;background:var(--surface);border:1px solid var(--line);padding:14px 12px;-webkit-overflow-scrolling:touch;}
  .ym{--c:12px;display:grid;gap:5px;width:max-content;}
  @media (min-width:720px){.ym{--c:14px;}}
  .ym__stage{font-family:var(--font-display);font-size:.66rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:8px;}
  .ym__stage:first-child{margin-top:0;}
  .ym__row{display:flex;align-items:center;gap:10px;padding:2px 0;color:inherit;text-decoration:none;}
  .ym__row:hover .ym__m{color:var(--ink);}
  .ym__m{width:26px;flex:none;font-family:var(--font-mono);font-size:.7rem;color:var(--ink-2);}
  .ym__weeks{display:flex;gap:6px;}
  .ym__w{display:grid;grid-template-columns:repeat(7,var(--c));gap:2px;}
  .ym__c{position:relative;display:block;width:var(--c);height:var(--c);}
  .ym__c.is-turnik::before{content:"";position:absolute;top:1px;right:1px;width:3px;height:3px;background:currentColor;}
  .ym__c.is-done::after{content:"";position:absolute;left:2.5px;top:0;width:3px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg);}
  .ym__c.is-today{outline:2px solid var(--ink);outline-offset:1px;z-index:1;}
  .ym__r{font-family:var(--font-mono);font-size:.68rem;color:var(--ink-3);white-space:nowrap;}

  /* плитки месяцев */
  .tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:4px;}
  @media (min-width:520px){.tiles{grid-template-columns:repeat(3,minmax(0,1fr));}}
  @media (min-width:700px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr));}}
  .tile{background:var(--surface);padding:13px 14px 14px;display:flex;flex-direction:column;gap:3px;text-decoration:none;color:var(--ink);}
  .tile:hover{background:var(--surface-2);}
  .tile.is-now{outline:2px solid var(--ink);outline-offset:-2px;}
  .tile__k{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;color:var(--ink-3);}
  .tile__d{font-family:var(--font-mono);font-size:.82rem;color:var(--accent);}
  .tile__t{font-size:.88rem;color:var(--ink-2);line-height:1.35;}
  .tile__p{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-3);margin-top:auto;padding-top:6px;}

  /* ── таблицы ────────────────────────────────────────────── */
  .tbl-wrap{overflow-x:auto;border:1px solid var(--line);margin-top:18px;-webkit-overflow-scrolling:touch;}
  table.tbl{width:100%;border-collapse:collapse;font-size:.9rem;min-width:560px;}
  table.tbl.tbl--s{min-width:420px;}
  table.tbl.tbl--fit{min-width:0;}
  .tbl th,.tbl td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top;}
  .tbl thead th{
    font-family:var(--font-display);
    text-transform:uppercase;
    letter-spacing:.1em;
    font-size:.7rem;
    font-weight:600;
    color:var(--ink-3);
    background:var(--surface-2);
    border-bottom:1px solid var(--line-strong);
    white-space:nowrap;
  }
  .tbl tbody tr:nth-child(even){background:var(--surface);}
  .tbl tbody tr:last-child td{border-bottom:0;}
  .tbl td:first-child{font-family:var(--font-mono);font-size:.78rem;color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums;}
  .tbl td.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;}
  .tbl td b{font-weight:600;}

  /* ── формы ──────────────────────────────────────────────── */
  .fields{display:grid;}
  .field{display:grid;grid-template-columns:minmax(0,1fr) 136px;gap:14px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);}
  .field:first-child{border-top:1px solid var(--line);}
  .field label{font-size:.93rem;color:var(--ink-2);line-height:1.4;}
  .field label small{display:block;font-family:var(--font-mono);font-size:.7rem;color:var(--ink-3);margin-top:2px;}
  .inp{
    width:100%;
    min-height:44px;
    padding:9px 11px;
    border:1px solid var(--line-strong);
    border-radius:0;
    background:var(--surface);
    color:var(--ink);
    font-family:var(--font-mono);
    font-size:1rem;
    font-variant-numeric:tabular-nums;
    -webkit-appearance:none;
    appearance:none;
  }
  select.inp{font-family:var(--font-body);font-size:.92rem;-webkit-appearance:auto;appearance:auto;}
  .inp:focus{outline:2px solid var(--ink);outline-offset:0;border-color:var(--ink);}
  .save-note{margin-top:8px;font-family:var(--font-mono);font-size:.74rem;color:var(--ink-3);}
  @media (max-width:420px){.field{grid-template-columns:minmax(0,1fr) 116px;}}
  .field--wide{grid-template-columns:minmax(0,1fr) 170px;}

  /* квадратные радио и галочки */
  input.sq{
    -webkit-appearance:none;
    appearance:none;
    width:22px;
    height:22px;
    margin:0;
    border:1.5px solid var(--line-strong);
    border-radius:0;
    background:var(--bg);
    display:grid;
    place-content:center;
    cursor:pointer;
    flex:none;
  }
  input.sq::before{content:"";width:10px;height:10px;background:var(--ink);transform:scale(0);}
  input.sq:checked{border-color:var(--ink);}
  input.sq:checked::before{transform:scale(1);}
  .check{display:flex;justify-content:flex-end;}

  .opts{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:22px;}
  .opt{display:grid;grid-template-columns:22px minmax(0,1fr);gap:14px;align-items:start;padding:15px 16px;background:var(--surface);cursor:pointer;}
  .opt:hover{background:var(--surface-2);}
  .opt__t{display:block;font-weight:600;}
  .opt__s{display:block;font-family:var(--font-mono);font-size:.84rem;color:var(--ink-2);margin-top:2px;}
  .opt .inp{margin-top:10px;max-width:220px;}

  /* ── Ещё ────────────────────────────────────────────────── */
  .menu{list-style:none;margin:22px 0 0;padding:0;border-top:1px solid var(--line-strong);}
  .menu a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 14px;align-items:center;padding:14px 4px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);}
  .menu a:hover{background:var(--surface);}
  .menu__t{font-family:var(--font-display);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:1.02rem;}
  .menu__s{grid-column:1;font-size:.86rem;color:var(--ink-2);line-height:1.4;}
  .menu__a{grid-column:2;grid-row:1 / 3;font-family:var(--font-mono);color:var(--ink-3);}

  ol.steps{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:1px;background:var(--line);border:1px solid var(--line);counter-reset:s;}
  ol.steps li{background:var(--surface);padding:14px 16px;display:grid;grid-template-columns:28px 1fr;gap:12px;counter-increment:s;font-size:.95rem;color:var(--ink-2);}
  ol.steps li::before{content:counter(s);font-family:var(--font-mono);font-weight:700;color:var(--accent);}
  ol.steps b{color:var(--ink);font-weight:600;}

  .proto{margin-top:44px;border:1px dashed var(--line-strong);padding:16px;}
  .proto p{font-size:.86rem;color:var(--ink-2);}

  /* ── Главная: программы ─────────────────────────────────── */
  .progs{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:10px;}
  .prog{display:flex;flex-direction:column;gap:4px;background:var(--surface);border:1px solid var(--line);color:var(--ink);text-decoration:none;}
  .prog__top{display:flex;align-items:center;justify-content:space-between;gap:6px 12px;}
  .prog__s{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.1em;font-weight:500;font-size:.64rem;padding:3px 8px;border:1px solid var(--line-strong);color:var(--ink-3);white-space:nowrap;}
  .prog__t{font-family:var(--font-display);font-weight:700;text-transform:uppercase;letter-spacing:.01em;line-height:1.02;}
  .prog__m{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-2);font-variant-numeric:tabular-nums;}
  .prog__d{font-size:.94rem;color:var(--ink-2);max-width:60ch;margin-top:6px;}
  .prog__now{font-family:var(--font-mono);font-size:.8rem;color:var(--ink);margin-top:8px;font-variant-numeric:tabular-nums;}
  .prog.is-locked{padding:12px 16px 13px;background:transparent;border-style:dashed;border-color:var(--line-strong);cursor:default;}
  .prog.is-locked .prog__t{font-size:1.35rem;color:var(--ink-3);}
  .prog.is-locked .prog__m{color:var(--ink-3);}
  .prog.is-open{border:2px solid var(--ink);padding:16px 18px 18px;}
  .prog.is-open:hover{background:var(--surface-2);}
  .prog.is-open .prog__t{font-size:clamp(2.1rem,9vw,2.9rem);}
  .prog__rule{display:block;width:56px;height:6px;background:var(--accent);margin-bottom:8px;}
  .prog__cta{margin-top:16px;}
  .is-home .tabbar{display:none;}
  .is-home .wrap{padding-block-end:calc(40px + env(safe-area-inset-bottom,0px));}

  /* ── нижняя навигация ───────────────────────────────────── */
  .tabbar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:20;
    background:var(--surface);
    border-top:1px solid var(--line-strong);
    padding-bottom:env(safe-area-inset-bottom,0px);
  }
  .tabbar__in{max-width:790px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);}
  .tabbar a{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:3px;
    min-height:var(--tab-h);
    color:var(--ink-3);
    text-decoration:none;
    font-family:var(--font-display);
    text-transform:uppercase;
    letter-spacing:.1em;
    font-size:.66rem;
    font-weight:500;
  }
  .tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:square;stroke-linejoin:miter;}
  .tabbar svg .f{fill:currentColor;stroke:none;}
  .tabbar a:hover{color:var(--ink-2);}
  .tabbar a[aria-current="page"]{color:var(--ink);font-weight:600;}
  .tabbar a[aria-current="page"]::before{content:"";position:absolute;top:-1px;left:24%;right:24%;height:2px;background:var(--ink);}

  footer{
    margin-top:56px;
    padding-top:16px;
    border-top:1px solid var(--line);
    font-family:var(--font-mono);
    font-size:.72rem;
    letter-spacing:.04em;
    color:var(--ink-3);
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:8px;
    text-transform:uppercase;
  }

  @media (max-width:560px){
    .weeks > div{grid-template-columns:1fr;}
    .weeks .wd,.weeks .wm{grid-column:1;}
  }

  /* ── сайт: формы, вход, админка ─────────────────────────── */
  .js .nojs{display:none!important;}
  form{margin:0;}
  .saved{margin-top:8px;font-family:var(--font-mono);font-size:.76rem;color:var(--steel);}
  .err{margin-top:8px;font-size:.88rem;color:var(--accent);}
  .auth{margin-top:28px;}
  .auth [hidden]{display:none!important;}
  .adm-add{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;}
  .adm-add .inp{max-width:220px;}
  table.tbl.tbl--adm{min-width:720px;}
  .tbl td form{display:inline;}
  .tbl .btn--sm{min-height:36px;padding:6px 10px;font-size:.7rem;}
  .st-active{color:var(--ink);font-weight:600;}
  .st-revoked,.st-none{color:var(--ink-3);}
  .kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:18px;}
  .kv > div{background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;gap:2px;}
  .kv b{font-family:var(--font-mono);font-size:1.4rem;font-variant-numeric:tabular-nums;}
  .kv span{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.12em;font-size:.66rem;color:var(--ink-3);}

  [hidden]{display:none!important;}
