/* ZiCabin v0.7.4 — visual-shell refinement and stable dashboard editor. */
/* The gray square around the genuine ZiCabin logo remains a brand element. */
:root{--zc-wave:color-mix(in srgb,var(--zc-accent) 23%,transparent)}
.stage{min-width:0}
/* Floating top bar, like the supplied reference: a light glass ribbon with a gently curved wave. */
.top{
  isolation:isolate;overflow:hidden;
  position:sticky;top:12px;z-index:8;
  margin:12px clamp(14px,2vw,30px) 0;
  min-height:66px;padding:12px clamp(16px,2vw,28px);
  background:color-mix(in srgb,var(--zc-surface) 88%,transparent);
  border:1px solid color-mix(in srgb,var(--zc-accent) 13%,var(--zc-border));
  border-radius:20px;
  box-shadow:0 9px 32px #29317412,0 2px 5px #29317405;
  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
}
.top::before{
  content:'';position:absolute;pointer-events:none;z-index:-1;
  top:-95px;right:12%;width:64%;height:158px;
  border-radius:12% 22% 60% 70% / 24% 26% 85% 95%;
  background:linear-gradient(110deg,transparent 2%,color-mix(in srgb,var(--zc-accent) 16%,transparent) 43%,color-mix(in srgb,var(--zc-accent) 7%,transparent) 89%,transparent);
  transform:rotate(-5deg);
  opacity:1;
}
.top::after{
  content:'';position:absolute;pointer-events:none;z-index:-1;
  left:4%;bottom:-85px;width:50%;height:130px;
  background:radial-gradient(ellipse at 50% 15%,color-mix(in srgb,var(--zc-accent) 10%,transparent),transparent 70%);
  border-radius:50%;
}
.top-heading{display:flex;flex-direction:column;gap:2px;position:relative}
.top h1{font-size:18px;line-height:1.3;margin:0;color:var(--zc-ink)}
.top .eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:800;color:var(--zc-accent-dark)}
.top-right{position:relative;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.top-right .pill{box-shadow:none}
/* Rich but restrained lower-right wave; not a hard, flat navy strip. */
.side{
  position:sticky;top:0;overflow:hidden;isolation:isolate;
  background:linear-gradient(172deg,var(--zc-side) 0%,color-mix(in srgb,var(--zc-side) 92%,var(--zc-side-decor)) 58%,var(--zc-side) 100%);
  border-left:1px solid #ffffff18;
}
.side::before{content:'';position:absolute;pointer-events:none;z-index:-1;top:-115px;right:-72px;width:320px;height:290px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--zc-side-decor) 28%,transparent),transparent 71%)}
.side::after{
  content:'';position:absolute;pointer-events:none;z-index:-1;
  bottom:-123px;left:-108px;width:430px;height:400px;
  background:linear-gradient(144deg,color-mix(in srgb,var(--zc-side-decor) 85%,var(--zc-side)) 4%,color-mix(in srgb,var(--zc-side-decor) 45%,var(--zc-side)) 48%,transparent 90%);
  border-radius:67% 37% 0 0 / 76% 54% 0 0;
  transform:rotate(-19deg);opacity:.72;
}
.side .brand{position:relative;z-index:1;margin:0 1px 16px;padding:17px 11px 22px;border-bottom:1px solid #ffffff32}
.side .brand-logo{border:4px solid #bfc0c5;border-radius:5px;box-shadow:0 8px 20px #0002;overflow:hidden}
.side .brand-logo img{display:block;width:100%;height:100%;object-fit:contain}
.side .brand-desc b{color:#fff;font-weight:800}
.side .brand-desc small{color:#bac5e0}
.side .side-group,.side nav,.side .side-bottom{position:relative;z-index:1}
.side .nav{transition:background .18s,transform .18s;border-radius:12px}
.side .nav.active{background:linear-gradient(103deg,var(--zc-accent-dark),var(--zc-accent));box-shadow:0 7px 20px color-mix(in srgb,var(--zc-accent) 32%,transparent)}
.side .side-bottom{
 margin-top:auto;padding:18px 13px 2px;
 border-top:1px solid #ffffff2b;
 background:linear-gradient(120deg,#ffffff10,#ffffff05);
 border-radius:15px 15px 10px 10px;
 backdrop-filter:blur(5px);
}
/* Never squeeze restored widget dimensions into single 1/12-column slivers. */
.zc-widgets{grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-flow:row dense;align-items:stretch;min-width:0}
.zc-widgets>.zc-widget{min-width:0;max-width:100%;overflow:hidden}
.zc-widget *{min-width:0}
.zc-custom-drawer{overscroll-behavior:contain;scroll-behavior:auto;overflow-y:auto;scrollbar-gutter:stable;overflow-anchor:none;}
.zc-custom-drawer button,.zc-custom-drawer select,.zc-custom-drawer input{scroll-margin:14px}
/* Keep selected content in view when opening the drawer, but don't cause jumps on updates. */
@media(max-width:1180px){.zc-widgets>.zc-widget{grid-column:span 6 / span 6 !important}}
@media(max-width:790px){.top{top:0;margin:5px 8px 0;border-radius:13px;padding:10px 14px}.side{position:relative}.zc-widgets>.zc-widget{grid-column:span 12 / span 12 !important}}
@media(max-width:470px){.top{border-radius:12px}.top h1{font-size:16px}}
