/* ——————————————————————————————————————————————
   Оформление в стиле Google Calendar:
   белый фон, серые линии #dadce0, Roboto,
   синий акцент #1a73e8, круглые иконки-кнопки.
   —————————————————————————————————————————————— */

:root{
  color-scheme:light;

  --line:#dadce0;
  --line-2:#e8eaed;
  --ink:#3c4043;
  --ink-2:#70757a;
  --ink-3:#5f6368;
  --blue:#1a73e8;
  --blue-dark:#174ea6;
  --blue-soft:#e8f0fe;
  --hover:#f1f3f4;
  --bg:#ffffff;

  --sh-1:0 1px 2px 0 rgba(60,64,67,.3),0 1px 3px 1px rgba(60,64,67,.15);
  --sh-2:0 1px 3px 0 rgba(60,64,67,.3),0 4px 8px 3px rgba(60,64,67,.15);
  --sh-3:0 4px 8px 3px rgba(60,64,67,.15),0 1px 3px rgba(60,64,67,.3);

  --hour:48px;                 /* высота часа в неделе/дне */
  --font:Roboto,"Helvetica Neue",Arial,sans-serif;
}

*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{height:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font:400 14px/1.4 var(--font);
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
  display:flex;flex-direction:column;
}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{margin:0;font-weight:400}
ul{margin:0;padding:0;list-style:none}

/* —————————————————————— верхняя панель —————————————————————— */
.appbar{
  height:64px;flex:none;display:flex;align-items:center;gap:8px;
  padding:0 16px;border-bottom:1px solid var(--line);background:#fff;
}
.ab-left{display:flex;align-items:center;gap:4px;flex:none}
.ab-mid{display:flex;align-items:center;gap:4px;flex:1;min-width:0}
.ab-right{display:flex;align-items:center;gap:8px;flex:none}

.ic{
  width:40px;height:40px;flex:none;border:0;border-radius:50%;background:none;
  color:var(--ink-3);cursor:pointer;display:grid;place-items:center;
}
.ic:hover{background:var(--hover)}
.ic:active{background:var(--line-2)}
.ic-sm{width:32px;height:32px}

