:root{
  --bg: #0b0c0f;
  --panel: rgba(255,255,255,.06);
  --panel2: rgba(255,255,255,.08);
  --stroke: rgba(255,255,255,.10);

  --text: rgba(255,255,255,.92);
  --muted: rgba(255,255,255,.62);

  --accent: #4da3ff;
  --accent2:#2f7cff;

  --shadow: 0 18px 50px rgba(0,0,0,.45);

  --r: 18px;
  --r2: 14px;

  --container: 1180px;
  --gap: 16px;
}

*{ box-sizing:border-box; }

html,body{
  margin:0;
  min-height:100%;
  font-family: "Manrope", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background: radial-gradient(1200px 900px at 20% 10%, rgba(77,163,255,.14), transparent 55%),
              radial-gradient(900px 700px at 80% 20%, rgba(127,87,255,.12), transparent 55%),
              var(--bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

/* no cosmic layers */
.backdrop, .vignette, #bg-canvas{ display:none !important; }

/* FIX: если где-то ещё остался cal-icon — не даём ему раздуваться */
.cal-icon{ display:none !important; }

/* accessibility helper */
.sr-only{
  position:absolute;
  width:1px; height:1px;
  padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0);
  white-space:nowrap; border:0;
}

.brand{ align-self: center; }

/* header: simple */
.site-header{
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(10,10,12,.72);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid rgba(255,255,255,.08);
}

.header-inner{
  width: min(var(--container), 92vw);
  margin: 0 auto;
  padding: 14px 0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 14px;
}

.brand-title{
  margin:0;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: .2px;
  line-height: 1.2;
}
.brand-sub{
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.35;
}

.header-controls{
  display:flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content:flex-end;
}

main.app{
  width: min(var(--container), 92vw);
  margin: 0 auto;
  padding: 16px 0 44px;
}

.shell{
  display:grid;
  grid-template-columns: 380px minmax(0, 1fr);
  gap: var(--gap);
  align-items:start;
}

.sidebar, .content{
  border-radius: var(--r);
  background: linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.05));
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: var(--shadow);
}

/* FIX: сайдбар должен быть фиксированной высоты, чтобы flex корректно распределил место
   и чтобы кнопка Start timer НЕ накрывала список регионов */
.sidebar{
  position: sticky;
  top: 74px;
  padding: 14px;
  display:flex;
  flex-direction:column;
  height: calc(100dvh - 108px);
  min-height: 0;
  overflow: visible;
}

.content{
  padding: 14px;
  min-height: calc(100dvh - 108px);
}

.divider{
  height: 1px;
  background: rgba(255,255,255,.08);
  margin: 12px 0;
}

.side-head{
  display:flex;
  flex-direction:column;
  gap: 6px;
}

.side-kicker,
.group-title{
  font-size: 12px;
  letter-spacing: .10em;
  text-transform: uppercase;
  font-weight: 700;
  color: rgba(255,255,255,.58);
}

.side-meta{
  font-size: 12px;
  color: var(--muted);
}

.group{
  display:flex;
  flex-direction:column;
  gap: 12px;
}

.group.grow{
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden; /* FIX: чтобы зона списка не вылазила и не перекрывала footer */
}

.group-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 10px;
}

.content-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap: 12px;
  padding: 2px 2px 12px;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.content-title{
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(255,255,255,.78);
}
.content-meta{
  font-size: 12px;
  color: var(--muted);
  text-align:right;
}

/* form */
label{
  display:block;
  font-size: 13px;
  font-weight: 600;
  margin:0 0 8px;
  color: rgba(255,255,255,.88);
}

label.mini{
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,.60);
  margin:0 0 8px;
  letter-spacing:.08em;
  text-transform:uppercase;
}

.field{ width:100%; }
.field.compact{ width: 220px; }

.input-wrap{ position:relative; min-width:0; width: 100%; }

.row{
  display:flex;
  gap:10px;
  align-items:stretch;
  flex-wrap:wrap;
}

