/* AlpenPuls Portal 3.1.5 - modular admin center + intermediate seasons + calm realtime weather */

/* --- Admin hub under hamburger ------------------------------------------------ */
.admin-hub-menu{
  position:fixed;
  top:72px;
  right:14px;
  z-index:80;
  width:min(520px,calc(100vw - 28px));
  border:1px solid rgba(70,216,255,.20);
  border-radius:20px;
  background:linear-gradient(145deg,rgba(3,17,27,.97),rgba(4,28,43,.97));
  box-shadow:0 24px 80px rgba(0,0,0,.44),inset 0 1px rgba(255,255,255,.025);
  padding:12px;
  backdrop-filter:blur(18px);
}
.admin-hub-menu[hidden]{display:none!important}
.admin-hub-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:4px 4px 10px;
  border-bottom:1px solid rgba(255,255,255,.055);
}
.admin-hub-head>div{display:grid;gap:1px}
.admin-hub-head strong{font-size:17px;color:#f4f9fd}
.admin-hub-close{
  width:34px;height:34px;border-radius:10px;border:1px solid rgba(255,255,255,.09);
  background:rgba(255,255,255,.03);color:#cfe4f0;font-size:22px;line-height:1;cursor:pointer
}
.admin-hub-close:hover{border-color:rgba(57,216,255,.28);color:#fff}
.admin-hub-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding-top:10px}
.admin-hub-item{
  appearance:none;border:1px solid rgba(94,166,199,.15);border-radius:14px;
  background:linear-gradient(135deg,rgba(10,31,45,.78),rgba(5,20,31,.78));
  color:#dfeef6;min-height:72px;padding:10px 11px;display:flex;align-items:center;gap:10px;
  text-align:left;cursor:pointer;transition:border-color .16s ease,background .16s ease,transform .16s ease
}
.admin-hub-item:hover{border-color:rgba(57,216,255,.34);background:linear-gradient(135deg,rgba(15,50,68,.88),rgba(7,26,39,.88));transform:translateY(-1px)}
.admin-hub-item.is-primary{border-color:rgba(58,208,255,.30);background:linear-gradient(135deg,rgba(7,92,135,.38),rgba(7,29,43,.78))}
.admin-hub-icon{
  flex:0 0 34px;width:34px;height:34px;border-radius:11px;display:grid;place-items:center;
  border:1px solid rgba(57,216,255,.20);background:rgba(57,216,255,.06);color:#83e5ff;font-size:19px
}
.admin-hub-item>span:last-child{display:grid;gap:2px;min-width:0}
.admin-hub-item strong{font-size:12px;color:#f4f9fd}
.admin-hub-item small{font-size:9px;line-height:1.35;color:#7f9bad}

/* --- Modular drawer ---------------------------------------------------------- */
.admin-module-hidden{display:none!important}
.admin-drawer[data-admin-module] .drawer-head h2{font-size:23px}
.drawer-tools#platformModuleTools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}
.drawer-tools-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.platform-access-filter{display:flex;align-items:center;gap:5px;padding:3px;border:1px solid rgba(255,255,255,.07);background:rgba(0,0,0,.13);border-radius:999px}
.platform-access-filter button{appearance:none;border:0;border-radius:999px;background:transparent;color:#7895a8;font-size:9px;font-weight:800;letter-spacing:.08em;padding:7px 10px;cursor:pointer}
.platform-access-filter button.is-active{background:rgba(46,196,248,.12);color:#b8f0ff;box-shadow:inset 0 0 0 1px rgba(57,216,255,.19)}
.admin-list-item.ap-filter-hidden{display:none!important}

/* --- Weather layers: deliberately calm ------------------------------------- */
:root{
  --ap-weather-tint-opacity:0;
  --ap-weather-light-opacity:0;
  --ap-weather-cloud-opacity:0;
  --ap-weather-mist-opacity:0;
  --ap-weather-precip-opacity:0;
  --ap-weather-rain-duration:2.8s;
  --ap-weather-snow-duration:11s;
}
.scene-weather{position:fixed;inset:0;z-index:1;pointer-events:none;overflow:hidden;opacity:0;transition:opacity 1.2s ease}
.scene-weather-tint{background:linear-gradient(180deg,rgba(26,44,61,.20),rgba(8,20,30,.12));opacity:var(--ap-weather-tint-opacity)}
.scene-weather-light{
  background:radial-gradient(circle at 78% 15%,rgba(255,221,145,.34),rgba(255,221,145,.12) 13%,rgba(255,221,145,0) 31%);
  mix-blend-mode:screen;opacity:var(--ap-weather-light-opacity)
}
.scene-weather-clouds{
  background:
    radial-gradient(38% 16% at 22% 22%,rgba(230,239,246,.34),rgba(230,239,246,0) 75%),
    radial-gradient(42% 17% at 72% 24%,rgba(225,235,244,.30),rgba(225,235,244,0) 76%),
    linear-gradient(180deg,rgba(137,160,181,.13),rgba(137,160,181,0) 42%);
  opacity:var(--ap-weather-cloud-opacity)
}
.scene-weather-mist{
  background:
    radial-gradient(68% 17% at 50% 76%,rgba(237,243,248,.25),rgba(237,243,248,0) 75%),
    linear-gradient(180deg,rgba(219,228,236,.10),rgba(219,228,236,0) 55%);
  opacity:var(--ap-weather-mist-opacity)
}
.scene-weather-precip{opacity:var(--ap-weather-precip-opacity)}
.scene-weather-precip::before,.scene-weather-precip::after{content:"";position:absolute;inset:-16%;pointer-events:none;opacity:0}
body[data-ap-weather="rain"] .scene-weather-precip::before,
body[data-ap-weather="storm"] .scene-weather-precip::before{
  opacity:.58;
  background-image:linear-gradient(178deg,rgba(255,255,255,0) 0%,rgba(220,237,249,.50) 74%,rgba(255,255,255,0) 100%);
  background-size:34px 170px;
  transform:skewX(-8deg);
  animation:ap-calm-rain var(--ap-weather-rain-duration) linear infinite
}
body[data-ap-weather="rain"] .scene-weather-precip::after,
body[data-ap-weather="storm"] .scene-weather-precip::after{
  opacity:.20;
  background-image:linear-gradient(178deg,rgba(255,255,255,0) 0%,rgba(214,233,247,.42) 76%,rgba(255,255,255,0) 100%);
  background-size:52px 210px;
  transform:translateX(16px) skewX(-8deg);
  animation:ap-calm-rain calc(var(--ap-weather-rain-duration) * 1.35) linear infinite
}
body[data-ap-weather="snow"] .scene-weather-precip::before,
body[data-ap-weather="snow"] .scene-weather-precip::after{
  opacity:.66;
  background-image:radial-gradient(circle,rgba(255,255,255,.92) 0 1.5px,rgba(255,255,255,0) 2.5px);
  background-size:52px 52px;
  animation:ap-calm-snow var(--ap-weather-snow-duration) linear infinite
}
body[data-ap-weather="snow"] .scene-weather-precip::after{opacity:.34;background-size:78px 78px;animation-duration:calc(var(--ap-weather-snow-duration) * 1.35);transform:translateX(13px)}
body[data-ap-weather="neutral"] .scene-weather{opacity:0!important}
@keyframes ap-calm-rain{from{transform:translate3d(0,-90px,0) skewX(-8deg)}to{transform:translate3d(-18px,120px,0) skewX(-8deg)}}
@keyframes ap-calm-snow{from{transform:translate3d(0,-8%,0)}to{transform:translate3d(-12px,108%,0)}}

/* --- Weather control surface ------------------------------------------------- */
.weather-control-panel{
  margin:0 12px 14px;padding:14px;border:1px solid rgba(57,216,255,.15);border-radius:18px;
  background:linear-gradient(130deg,rgba(5,28,44,.86),rgba(5,18,28,.82));box-shadow:inset 0 1px rgba(255,255,255,.025)
}
.weather-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.055)}
.weather-panel-head h3{margin:2px 0 3px;font-size:19px;color:#f4f9fd}
.weather-panel-head p{margin:0;max-width:720px;font-size:10px;line-height:1.45;color:#7994a7}
.weather-state-pill{flex:0 0 auto;border-radius:999px;padding:5px 9px;font-size:9px;font-weight:900;letter-spacing:.09em;color:#859baa;border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.035)}
.weather-state-pill.is-on{color:#80e8b5;border-color:rgba(64,217,154,.25);background:rgba(64,217,154,.07)}
.weather-live-card{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;padding:11px 12px;border:1px solid rgba(57,216,255,.11);border-radius:14px;background:rgba(3,15,24,.48)}
.weather-live-card>div{display:grid;gap:2px}
.weather-live-card strong{font-size:14px;color:#f2f8fc}
.weather-live-card small{font-size:9px;color:#7893a5}
.weather-panel-grid{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);gap:12px}
.weather-card{padding:12px;border:1px solid rgba(70,168,205,.12);border-radius:15px;background:rgba(3,14,22,.42)}
.weather-enable-row{position:relative;display:flex;align-items:center;gap:10px;cursor:pointer;margin-bottom:13px}
.weather-enable-row>input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.weather-enable-row>span:last-child{display:grid;gap:1px}
.weather-enable-row strong{font-size:13px;color:#eef8fc}.weather-enable-row small{font-size:9px;color:#7893a5}
.weather-enable-row>input:checked + .animation-switch{background:rgba(35,176,232,.28);border-color:rgba(67,208,255,.38)}
.weather-enable-row>input:checked + .animation-switch::after{transform:translateX(15px);background:#81e7ff;box-shadow:0 0 8px rgba(129,231,255,.55),0 1px 4px rgba(0,0,0,.34)}
.weather-field{display:grid;gap:5px;margin-top:10px}.weather-field>span{font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:#7f9bad}
.weather-field input,.weather-field select{width:100%;min-height:38px;border-radius:11px;border:1px solid rgba(118,164,185,.20);background:rgba(3,13,21,.64);color:#eaf6fc;padding:8px 10px;outline:none}
.weather-field input:focus,.weather-field select:focus{border-color:rgba(57,216,255,.38);box-shadow:0 0 0 1px rgba(57,216,255,.15)}
.weather-location-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}
.weather-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.weather-card .range-control{margin-top:10px}
.weather-check{display:flex;align-items:center;gap:8px;margin-top:12px;color:#c8dbe6;font-size:10px}
.weather-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
.weather-note{margin:10px 2px 0;font-size:9px;line-height:1.45;color:#7893a5}

@media(max-width:760px){
  .admin-hub-menu{top:62px;right:8px;width:calc(100vw - 16px);padding:9px;border-radius:16px}
  .admin-hub-grid{grid-template-columns:1fr;max-height:min(70vh,560px);overflow:auto}
  .admin-hub-item{min-height:60px;padding:9px}
  .weather-panel-grid{grid-template-columns:1fr}
  .weather-control-panel{margin:0 8px 10px;padding:10px;border-radius:14px}
  .weather-live-card{align-items:flex-start;flex-direction:column}
  .weather-two{grid-template-columns:1fr}
  .weather-location-row{grid-template-columns:1fr}
  .weather-actions{justify-content:stretch;flex-wrap:wrap}.weather-actions>*{flex:1 1 160px}
  .platform-access-filter{width:100%;justify-content:space-between}.platform-access-filter button{flex:1}
  body[data-ap-weather="rain"] .scene-weather-precip::before,body[data-ap-weather="storm"] .scene-weather-precip::before{opacity:.38}
  body[data-ap-weather="snow"] .scene-weather-precip::before{opacity:.46}
}

@media(prefers-reduced-motion:reduce){
  .scene-weather-precip::before,.scene-weather-precip::after{animation:none!important}
}

/* V3.1.5 - intermediate seasons + clearer realtime controls */
.season-image-grid-eight{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.season-image-card.is-interseason{
  border-color:rgba(235,178,76,.20);
  background:linear-gradient(150deg,rgba(47,35,16,.42),rgba(4,18,28,.48));
}
.season-image-card.is-interseason div strong::after{
  content:" · ZWISCHEN";
  margin-left:4px;
  font-size:7px;
  letter-spacing:.08em;
  color:#d9ad61;
  font-weight:800;
}
#seasonSettings.is-realtime .season-speed-group{
  opacity:.46;
  filter:saturate(.65);
}
#seasonSettings.is-realtime .season-speed-group input[type="range"]{
  cursor:not-allowed;
}
#seasonSettings.is-realtime .season-speed-group .layout-control-title small{
  color:#74c9e9;
}
#seasonSettings.is-realtime #seasonNext{
  opacity:.42;
}

#weatherRefreshNow.is-loading{
  opacity:.72;
  cursor:wait;
}
#weatherRefreshNow.is-success{
  border-color:rgba(64,217,154,.34);
  color:#8ff0bd;
}

@media (max-width:1050px){
  .season-image-grid-eight{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:620px){
  .season-image-grid-eight{grid-template-columns:1fr}
}