.logo{display:flex;align-items:center;gap:8px;margin-left:4px}
.logo-badge{
  width:32px;height:32px;border:2px solid var(--ink-3);border-radius:6px;
  display:grid;place-items:center;font-size:13px;font-weight:500;color:var(--ink-3);
  position:relative;padding-top:4px;
}
.logo-badge::before{
  content:"";position:absolute;top:-2px;left:-2px;right:-2px;height:7px;
  background:var(--ink-3);border-radius:4px 4px 0 0;
}
.logo-txt{font-size:22px;color:#5f6368;letter-spacing:-.2px}

.gbtn{
  height:36px;padding:0 16px;border:1px solid var(--line);border-radius:4px;
  background:#fff;color:var(--ink);font-size:14px;font-weight:500;cursor:pointer;
}
.gbtn:hover{background:var(--hover)}
.gbtn-filled{background:var(--blue);border-color:var(--blue);color:#fff}
.gbtn-filled:hover{background:#1b66c9;box-shadow:var(--sh-1)}

.period{font-size:22px;color:var(--ink);margin-left:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.period #period-year{color:var(--ink)}

.search-wrap{position:relative;display:flex;align-items:center}
.search-input{
  width:260px;height:40px;border:1px solid var(--line);border-radius:8px;
  padding:0 12px;background:#fff;outline:none;
}
.search-input:focus{border-color:var(--blue)}
.search-results{
  position:absolute;top:46px;right:0;width:340px;max-height:340px;overflow:auto;
  background:#fff;border-radius:8px;box-shadow:var(--sh-2);z-index:40;padding:6px 0;
}
.search-results:empty{display:none}
.search-results li{
  padding:8px 16px;cursor:pointer;font-size:13px;color:var(--ink);
  display:flex;flex-direction:column;gap:2px;border-left:4px solid transparent;
}
.search-results li:hover{background:var(--hover)}
.search-results .sr-date{color:var(--ink-2);font-size:12px}

.view-select{
  height:36px;border:1px solid var(--line);border-radius:4px;background:#fff;
  padding:0 30px 0 12px;color:var(--ink);cursor:pointer;
  -webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='%235f6368' d='M7 10l5 5 5-5z'/></svg>");
  background-repeat:no-repeat;background-position:right 6px center;background-size:20px;
}
.view-select:hover{background-color:var(--hover)}

/* —————————————————————— каркас —————————————————————— */
.shell{flex:1;min-height:0;display:flex}
.sidebar{
  width:256px;flex:none;padding:8px 8px 16px;overflow:auto;
  display:flex;flex-direction:column;gap:16px;background:#fff;
}
body.no-sidebar .sidebar{display:none}
.content{flex:1;min-width:0;display:flex;flex-direction:column;border-left:1px solid var(--line)}
.viewport{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}

.create-btn{
  align-self:flex-start;height:48px;border:1px solid #f1f3f4;border-radius:24px;
  background:#fff;box-shadow:var(--sh-1);padding:0 24px 0 14px;
  display:flex;align-items:center;gap:10px;cursor:pointer;
  font-size:14px;font-weight:500;color:var(--ink);margin:8px 0 0 8px;
}
.create-btn:hover{box-shadow:var(--sh-2);background:#fafafa}

/* мини-календарь */
.mini{padding:0 8px}
.mini-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px;padding-left:6px}
.mini-title{font-size:14px;font-weight:500;color:var(--ink);text-transform:capitalize}
.mini-nav{display:flex;gap:2px}
.mini-nav button{
  width:28px;height:28px;border:0;border-radius:50%;background:none;
  color:var(--ink-3);cursor:pointer;font-size:16px;line-height:1;
}
.mini-nav button:hover{background:var(--hover)}
.mini-today{
  display:none;width:auto !important;padding:0 10px;border-radius:14px !important;
  color:var(--blue) !important;font-size:12px;font-weight:500;
}
.mini-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.mini-grid .dow{
  color:var(--ink-2);font-size:10px;text-align:center;padding-bottom:4px;
  text-transform:uppercase;font-weight:500;
}
.mini-cell{
  aspect-ratio:1;display:grid;place-items:center;border-radius:50%;
  font-size:12px;color:var(--ink);cursor:pointer;position:relative;
}
.mini-cell.out{color:var(--ink-2);opacity:.55}
.mini-cell:hover{background:var(--hover)}
.mini-cell.today{background:var(--blue);color:#fff;font-weight:500}
.mini-cell.sel:not(.today){background:var(--blue-soft);color:var(--blue-dark)}
.mini-cell.has::after{
  content:"";position:absolute;bottom:1px;width:3px;height:3px;border-radius:50%;
  background:currentColor;opacity:.7;
}

/* список календарей */
.cal-section{padding:0 8px}
.cal-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:6px 6px 6px 12px;font-size:14px;font-weight:500;color:var(--ink);
}
.cal-list li{
  display:flex;align-items:center;gap:12px;padding:4px 8px 4px 12px;border-radius:4px;
  min-height:32px;
}
.cal-list li:hover{background:var(--hover)}
.cal-box{
  width:18px;height:18px;flex:none;border-radius:2px;cursor:pointer;
  border:2px solid currentColor;display:grid;place-items:center;
}
.cal-box.on{background:currentColor}
.cal-box svg{opacity:0}
.cal-box.on svg{opacity:1}
.cal-name{
  flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--ink);cursor:pointer;font-size:14px;
}
.cal-list li.off .cal-name{color:var(--ink-2)}
.cal-edit{opacity:0;border:0;background:none;color:var(--ink-3);cursor:pointer;font-size:15px;padding:0 4px}
.cal-list li:hover .cal-edit{opacity:1}

/* —————————————————————— месяц —————————————————————— */
.month{display:flex;flex-direction:column;height:100%}
.dow-row{
  display:grid;grid-template-columns:repeat(7,minmax(0,1fr));flex:none;
  border-bottom:1px solid var(--line);
}
.dow-row div{
  color:var(--ink-2);font-size:11px;font-weight:500;letter-spacing:.8px;
  text-transform:uppercase;text-align:center;padding:6px 0 4px;
}
.month-grid{flex:1;display:flex;flex-direction:column;min-height:0}
.week-row{
  position:relative;flex:1;min-height:0;
  display:grid;grid-template-columns:repeat(7,minmax(0,1fr));
  border-bottom:1px solid var(--line);
}
.week-row:last-child{border-bottom:0}
.day-cell{
  border-right:1px solid var(--line);padding:0 6px 4px;background:#fff;
  min-height:0;display:flex;flex-direction:column;overflow:hidden;position:relative;
}
.day-cell:last-child{border-right:0}
.day-cell.drop{background:var(--blue-soft)}
.day-num{
  align-self:center;margin-top:4px;min-width:24px;height:24px;padding:0 6px;
  display:grid;place-items:center;border-radius:12px;
  font-size:12px;font-weight:500;color:var(--ink);cursor:pointer;
}
.day-cell.out .day-num{color:var(--ink-2)}
.day-num:hover{background:var(--hover)}
.day-num.today{background:var(--blue);color:#fff}
.day-cell .events{display:flex;flex-direction:column;gap:2px;overflow:hidden;margin-top:2px}
.more{
  color:var(--ink-2);font-size:12px;cursor:pointer;padding:1px 6px;border-radius:4px;
}
.more:hover{background:var(--hover);color:var(--ink)}

/* плашки событий */
.chip{
  --c:var(--blue);
  height:20px;display:flex;align-items:center;gap:5px;min-width:0;
  padding:0 6px;border-radius:4px;font-size:12px;line-height:20px;
  cursor:pointer;user-select:none;color:var(--ink);
}
.chip .txt{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.chip .tm{color:var(--ink-2);font-size:12px;flex:none;white-space:nowrap}
.chip .bullet{width:8px;height:8px;border-radius:50%;background:var(--c);flex:none}
.chip.solid{background:var(--c);color:#fff;font-weight:500}
.chip.solid .tm{color:rgba(255,255,255,.85);font-weight:400}
.chip.solid:hover{filter:brightness(.92)}
.chip.plain:hover{background:var(--hover)}
.chip.cont-left{border-top-left-radius:0;border-bottom-left-radius:0}
.chip.cont-right{border-top-right-radius:0;border-bottom-right-radius:0}
.chip.dragging{opacity:.4}

/* полосы многодневных событий поверх сетки */
.spans{position:absolute;inset:30px 0 auto 0;pointer-events:none;z-index:2}
.span-row{position:relative;height:20px;margin-bottom:2px}
.span-bar{position:absolute;pointer-events:auto;height:20px}

/* —————————————————————— неделя / день —————————————————————— */
.tl{display:flex;flex-direction:column;height:100%;min-height:0}
.tl-head{display:grid;flex:none;border-bottom:1px solid var(--line)}
.tl-corner{border-right:1px solid var(--line)}
.tl-daycol{padding:6px 4px 4px;text-align:center;cursor:pointer}
.tl-dow{color:var(--ink-2);font-size:11px;font-weight:500;letter-spacing:.8px;text-transform:uppercase}
.tl-daycol.today .tl-dow{color:var(--blue)}
.tl-dnum{
  font-size:26px;font-weight:400;color:var(--ink);margin-top:2px;
  width:46px;height:46px;line-height:46px;border-radius:50%;display:inline-block;
}
.tl-daycol:hover .tl-dnum{background:var(--hover)}
.tl-daycol.today .tl-dnum{background:var(--blue);color:#fff}
.tl-allday{
  display:grid;border-bottom:1px solid var(--line);min-height:24px;flex:none;
  max-height:110px;overflow:auto;
}
.tl-allday .ad-cell{border-right:1px solid var(--line);padding:2px 4px;display:flex;flex-direction:column;gap:2px}
.tl-allday .ad-cell:last-child{border-right:0}
.tl-scroll{flex:1;overflow:auto;position:relative}
.tl-body{display:grid;position:relative}
.tl-gutter{border-right:1px solid var(--line);position:relative}
.tl-hour{
  height:var(--hour);position:relative;color:var(--ink-2);font-size:10px;
  text-align:right;padding-right:8px;
}
.tl-hour span{position:relative;top:-6px}
.tl-col{border-right:1px solid var(--line);position:relative}
.tl-col:last-child{border-right:0}
.tl-line{position:absolute;left:0;right:0;border-top:1px solid var(--line)}
.now-line{position:absolute;left:0;right:0;height:0;border-top:2px solid #ea4335;z-index:6;pointer-events:none}
.now-line::before{
  content:"";position:absolute;left:-6px;top:-6px;width:12px;height:12px;
  border-radius:50%;background:#ea4335;
}

.ev{
  --c:var(--blue);
  position:absolute;left:0;right:0;border-radius:4px;padding:2px 6px;
  background:var(--c);color:#fff;border:1px solid #fff;
  overflow:hidden;cursor:pointer;font-size:12px;line-height:1.25;z-index:3;
}
.ev:hover{filter:brightness(.92);z-index:4;box-shadow:var(--sh-1)}
.ev .ev-t{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ev .ev-time{color:rgba(255,255,255,.85);font-size:11px}
.ev.dragging{opacity:.7;z-index:9;box-shadow:var(--sh-2)}
.ev .grip{position:absolute;left:0;right:0;bottom:0;height:8px;cursor:ns-resize}
.ev .grip::after{
  content:"";position:absolute;left:50%;bottom:2px;transform:translateX(-50%);
  width:20px;height:2px;border-radius:2px;background:#fff;opacity:0;
}
.ev:hover .grip::after{opacity:.7}

/* —————————————————————— год —————————————————————— */
.year{
  flex:1;min-height:0;overflow:auto;padding:16px 24px 32px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  grid-auto-rows:min-content;gap:8px 24px;align-content:start;
}
.ycard{padding:8px;border-radius:8px;cursor:pointer}
.ycard:hover{background:var(--hover)}
.ycard .pat{display:none}
.ycard .yrule{display:none}
.ycard h4{
  margin:0 0 6px 6px;font-size:15px;font-weight:500;color:var(--blue);
  text-transform:capitalize;
}
.ycard .yyear{display:none}
.ygrid{display:grid;grid-template-columns:repeat(7,1fr)}
.ygrid .yd{
  aspect-ratio:1;display:grid;place-items:center;font-size:11px;color:var(--ink);
  border-radius:50%;position:relative;
}
.ygrid .yh{font-size:10px;color:var(--ink-2);font-weight:500;text-transform:uppercase}
.ygrid .yd.out{color:#bdc1c6}
.ygrid .yd:hover:not(.yh){background:var(--hover)}
.ygrid .yd.today{background:var(--blue);color:#fff;font-weight:500}
.ygrid .yd.has::after{
  content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);
  width:3px;height:3px;border-radius:50%;background:var(--dot,var(--blue));
}
.ygrid .yd.today.has::after{background:#fff}

/* —————————————————————— расписание (список) —————————————————————— */
.agenda{flex:1;min-height:0;overflow:auto;padding:0 0 40px}
.ag-day{
  display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;
  padding:12px 24px;border-bottom:1px solid var(--line-2);
}
.ag-date{color:var(--ink-2);font-size:13px;text-align:right;padding-top:4px}
.ag-date .d{
  display:inline-block;font-size:22px;font-weight:400;color:var(--ink);
  min-width:34px;height:34px;line-height:34px;text-align:center;border-radius:50%;
}
.ag-day.today .ag-date .d{background:var(--blue);color:#fff}
.ag-date .m{display:block;margin-top:2px;text-transform:uppercase;font-size:11px;letter-spacing:.6px}
.ag-items{display:flex;flex-direction:column;gap:2px;min-width:0}
.ag-item{
  --c:var(--blue);
  display:grid;grid-template-columns:14px 100px minmax(0,1fr);gap:12px;align-items:center;
  padding:6px 8px;border-radius:4px;cursor:pointer;
}
.ag-item:hover{background:var(--hover)}
.ag-item::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--c)}
.ag-item.solid::before{border-radius:3px}
.ag-item .t{color:var(--ink-2);font-size:13px}
.ag-item .n{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-item .cal{color:var(--ink-2);font-size:12px;margin-left:8px}
.ag-empty{color:var(--ink-2);padding:60px 0;text-align:center}

/* —————————————————————— диалоги —————————————————————— */
.overlay[hidden],.toast[hidden]{display:none}
.overlay{
  position:fixed;inset:0;background:rgba(32,33,36,.6);
  display:grid;place-items:center;z-index:50;padding:20px;
}
.dialog{
  width:min(600px,100%);max-height:90vh;overflow:auto;background:#fff;
  border-radius:8px;box-shadow:var(--sh-3);
}
.dialog-sm{width:min(420px,100%)}
.dialog-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 24px 8px;
}
.dialog-head h3{font-size:20px;font-weight:400;color:var(--ink)}
.dialog-body{padding:8px 24px 20px;display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.dialog-body-col{display:flex;flex-direction:column;gap:4px}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field>span:first-child{color:var(--ink-2);font-size:12px}
.field-wide{grid-column:1 / -1}
.field-check{flex-direction:row;align-items:center;gap:8px;align-self:end;padding-bottom:8px}
.field-check span{color:var(--ink);font-size:14px}
.field-check input{width:18px;height:18px;accent-color:var(--blue)}
.input{
  width:100%;background:#fff;border:1px solid var(--line);border-radius:4px;
  padding:9px 10px;color:var(--ink);outline:none;
}
.input:focus{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.input-lg{font-size:18px;padding:10px 12px}
textarea.input{resize:vertical;font-family:inherit}
.dt{display:flex;gap:8px}
.dt .time{max-width:112px}
.unit{color:var(--ink-2);align-self:center;font-size:13px}
.days{display:flex;gap:6px;flex-wrap:wrap}
.days button{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--line);
  background:#fff;color:var(--ink);cursor:pointer;font-size:12px;
}
.days button:hover{background:var(--hover)}
.days button.on{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:500}
.radio{display:flex;align-items:center;gap:12px;padding:8px 4px;cursor:pointer;font-size:14px}
.radio input{width:18px;height:18px;accent-color:var(--blue)}
.hint{color:var(--ink-2);font-size:13px;margin:0 0 4px}
.dialog-actions{grid-column:1 / -1;display:flex;gap:8px;align-items:center;margin-top:8px}
.spacer{flex:1}
.tbtn{
  height:36px;padding:0 16px;border:0;border-radius:4px;background:none;
  color:var(--blue);font-size:14px;font-weight:500;cursor:pointer;
}
.tbtn:hover{background:var(--blue-soft)}
.tbtn-primary{color:var(--blue)}
.tbtn-danger{color:#d93025}
.tbtn-danger:hover{background:#fce8e6}

.toast{
  position:fixed;left:24px;bottom:24px;background:#323232;color:#fff;
  padding:14px 16px;border-radius:4px;z-index:80;font-size:14px;box-shadow:var(--sh-2);
}

/* —————————————————————— адаптив —————————————————————— */

/* —————————————————————— публичная часть и панель —————————————————————— */
.ab-link{
  height:36px;padding:0 12px;display:inline-flex;align-items:center;
  border:0;border-radius:4px;background:none;color:var(--blue);
  font-size:14px;font-weight:500;text-decoration:none;cursor:pointer;white-space:nowrap;
}
.ab-link:hover{background:var(--blue-soft)}
.admin-tag{
  margin-left:8px;padding:2px 8px;border-radius:10px;background:var(--blue-soft);
  color:var(--blue);font-size:11px;font-weight:500;letter-spacing:.3px;
}
.cal-hint{margin:10px 12px 0;color:var(--ink-2);font-size:11px;line-height:1.5}
.cal-badge{
  margin-left:6px;padding:1px 6px;border-radius:8px;background:var(--hover);
  color:var(--ink-2);font-size:10px;vertical-align:1px;
}
.input.color{width:52px;padding:2px 4px;flex:none;cursor:pointer}

/* плавающая кнопка создания — только на телефоне */
.fab{
  display:none;position:fixed;right:16px;bottom:16px;width:56px;height:56px;
  border:0;border-radius:16px;background:#fff;color:var(--blue);
  box-shadow:var(--sh-2);cursor:pointer;place-items:center;z-index:44;
}
.fab:active{background:var(--hover)}

/* —————————————————————— вход и настройка —————————————————————— */
.auth-page{
  display:block;background:#f8f9fa;overflow:auto;
  padding:48px 16px;
}
.auth-card{
  max-width:420px;margin:0 auto;background:#fff;border:1px solid var(--line);
  border-radius:8px;padding:32px;box-shadow:var(--sh-1);
}
.auth-logo{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.auth-card h1{font-size:22px;font-weight:400;margin-bottom:8px}
.auth-card .hint{margin:0 0 16px}
.auth-card .field{margin-bottom:14px}
.auth-card a{color:var(--blue)}
.auth-error{
  margin:0 0 12px;padding:10px 12px;border-radius:4px;
  background:#fce8e6;color:#c5221f;font-size:13px;
}
.auth-submit{width:100%;height:40px}
.code{
  background:var(--hover);border-radius:4px;padding:10px 12px;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;margin:0 0 16px;
}


/* ——————————————————————————————————————————————
   Адаптив: планшет — сайдбар выдвижной шторкой,
   телефон — компактная шапка и уплотнённые сетки.
   —————————————————————————————————————————————— */

@media (max-width:1024px){
  .content{border-left:0}
  .search-input{width:200px}

  .sidebar{
    position:fixed;left:0;top:0;bottom:0;width:min(300px,86vw);z-index:46;
    transform:translateX(-100%);transition:transform .22s ease;
    box-shadow:var(--sh-2);padding-top:16px;
  }
  body.no-sidebar .sidebar{display:flex}   /* на узком экране решает только шторка */
  body.sidebar-open .sidebar{transform:none}
  body.sidebar-open::after{
    content:"";position:fixed;inset:0;background:rgba(32,33,36,.5);z-index:45;
  }
}

@media (max-width:600px){
  .appbar{height:56px;padding:0 4px;gap:2px}
  .logo{display:none}
  .admin-tag{display:none}
  .period{font-size:15px;margin-left:4px}
  .gbtn{height:32px;padding:0 10px;font-size:13px}
  #btn-today{display:none}                /* «Сегодня» переезжает в шторку */
  .mini-today{display:inline-block}
  .ic{width:36px;height:36px}
  .ic-sm{width:28px;height:28px}
  .ab-right{gap:2px}
  .ab-link[href]{display:none}            /* «Вход» и «Сайт» — только на широком экране */
  #btn-logout{padding:0 8px;font-size:13px}
  .view-select{height:32px;padding:0 22px 0 6px;font-size:12px;background-size:16px;background-position:right 4px center}

  /* поиск разворачивается на всю ширину экрана */
  .search-wrap{position:static}
  .search-input{position:fixed;left:8px;right:8px;top:8px;width:auto;height:40px;z-index:60}
  .search-results{left:8px;right:8px;width:auto;top:54px}

  /* месяц */
  .dow-row div{font-size:10px;letter-spacing:.4px;padding:4px 0 2px}
  .day-cell{padding:0 2px 2px}
  .day-num{margin-top:2px;min-width:22px;height:22px;padding:0 4px;font-size:11px}
  .chip{height:18px;line-height:18px;font-size:11px;padding:0 4px;gap:3px;border-radius:3px}
  .chip .bullet{width:6px;height:6px}
  .chip .tm{font-size:11px}
  .spans{inset:26px 0 auto 0}
  .span-row,.span-bar{height:18px}
  .more{font-size:11px;padding:0 4px}

  /* неделя и день */
  .tl-daycol{padding:4px 2px}
  .tl-dow{font-size:10px;letter-spacing:.4px}
  .tl-dnum{font-size:20px;width:34px;height:34px;line-height:34px}
  .tl-hour{font-size:9px;padding-right:4px}
  .ev{font-size:11px;padding:1px 4px}
  .ev .ev-time{font-size:10px}

  /* год */
  .year{padding:12px;gap:4px 12px}

  /* расписание */
  .ag-day{grid-template-columns:60px minmax(0,1fr);gap:10px;padding:10px 12px}
  .ag-date{font-size:11px}
  .ag-date .d{font-size:18px;min-width:28px;height:28px;line-height:28px}
  .ag-item{grid-template-columns:12px 82px minmax(0,1fr);gap:8px;padding:6px}
  .ag-item .t{font-size:12px}
  .ag-item .n{font-size:13px}
  .ag-item .cal{display:none}

  /* диалоги */
  .overlay{padding:8px}
  .dialog{max-height:94vh}
  .dialog-head{padding:16px 16px 4px}
  .dialog-head h3{font-size:18px}
  .dialog-body{padding:8px 16px 16px;grid-template-columns:1fr;gap:10px}
  .field-check{align-self:start;padding-bottom:0}
  .dt .time{max-width:none;flex:1}
  .days button{width:32px;height:32px}
  .create-btn{height:44px;margin:4px 0 0 8px}
  .fab{display:grid}

  /* вход */
  .auth-page{padding:24px 12px}
  .auth-card{padding:20px}
}