input[type="date"],
input[type="time"],
.text,
input[type="datetime-local"]{
  width:100%;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.22);
  color: rgba(255,255,255,.92);
  padding: 12px 12px;
  font-size: 14px;
  outline:none;
  transition: border-color .18s ease, background .18s ease;
  min-width:0;
}

.text{ padding-right: 140px; }
.zone-search{ padding-right: 12px; margin-bottom: 10px; }

input:hover, .text:hover{
  border-color: rgba(255,255,255,.16);
  background: rgba(0,0,0,.28);
}
input:focus, .text:focus{
  border-color: rgba(77,163,255,.55);
}

.hint{
  display:block;
  margin-top:8px;
  color: var(--muted);
  font-size:12px;
}

/* buttons */
.chip, .ghost{
  border-radius: 999px;
  padding: 10px 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.06);
  color: rgba(255,255,255,.88);
  font-weight: 600;
  font-size: 12px;
  cursor:pointer;
  transition: background .18s ease, border-color .18s ease;
}
.chip:hover, .ghost:hover{
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.16);
}
.chip:active, .ghost:active{
  background: rgba(255,255,255,.08);
}

.btnrow{
  display:flex;
  gap:8px;
  align-items:stretch;
  flex: 1 1 180px;
}
.btnrow .chip{ flex: 1 1 0; min-width: 0; }

.pill{
  border-radius: 999px;
  padding: 10px 12px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(0,0,0,.18);
  font-weight: 700;
  font-size: 12px;
  color: rgba(255,255,255,.68);
  white-space: nowrap;
}

.tip{ display:none; }

/* custom selects */
.selectbox{ position:relative; }
.selectbtn{
  width:100%;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.22);
  color: rgba(255,255,255,.92);
  padding: 10px 12px;
  font-size: 14px;
  outline:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  transition: border-color .18s ease, background .18s ease;
}
.selectbtn:hover{ border-color: rgba(255,255,255,.16); background: rgba(0,0,0,.28); }

.selectdd{
  position:absolute;
  left:0;
  top: calc(100% + 8px);
  width:100%;
  max-height: 260px;
  overflow:auto;
  background: rgba(18,18,22,.92);
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 14px;
  box-shadow: 0 20px 60px rgba(0,0,0,.55);
  display:none;
  z-index: 80;
  backdrop-filter: blur(12px);
}
.selectdd.open{ display:block; }
.selectdd .item{
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.08);
  cursor:pointer;
  color: rgba(255,255,255,.90);
}
.selectdd .item:last-child{ border-bottom:none; }
.selectdd .item:hover{ background: rgba(255,255,255,.08); }
.selectdd .item[aria-selected="true"]{ background: rgba(77,163,255,.18); }

/* timezone dropdown */
.dropdown-btn{
  position:absolute;
  right:8px;
  top:8px;
  height: calc(100% - 16px);
  display:flex;
  align-items:center;
  gap:8px;
  padding:0 10px;
  border-radius: 999px;
  border:1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.06);
  color: rgba(255,255,255,.88);
  font-weight: 700;
  cursor:pointer;
  transition: background .18s ease, border-color .18s ease;
}
.dropdown-btn:hover{
  background: rgba(255,255,255,.10);
  border-color: rgba(255,255,255,.16);
}

.dropdown{
  position:absolute;
  left:0;
  top: calc(100% + 8px);
  width:100%;
  max-height: 320px;
  overflow:auto;
  background: rgba(18,18,22,.92);
  border:1px solid rgba(255,255,255,.10);
  border-radius: 14px;
  box-shadow: 0 20px 60px rgba(0,0,0,.55);
  display:none;
  z-index: 90;
  backdrop-filter: blur(12px);
}
.dropdown.open{ display:block; }
.dropdown .item{
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.08);
  cursor:pointer;
  color: rgba(255,255,255,.90);
}
.dropdown .item:last-child{ border-bottom:none; }
.dropdown .item:hover{ background: rgba(255,255,255,.08); }

