/* Sticky save bar · the kit rules for this component, quoted from phase-2/kit (kit v3) by phase-4/src/build_pack.py.
   Tokens come from ../../styles.css. Build it as: a composed component. */
/* base.css */
.k-savebar{position:sticky;bottom:0;z-index:calc(var(--z-sticky) * 2);display:flex;align-items:center;gap:var(--s-3);margin-top:var(--s-6);padding:var(--s-3) var(--s-4);background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:var(--r-card);box-shadow:var(--e-pop)}
/* base.css */
.k-savebar .r{margin-left:auto;display:flex;gap:var(--s-2)}
/* base.css */
.k-savebar .k-saved, .k-savebar .k-dirty, .k-savebar .k-err{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--text-small)}
/* base.css */
.k-savebar .k-saved{color:hsl(var(--muted-foreground))}
/* base.css */
.k-savebar .k-dirty{color:hsl(var(--foreground));font-weight:var(--w-medium)}
/* base.css */
.k-savebar .k-err{color:hsl(var(--destructive))}
/* base.css */
.k-savebar .k-dirty, .k-savebar .k-err, .k-savebar.is-dirty .k-saved, .k-savebar.is-error .k-saved, .k-savebar.is-error .k-dirty{display:none}
/* base.css */
.k-savebar.is-dirty .k-dirty, .k-savebar.is-error .k-err{display:inline-flex}
/* base.css */
.kit-m .k-savebar{bottom:var(--tabbar-h);flex-wrap:wrap;margin:var(--s-6) calc(var(--s-4) * -1) 0;padding:var(--s-3) var(--s-4);border-width:1px 0 0;border-radius:0;box-shadow:none;background:hsl(var(--background)/.96);backdrop-filter:blur(var(--actbar-blur))}
/* base.css */
.kit-m .k-savebar .r{width:100%;margin-left:0}
/* base.css */
.kit-m .k-savebar .r .btn{flex:1;height:var(--control-h-m-lg);font-size:var(--text-btn-lg)}
/* families/form-controls/family.css */
.fc-savebar{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-6);border-top:1px solid hsl(var(--border));background:hsl(var(--background)/.94);backdrop-filter:blur(var(--actbar-blur))}
/* families/form-controls/family.css */
.fc-savebar .fc-dirty{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--text-small);color:hsl(var(--muted-foreground))}
/* families/form-controls/family.css */
.fc-savebar .fc-dirty i{width:6px;height:6px;border-radius:50%;background:hsl(var(--warning))}
/* families/form-controls/family.css */
.fc-savebar .r{margin-left:auto;display:flex;gap:var(--s-2)}