/* regions list */
.group.grow .field{
  display:flex;
  flex-direction:column;
  flex: 1 1 auto;
  min-height:0;
}

#zoneList.zone-list{
  flex: 1 1 auto;
  min-height: 0;         /* FIX: ключевое */
  overflow:auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.18);
}

.zone-row{
  display:flex;
  align-items:center;
  padding: 12px 12px;
  border-bottom:1px solid rgba(255,255,255,.08);
  cursor:pointer;
  user-select:none;
}
.zone-row:last-child{ border-bottom:none; }
.zone-row:hover{ background: rgba(255,255,255,.06); }

.zone-left{
  display:flex;
  gap:10px;
  align-items:center;
  min-width:0;
}

.zone-name{
  font-weight: 700;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.zone-sub{
  font-size:12px;
  color: var(--muted);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.check{
  width: 20px;
  height: 20px;
  border-radius: 6px;
  border: 1.5px solid rgba(255,255,255,.22);
  background: rgba(0,0,0,.18);
  display:grid;
  place-items:center;
}
.check svg{ opacity:0; }
.zone-row.selected .check{
  border-color: rgba(77,163,255,.70);
  background: rgba(77,163,255,.18);
}
.zone-row.selected .check svg{ opacity:1; }

/* actions */
.side-actions{
  display:flex;
  flex-direction:column;
  gap: 10px;
  margin-top:auto;
  padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,.08);
  position: static;
  z-index: 1;
}

button.primary{
  border:none;
  cursor:pointer;
  border-radius: 14px;
  padding: 12px 16px;
  font-weight: 700;
  font-size: 14px;
  color:#081018;
  background: linear-gradient(180deg, rgba(77,163,255,1), rgba(47,124,255,1));
  transition: filter .18s ease;
}
button.primary:hover{ filter: brightness(1.05); }
button.primary:active{ filter: brightness(0.98); }

.side-foot{
  display:flex;
  gap: 8px;
  align-items:center;
  justify-content:center;
  color: rgba(255,255,255,.60);
  font-size: 12px;
}
.side-foot .dot{
  width:8px; height:8px; border-radius:99px;
  background: rgba(77,163,255,1);
  box-shadow: 0 0 0 4px rgba(77,163,255,.18);
}
.brand-name{ font-weight: 700; color: rgba(255,255,255,.88); }

/* timers */
.timer-container{ padding-top: 12px; }
.region-list{ display:flex; flex-direction:column; gap:12px; margin-top: 12px; }

.region{
  border-radius: 16px;
  padding: 12px 12px 14px;
  background: rgba(0,0,0,.18);
  border:1px solid rgba(255,255,255,.10);
}

.region-name{
  font-size: 12px;
  font-weight: 700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color: rgba(255,255,255,.78);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.region-meta{
  margin-top: 6px;
  color: rgba(255,255,255,.62);
  font-size: 12px;
}

.timer-grid{
  margin-top: 10px;
  display:grid;
  grid-template-columns: repeat(4, minmax(72px, 1fr));
  gap:10px;
}

.unit{
  border-radius: 14px;
  padding: 12px 8px;
  background: rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.10);
  text-align:center;
}
.num{
  font-size: 26px;
  font-weight: 700;
  line-height:1;
}
.unit .label{
  margin-top:6px;
  font-size:11px;
  color: rgba(255,255,255,.62);
  text-transform:uppercase;
  font-weight: 600;
  letter-spacing:.06em;
}

.zones-actions { margin-bottom: 10px; }

/* empty hidden */
.content-empty{ display:none !important; }
.is-hidden{ display:none !important; }

/* responsive */
@media (max-width: 980px){
  .shell{ grid-template-columns: 1fr; }
  .sidebar{
    position: static;
    height: auto;
    min-height: unset;
  }
  .content{ min-height: unset; }

  #zoneList.zone-list{
    max-height: 45dvh;
    min-height: 260px;
    padding-bottom: 84px; /* FIX: чтобы fixed Start timer не перекрывал низ списка */
  }

  main.app{ padding-bottom: 120px; }

  .side-actions{
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    margin: 0;
    padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
    background: rgba(10,10,12,.72);
    backdrop-filter: blur(14px);
    border-top: 1px solid rgba(255,255,255,.08);
    z-index: 200;
  }

  button.primary{ width:100%; }
  .side-foot{ margin-top: 8px; font-size: 11px; }
}

@media (max-width: 720px){
  .field.compact{ width: 100%; }
  .header-inner{
    flex-direction:column;
    align-items:flex-start;
    gap: 10px;
  }
  .header-controls{
    width:100%;
    justify-content:space-between;
  }
  .row{ flex-direction:column; }
  .btnrow{ width:100%; }
  .timer-grid{ grid-template-columns: repeat(2, 1fr); }
}

:root{
  --accent3: #7f57ff;
  --cta-ink: #061018;
  --cta-glow: rgba(77,163,255,.32);
  --cta-glow2: rgba(127,87,255,.22);
}

button.primary{
  position: relative;
  overflow: hidden;
  isolation: isolate;

  min-height: 48px;
  padding: 13px 16px;

  letter-spacing: .10em;
  text-transform: uppercase;

  border: 1px solid transparent;
  border-radius: 16px;

  color: var(--cta-ink);

  background:
    linear-gradient(180deg, rgba(255,255,255,.22), rgba(255,255,255,.06)) padding-box,
    linear-gradient(135deg, var(--accent), var(--accent3)) border-box;

  box-shadow:
    0 18px 48px rgba(0,0,0,.52),
    0 0 0 1px rgba(255,255,255,.10) inset;
  transform: translateY(0);
  transition:
    transform .18s ease,
    box-shadow .18s ease,
    filter .18s ease;
}

button.primary::before{
  content:"";
  position:absolute;
  inset:-14px;
  z-index:-1;
  background:
    radial-gradient(40% 60% at 25% 15%, var(--cta-glow), transparent 60%),
    radial-gradient(45% 70% at 75% 90%, var(--cta-glow2), transparent 62%);
  filter: blur(10px);
  opacity: .85;
}

button.primary::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background: linear-gradient(115deg,
    transparent 0%,
    rgba(255,255,255,.26) 35%,
    transparent 62%
  );
  transform: translateX(-140%) skewX(-18deg);
  opacity: 0;
  transition: transform .55s ease, opacity .18s ease;
  mix-blend-mode: overlay;
}

button.primary:hover{
  transform: translateY(-1px);
  box-shadow:
    0 22px 60px rgba(0,0,0,.56),
    0 0 0 1px rgba(255,255,255,.12) inset,
    0 0 0 6px rgba(77,163,255,.06);
}

button.primary:hover::after{
  opacity: 1;
  transform: translateX(140%) skewX(-18deg);
}

button.primary:active{
  transform: translateY(0);
  filter: brightness(.98);
  box-shadow:
    0 14px 36px rgba(0,0,0,.50),
    0 0 0 1px rgba(255,255,255,.10) inset;
}

button.primary:focus-visible{
  outline: none;
  box-shadow:
    0 18px 48px rgba(0,0,0,.52),
    0 0 0 1px rgba(255,255,255,.10) inset,
    0 0 0 4px rgba(77,163,255,.34);
}

button.primary[disabled],
button.primary.is-disabled{
  cursor: not-allowed;
  opacity: .55;
  filter: saturate(.8);
  transform: none;
}

@media (prefers-reduced-motion: reduce){
  button.primary,
  button.primary::after{
    transition: none;
  }
  button.primary::after{
    display:none;
  }
}

/* ===========================
   Mobile-first responsive pack
   Insert at the very end
   =========================== */

@media (max-width: 600px){
  :root{
    --gap: 12px;
    --r: 16px;
    --r2: 12px;
  }

  main.app{
    width: 94vw;
    padding: 12px 0 calc(140px + env(safe-area-inset-bottom));
  }

  .header-inner{
    width: 94vw;
    padding: 12px 0;
  }

  .brand-title{ font-size: 17px; }
  .brand-sub{ font-size: 12.5px; }

  /* header controls: 2 columns */
  .header-controls{
    width: 100%;
    gap: 10px;
    justify-content: flex-start;
  }
  .field.compact{
    width: calc(50% - 5px);
    min-width: 0;
  }

  /* layout becomes single column */
  .shell{ grid-template-columns: 1fr; }

  .sidebar, .content{
    border-radius: 16px;
    padding: 12px;
  }

  .sidebar{
    position: static;
    height: auto;
    min-height: unset;
  }

  .content{
    min-height: unset;
  }

  /* inputs */
  input[type="datetime-local"],
  .text{
    font-size: 14px;
    padding: 12px 12px;
    border-radius: 14px;
  }

  .text{ padding-right: 132px; }
  .dropdown-btn{
    right: 8px;
    top: 8px;
    height: calc(100% - 16px);
    padding: 0 10px;
  }

  #zoneList.zone-list{
    max-height: 46dvh;
    min-height: 240px;
    padding-bottom: 96px; /* for bottom action bar */
  }

  .region{
    border-radius: 16px;
    padding: 12px;
  }

  .num{ font-size: 24px; }
  .timer-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  .unit{ padding: 12px 8px; }
}

@media (max-width: 480px){
  :root{
    --gap: 10px;
  }

  .brand-title{ font-size: 16px; }
  .brand-sub{ font-size: 12px; }

  .field.compact{
    width: 100%;
  }

  .header-controls{
    gap: 10px;
  }

  .chip, .ghost{
    padding: 9px 11px;
    font-size: 12px;
  }

  label{ font-size: 12.5px; }
  label.mini{ font-size: 11.5px; }

  .zone-row{ padding: 11px 11px; }
  .check{ width: 18px; height: 18px; border-radius: 6px; }

  .num{ font-size: 22px; }
  .unit .label{ font-size: 10.5px; }
}

@media (max-width: 360px){
  main.app{ width: 96vw; }

  .sidebar, .content{
    padding: 10px;
  }

  .text{ padding-right: 124px; }
  .dropdown-btn{
    padding: 0 9px;
    gap: 6px;
  }

  .btnrow{ gap: 8px; }
  .chip{ padding: 9px 10px; }

  #zoneList.zone-list{
    min-height: 220px;
    max-height: 44dvh;
    padding-bottom: 104px;
  }

  .num{ font-size: 21px; }
}

@media (max-width: 600px){
  .side-actions{
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;

    margin: 0;
    padding: 12px 14px calc(12px + env(safe-area-inset-bottom));
    background: rgba(10,10,12,.78);
    backdrop-filter: blur(14px);
    border-top: 1px solid rgba(255,255,255,.10);
    z-index: 200;
  }

  button.primary{
    width: 100%;
    min-height: 50px;
    border-radius: 16px;
  }

  .side-foot{
    margin-top: 8px;
    font-size: 11px;
  }
}

@media (hover: none) and (pointer: coarse){
  .selectdd, .dropdown{
    -webkit-overflow-scrolling: touch;
  }
  .zone-row{
    min-height: 46px;
  }
  .chip, .ghost, .selectbtn, .dropdown-btn{
    min-height: 44px;
  }
}

@media (max-width: 720px){
  .btnrow{
    flex: none;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    align-items: stretch;
  }

  .btnrow .chip{
    flex: none;
    width: 100% !important;
    height: 44px !important;
    padding: 0 12px;
    border-radius: 14px;
  }
}

@media (max-width: 360px){
  .btnrow{
    grid-template-columns: 1fr;
  }
}